我正在开发一个android应用程序,它有一个Mpesa支付模块。我已经能够在媒体: STKPush上生成本教程所给出的https://medium.com/@lentimo/m-pesa-integration-on-android-part-2-75430ccda2fe。我的目标是能够确定在接收到STKPush之后,客户是否会将事务处理完成。因此,我打算使用查询请求API。要在这里发出请求,需要将checkoutRequestId作为参数之一。因此,我的问题是,如何从代码中动态引用checkoutRequestId?有没有人知道在android环境中属于Lipa查询请求API的开源代码?最后,是否有更简单的方法来达到上述目标?
下面是我想要参考的内容:HTTP/1.1 200 OK Cache-Control: no-store Connection: keep-alive Content-Length: 314 Content-Type: application/json;charset=UTF-8 Date: Tue, 10 Mar 2020 18:25:08 GMT { "MerchantRequestID": "7041-3944257-1", **"CheckoutRequestID": "ws_CO_100320202125091065",** "ResponseCode": "0", "ResponseDescription": "Success. Request accepted for processing", "CustomerMessage": "Success. Request accepted for processing" }
我在沙箱环境中操作。
提前谢谢。
发布于 2020-04-09 12:33:25
当您成功地发出请求时,在onResponse块中,解析json响应并提取CheckoutRequestID。保持对它的引用,然后在进行状态查询时,可以根据需要使用它。
mApiClient.mpesaService().sendPush(stkPush).enqueue(new Callback<STKPush>() {
@Override
public void onResponse(@NonNull Call<STKPush> call, @NonNull Response<STKPush> response) {
try {
if (response.isSuccessful()) {
//Parse JSON response here to extract CheckoutRequestID
} else {
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onFailure(@NonNull Call<STKPush> call, @NonNull Throwable t) {
//handle error
}
});与mpesa api文档一样,接受请求响应的示例如下所示
{
"Body":{
"stkCallback":{
"MerchantRequestID":"19465-780693-1",
"CheckoutRequestID":"ws_CO_27072017154747416",
"ResultCode":0,
"ResultDesc":"The service request is processed successfully.",
"CallbackMetadata":{
"Item":[
{
"Name":"Amount",
"Value":1
},
{
"Name":"MpesaReceiptNumber",
"Value":"LGR7OWQX0R"
},
{
"Name":"Balance"
},
{
"Name":"TransactionDate",
"Value":20170727154800
},
{
"Name":"PhoneNumber",
"Value":254721566839
}
]
}
}
}
}https://stackoverflow.com/questions/60623493
复制相似问题