【发布时间】:2021-03-24 20:52:07
【问题描述】:
我正在尝试制作一个应用程序,可以使用 Safaricom 的“Lipa Na M-Pesa”(肯尼亚的东西)向 PayBill 号码发送付款。调用是对 URL 的 POST 请求:
https://sandbox.safaricom.co.ke/mpesa/stkpush/v1/processrequest
带有标题:
{
'Host': 'sandbox.safaricom.co.ke',
'Authorization': 'Bearer ${await mpesaAccessToken}',
'Content-Type': 'application/json',
}
和身体:
{
"BusinessShortCode": "$businessShortCode",
"Password": "${generateLnmPassword(timeStamp)}",
"Timestamp": "$timeStamp",
"TransactionType": "CustomerPayBillOnline",
"Amount": "10",
"PartyA": "$userPhoneNumber",
"PartyB": "$businessShortCode",
"PhoneNumber": "$userPhoneNumber",
"CallBackURL": "?????????????????????????????",
"AccountReference": "account",
"TransactionDesc": "test",
}
我已收到访问令牌、生成密码并成功拨打电话,但 CallBackURL 除外……M-Pesa 文档这样描述他们的回调:
CallBackURL 这是您希望传递事务结果的端点。注册 URL API 回调的规则相同。
所有来自事务性请求的 API 回调都是 POST 请求,不要指望 GET 请求作为回调。此外,数据没有格式化为 application/x-www-form-urlencoded 格式,它是 application/json,所以不要指望您的语言中通常的 POST 字段/变量中的数据,直接从传入的输入中读取结果流。
(更多信息在这里,但您可能需要登录:https://developer.safaricom.co.ke/get-started 参见“Lipa na M-Pesa”)
我的应用托管在 Firebase Cloud Firestore 上。有什么方法可以与他们一起创建一个回调 URL,将他们的回调作为 Firestore 集合中的文档接收?...
或者这是不可能的,因为他们需要授权令牌和其他东西......而且我无法影响 M-Pesa 将发送的标头和正文?
(顺便说一句,我在 Flutter/Dart 中编码,所以请不要用 Javascript 或任何东西回答!我会一无所知...:p Flutter/Dart 或纯文本都可以。谢谢!)
【问题讨论】:
-
你在用颤振吗?
标签: firebase google-cloud-firestore callbackurl mpesa