gpt4 book ai didi

firebase - 如何使用 Firebase Cloud Firestore 创建 M-Pesa 回调 URL?

转载 作者:行者123 更新时间:2023-12-04 08:25:24 25 4
gpt4 key购买 nike

我正在尝试制作一个可以使用 Safaricom 的“Lipa Na M-Pesa”(肯尼亚的东西)向 PayBill 号码发送付款的应用程序。电话是 POST请求网址:

https://sandbox.safaricom.co.ke/mpesa/stkpush/v1/processrequest
带标题:
{
'Host': 'sandbox.safaricom.co.ke',
'Authorization': 'Bearer ${await mpesaAccessToken}',
'Content-Type': 'application/json',
}
与 body :
{
"BusinessShortCode": "$businessShortCode",
"Password": "${generateLnmPassword(timeStamp)}",
"Timestamp": "$timeStamp",
"TransactionType": "CustomerPayBillOnline",
"Amount": "10",
"PartyA": "$userPhoneNumber",
"PartyB": "$businessShortCode",
"PhoneNumber": "$userPhoneNumber",
"CallBackURL": "?????????????????????????????",
"AccountReference": "account",
"TransactionDesc": "test",
}
我收到了一个访问 token ,生成了一个密码并成功调用了电话,除了那个 CallBackURL 事情...... M-Pesa 文档这样描述他们的回调:

CallBackURLThis is the endpoint where you want the results of the transaction delivered. Same rules for Register URL API callbacks apply.


all API callbacks from transactional requests are POST requests, do not expect GET requests for callbacks. Also, the data is not formatted into application/x-www-form-urlencoded format, it is application/json, so do not expect the data in the usual POST fields/variables of your language, read the results directly from the incoming input stream.


(这里有更多信息,但您可能需要登录: https://developer.safaricom.co.ke/get-started 参见“Lipa na M-Pesa”)
我的应用托管在 Firebase Cloud Firestore 上。有什么方法可以与他们一起创建一个回调 URL,将他们的回调作为 Firestore 集合中的文档接收?...
或者这是不可能的,因为他们需要授权 token 和东西才能这样做......而且我无法影响 M-Pesa 将发送的标题和正文?
(顺便说一句,我在 Flutter/Dart 中编码,所以请不要用 Javascript 或任何东西回答!我会一无所知...:p Flutter/Dart 或纯文本都可以。谢谢!)

最佳答案

Is there any way I can create a callback URL with them that willreceive their callback as a document in a Firestore collection?...


在 Firebase 生态系统中,最常见的方法是编写 HTTPS Cloud Function将由 Safaricom 服务调用。
在 Cloud Function 中,您将能够根据 POST 请求的内容更新 Firestore 文档。
就像是:
exports.safaricom = functions.https.onRequest((req, res) => {
// Get the header and body through the req variable
// See https://firebase.google.com/docs/functions/http-events#read_values_from_the_request

return admin.firestore().collection('...').doc('...').update({ foo: bar })
.then(() => {
res.status(200).send("OK");
})
.catch(error => {
// ...
// See https://www.youtube.com/watch?v=7IkUgCLr5oA&t=1s&list=PLl-K7zZEsYLkPZHe41m4jfAxUi0JjLgSM&index=3
})

});

我确实注意到您要求我们不要“用 Javascript 或任何东西回答”而是在 Flutter/Dart 中,但我认为您无法在 Flutter 中实现它:您需要在您完全控制的环境中实现这个 webhook并公开一个 API 端点,例如您自己的服务器或云函数。
Cloud Functions 乍一看似乎很复杂,但实现 HTTPS Cloud Functions 并没有那么复杂。我建议你阅读 Get Started documentation并观看 Firebase video series 中关于“JavaScript Promises”的三个视频,如果您遇到任何问题,请在 SO 上提出新问题。

关于firebase - 如何使用 Firebase Cloud Firestore 创建 M-Pesa 回调 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65285239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com