221 lines
6.1 KiB
Markdown
221 lines
6.1 KiB
Markdown
# MPESA API Responses
|
|
This file includes instructions and sample code for processing callback data sent from Safaricom. It includes sample responses from Safaricom and how to process them accordingly.
|
|
|
|
## STK Response Data
|
|
### Sample Response
|
|
```json
|
|
{
|
|
"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
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Sample Callback Function
|
|
```php
|
|
function mpesa_stk_callback($response)
|
|
{
|
|
$data = $response["Body"]["stkCallback"];
|
|
|
|
$MerchantRequestID = $data["MerchantRequestID"];
|
|
$CheckoutRequestID = $data["CheckoutRequestID"],
|
|
$ResultCode = $data["ResultCode"],
|
|
$ResultDesc = $data["ResultDesc"],
|
|
$CallbackMetadata = $data["CallbackMetadata"];
|
|
|
|
$Amount = $CallbackMetadata["Item"][0]["Value"];
|
|
$MpesaReceiptNumber = $CallbackMetadata["Item"][1]["Value"];
|
|
$Balance = $CallbackMetadata["Item"][2]["Value"];
|
|
$TransactionDate = $CallbackMetadata["Item"][3]["Value"];
|
|
$PhoneNumber = $CallbackMetadata["Item"][4]["Value"];
|
|
|
|
// Do something with the variables above then return true or false
|
|
|
|
return true
|
|
}
|
|
```
|
|
|
|
## C2B Response Data
|
|
### Sample Response
|
|
```json
|
|
{
|
|
"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
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Sample Callback Function
|
|
```php
|
|
function mpesa_c2b_callback($response)
|
|
{
|
|
$data = $response["Body"]["stkCallback"];
|
|
|
|
$MerchantRequestID = $data["MerchantRequestID"];
|
|
$CheckoutRequestID = $data["CheckoutRequestID"],
|
|
$ResultCode = $data["ResultCode"],
|
|
$ResultDesc = $data["ResultDesc"],
|
|
$CallbackMetadata = $data["CallbackMetadata"];
|
|
|
|
$Amount = $CallbackMetadata["Item"][0]["Value"];
|
|
$MpesaReceiptNumber = $CallbackMetadata["Item"][0]["Value"];
|
|
$Balance = $CallbackMetadata["Item"][0]["Value"];
|
|
$TransactionDate = $CallbackMetadata["Item"][0]["Value"];
|
|
$PhoneNumber = $CallbackMetadata["Item"][0]["Value"];
|
|
|
|
// Do something with the variables above then return true or false
|
|
|
|
return true
|
|
}
|
|
```
|
|
|
|
## B2C Response Data
|
|
### Sample Response
|
|
```json
|
|
{
|
|
"Result":
|
|
{
|
|
"ResultType":0,
|
|
"ResultCode":0,
|
|
"ResultDesc":"The service request has been accepted successfully.",
|
|
"OriginatorConversationID":"19455-424535-1",
|
|
"ConversationID":"AG_20170717_00006be9c8b5cc46abb6",
|
|
"TransactionID":"LGH3197RIB",
|
|
"ResultParameters":
|
|
{
|
|
"ResultParameter":
|
|
[
|
|
{
|
|
"Key":"TransactionReceipt",
|
|
"Value":"LGH3197RIB"
|
|
},
|
|
{
|
|
"Key":"TransactionAmount",
|
|
"Value":8000
|
|
},
|
|
{
|
|
"Key":"B2CWorkingAccountAvailableFunds",
|
|
"Value":150000
|
|
},
|
|
{
|
|
"Key":"B2CUtilityAccountAvailableFunds",
|
|
"Value":133568
|
|
},
|
|
{
|
|
"Key":"TransactionCompletedDateTime",
|
|
"Value":"17.07.2017 10:54:57"
|
|
},
|
|
{
|
|
"Key":"ReceiverPartyPublicName",
|
|
"Value":"254708374149 - John Doe"
|
|
},
|
|
{
|
|
"Key":"B2CChargesPaidAccountAvailableFunds",
|
|
"Value":0
|
|
},
|
|
{
|
|
"Key":"B2CRecipientIsRegisteredCustomer",
|
|
"Value":"Y"
|
|
}
|
|
]
|
|
},
|
|
"ReferenceData":{
|
|
"ReferenceItem":{
|
|
"Key":"QueueTimeoutURL",
|
|
"Value":"https://internalsandbox.safaricom.co.ke/mpesa/b2cresults/v1/submit"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Sample Callback Function
|
|
```php
|
|
function mpesa_b2c_callback($response)
|
|
{
|
|
$data = $response["Result"];
|
|
|
|
$ResultType = $data["ResultType"];
|
|
$ResultCode = $data["ResultCode"];
|
|
$ResultDesc = $data["ResultDesc"];
|
|
$OriginatorConversationID = $data["OriginatorConversationID"];
|
|
$ConversationID = $data["ConversationID"];
|
|
$TransactionID = $data["TransactionID"];
|
|
$ResultParameters = $data["ResultParameters"]["ResultParameter"];
|
|
$QueueTimeoutURL = $data["ReferenceData"]["ReferenceItem"][0]["Value"];
|
|
|
|
$TransactionReceipt = $ResultParameters[0]["Value"];
|
|
$TransactionAmount = $ResultParameters[1]["Value"];
|
|
$B2CWorkingAccountAvailableFunds = $ResultParameters[2]["Value"];
|
|
$B2CUtilityAccountAvailableFunds = $ResultParameters[3]["Value"];
|
|
$TransactionCompletedDateTime = $ResultParameters[4]["Value"];
|
|
$ReceiverPartyPublicName = $ResultParameters[5]["Value"];
|
|
$B2CChargesPaidAccountAvailableFunds = $ResultParameters[6]["Value"];
|
|
$B2CRecipientIsRegisteredCustomer = $ResultParameters[7]["Value"];
|
|
|
|
// Do something with the variables above then return true or false
|
|
|
|
return true
|
|
}
|
|
```
|