Как вы можете динамически ссылаться на checkoutRequestId из запроса mpesa express API daraja - PullRequest
0 голосов
/ 10 марта 2020

Я работаю над приложением android с модулем оплаты Mpesa. Я уже смог сгенерировать STKPu sh под руководством этого учебного пособия на среде: https://medium.com/@lentimo / m-pesa -gration-on- android -part-2-75430ccda2fe . Моя цель - определить, обрабатывает ли клиент после получения STKPu sh транзакцию до ее завершения. Таким образом, я намерен использовать API запросов Lipa Na M-Pesa Query. Чтобы сделать запрос здесь, вам потребуется checkoutRequestId в качестве одного из параметров. Таким образом, мой вопрос, как вы можете динамически ссылаться на checkoutRequestId из кода? Кто-нибудь знает об открытом исходном коде, касающемся Lipa Na M-Pesa Query Request API в среде android java? И, наконец, есть ли более простой способ достижения вышеупомянутой цели?

Ниже приведено то, на что я хочу сослаться: 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" }

Я работаю в среде песочницы.

Заранее спасибо.

1 Ответ

0 голосов
/ 09 апреля 2020

Когда вы делаете успешный запрос, в блоке 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 docs пример принятого ответа на запрос выглядит следующим образом

  {
    "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
            }
          ]
        }
      }
    }
  }
...