我正在尝试制作一个可以使用 Safaricom 的“Lipa Na M-Pesa”(肯尼亚的东西)向 PayBill 号码发送付款的应用程序。该调用是POST
对 URL 的请求:
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 将发送的标题和正文?
(PS 顺便说一句,我在 Flutter/Dart 中编码,所以请不要用 Javascript 或任何东西回答!我会一无所知...:p Flutter/Dart 或纯文本都可以。谢谢!)