首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何动态引用来自daraja API的mpesa快速请求的checkoutRequestId?

如何动态引用来自daraja API的mpesa快速请求的checkoutRequestId?
EN

Stack Overflow用户
提问于 2020-03-10 18:04:27
回答 1查看 409关注 0票数 0

我正在开发一个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" }

我在沙箱环境中操作。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-09 12:33:25

当您成功地发出请求时,在onResponse块中,解析json响应并提取CheckoutRequestID。保持对它的引用,然后在进行状态查询时,可以根据需要使用它。

代码语言:javascript
复制
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文档一样,接受请求响应的示例如下所示

代码语言:javascript
复制
  {
    "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
            }
          ]
        }
      }
    }
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60623493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档