How do I asscociate a payment transaction with a user while consuming the MPESA Express (STKPUSH) api v1

Viewed 34

I am using the MPESA-Express also called the STK push api V1 to receive payments from my clients. To get the customer paying, I am looking for the PhoneNumber value in the results body of the response if the payment is successful. This way I can associate a payment with a customer. However now that we'll be having data minimisation on the MPesa api, the PhoneNumber will not be displayed fully, and I am facing a challenge of how to associate a payment transaction with a client. I have tried setting the AcccountReference in the request as shown below, but I can't get this AccountReference back in the response results body. I was thinking of setting a unique AcccountReference for each customer.

The data I am sending to the endpoint https://sandbox.safaricom.co.ke/mpesa/stkpush/v1/processrequest

 $postData = json_encode([
                "BusinessShortCode" => Yii::$app->params['businessShortCode'],
                "Password" => $this->createMpesaRequestsPassword($timestamp),
                "Timestamp" => $timestamp,
                "TransactionType" => $transactionType,
                "Amount" => $amount,
                "PartyA" => $phoneNumber,
                "PartyB" => Yii::$app->params['businessShortCode'],
                "PhoneNumber" => $phoneNumber,
                "CallBackURL" => $callBackUrl,
                "AccountReference" => $phoneNumber,
                "TransactionDesc" => $transactionDesc
            ]);

On my callback url I get this response:

{
    "Body": {
        "stkCallback": {
            "MerchantRequestID": "9183-42212949-1",
            "CheckoutRequestID": "ws_CO_23072022133552132714385056",
            "ResultCode": 0,
            "ResultDesc": "The service request is processed successfully.",
            "CallbackMetadata": {
                "Item": [
                    {
                        "Name": "Amount",
                        "Value": 1
                    },
                    {
                        "Name": "MpesaReceiptNumber",
                        "Value": "QGN2XSH6MQ"
                    },
                    {
                        "Name": "Balance"
                    },
                    {
                        "Name": "TransactionDate",
                        "Value": 20220723133617
                    },
                    {
                        "Name": "PhoneNumber",
                        "Value": 254711111111
                    }
                ]
            }
        }
    }
}

How do know which transaction belongs to which user?

0 Answers
Related