B2C

 

Developer Guide


This guide specifies real time B2C web service aspects of the interfaces which include:

  • Message Flow Description
  • Data Type Definition
  • Web Service Interface Definition
  • Transaction Types Description
  • WSDL
  • Examples

API Framework Overview


This document details the interface specification for a real time M-Pesa transaction API delivered within the MPesa Core API Framework. The Core API defines an abstract model for API requests which includes 4 distinct parties to API operations, as well as a generic set of API operation parameters.

Initiators are the organization or entity requesting that an API operation or transaction is performed.

Caller is the actual piece of software which communicates with the MPesa Core API web service.

Primary Party is (typically) the debit party within an existing MPesa financial transaction.

Receiver Party is correspondingly the credit party in an MPesa financial transaction

Message Flow Description


B2C high-level transaction flow diagram

B2C high-level transaction flow diagram

 

Data Type Definition


IdentityType enumeration

Enumeration Description
1000 Customer
2000 SPOperator
3000 OrganizationOperator
5000 Organization
6000 Till
8000 SP

 

IdentifierType enumeration

Enumeration Description
1 MSISDN
2 TillNumber
3 SPShortCode
4 OrganizationShortCode
5 IdentityID
6 O2CLink
9 SPOperatorCode
10 POSNumber
11 OrganizationOperatorUserName
12 OrganizationOperatorCode
13 VoucherCode

 

ParameterType structure

Element name Element type Optional Description
Key xsd:string No It indicates a parameter name.
Value xsd:string No It indicates a parameter value.

 

Parameters structure

Element name Element type Optional Description
Parameter ParameterType[1..unbounded] No It is used to carry specific parameters for specific transaction or business operation.

 

ReferenceData structure

Element name Element type Optional Description
ReferenceItem ParameterType[1..unbounded] No It is used carry some reference data that MM need not analyze but need to record it into transaction log..

 

Transaction structure

 

Element name Element type Optional Description
CommandID xsd:string No The unique identifier of transaction/business operation. Max length is 64.eg
·         SalaryPayment
·         BusinessPayment
·         BusinessPaymentWithWithdrawalChargePaid
·         SalaryPaymentWithWithdrawalChargePaid
·         PromotionPayment
·         TransferFromBankToCustomer
LanguageCode xsd:string Yes It indicates language. It’s reserved.
OriginatorConversationID xsd:string No The unique identifier of the request message generated by third party. It is used to identify a request between the third party and MM. Max length is 128.
Field should start with the B2C organisation short and name of organisation. Eg.
232323_Org_XXXXXX
XXXXX must be unique for every transaction.
ConversationID xsd:string Yes The unique identifier generated by MM for a previous request message. It is used to support communication multi-times between the third party and MM for one operation/transaction.
Remark xsd:string Yes The remark information about this operation. Max length is 255
EncryptedParameters xsd:string Yes It is used to carry the value for the element Parameters which are encrypted.
The value for this parameter should be a CDATA and encode with base64
Parameters Parameters Yes It is used to carry specific parameters for specific transaction or business operation.
If the element EncryptedParameters presents, this parameter should not present.
ReferenceData ReferenceData Yes It is used carry some reference data that MM need not analyze but need to record it into transaction log.
Timestamp xsd:string No The timestamp generated by the third party.

 

Caller structure

Element name Element type Optional Description
CallerType xsd:integer No Indicates the type of the caller:
2-APICaller
3-Other(Reserved)
ThirdPartyID xsd:string No The unique identifier of a third party system defined in MM. It indicates the third party which initiates the request. Max length is 20
Password xsd:string Yes This security credential of the ThirdPartyID defined in MM. If the password feature for third party is used in MM, then this parameter must be presented in the request message.
CheckSum xsd:string Yes Currently it is unused. It is reserved for API security.
ResultURL xsd:string Yes It indicates the destination URL where Broker should send the result message to.

 

Initiator structure

Element name Element type Optional Description
IdentifierType IdentifierType No It indicates the identifier type of the initiator. The value of this parameter must be a valid identifier type supported by MM.
Identifier xsd:string No It indicates the identifier of the initiator. Its value must match the inputted value of the parameter IdentifierType.
SecurityCredential xsd:string No It indicates the security credential of the initiator. Its value must match the inputted value of the parameter IdentifierType.
ShortCode xsd:string Yes When the initiator is an organization operator, this parameter must be present in the request to indicate which organization the operator belongs to.
If the initiator is not an organization operator, this parameter should not be present.

 

N/B: Password Encryption

The Caller will be required to confirm its authority to act on behalf of the Initiator (i.e. a specific M-PESA organisation) by presenting the user name and password for the Initiator, the latter encrypted with the public key from an X509 certificate issued to the Initiator specifically for this purpose. The following algorithm must be followed by the Initiator to encrypt passwords:

  • Write the unencrypted password value
  • Then, encrypt the value with the public portion of the password key certificate.  Use the RSA algorithm, and use PKCS #1.5 padding (not OAEP), and add the result to the encrypted stream.
  • Convert the resulting encrypted byte array into a string using base64 encoding.  Present this base64 encoded string in the API request as the initiator SecurityCredential value

PrimaryParty structure

Element name Element type Optional Description
IdentifierType IdentifierType No It indicates the identifier type of the primary party. The value of this parameter must be a valid identifier type supported by MM and must match the inputted value of the parameter IdentityType.
Identifier xsd:string No It indicates a parameter value.
ShortCode xsd:string Yes It is reserved

 

ReceiverParty structure

Element name Element type Optional Description
IdentifierType IdentifierType No It indicates the identifier type of the recipient party. The value of this parameter must be a valid identifier type supported by MM.
Identifier xsd:string No It indicates the identifier of the recipient party. Its value must match the inputted value of the parameter IdentifierType.
ShortCode xsd:string Yes When the receiver party is an organization operator or a Till, this parameter must be present in the request to indicate which organization the receiver party belongs to.
If the receiver party is not an organization operator or a Till, this parameter should not be present.

 

AccessDevice structure

Element name Element type Optional Description
IdentifierType IdentifierType No It indicates the identifier type of the access device.
Identifier xsd:string No It indicates the identifier of the access device. Its value must match the inputted value of parameter IdentifierType

 

Identity structure

Element name Element type Optional Description
Caller Caller No It indicates the third party which initiates the request
Initiator Initiator No It indicates the identity who makes the request. An initiator must be one of the following identity types:
l  SP operator
l  Organization operator(11)
NOTE
The value “11”(Organization Operator)or ‘14’(SP Operator) will be used for all the services in this document.
PrimartyParty PrimartyParty Yes If business operation/action, this element is not present; if transaction, this can be either the debit party or the credit party according to the transaction type.
ReceiverParty ReceiverParty Yes If business operation/action, this is the affected party; if transaction, it is the opposite party to the PrimaryParty
AccessDevice AccessDevice Yes It indicates the access device which the initiator uses to initiate the request.

 

Request structure

Element name Element type Optional Description
Transaction Transaction No It indicates a transaction.
Identity Identity No This section is used to specify all identities involved in the request
KeyOwner xsd:integer No It indicates which Key is used to encrypt the elements Initator.SecurityCredential and the EncryptedParameters.
Its value are enumerated as follows:
1:the API Caller’s Key
2:the Initiator’s Key

 

Response structure

Element name Element type Optional Description
ResponseCode xsd:string No It indicates whether MM accepts the request or not.
ResponseDesc xsd:string Yes Its value is a description for the parameter ResultCode.
ConversationID xsd:string Yes The unique identifier generated by M-Pesa for the request message.
OriginatorConversationID xsd:string Yes The unique identifier generated by the third party for the request message.
ServiceStatus xsd: integer Yes It indicates the MM service status.

 

ResultParameters structure

Element name Element type Optional Description
ResultParameter ParameterType[0…unbounded] Yes It is used to carry specific parameters for specific transaction or business operation.

 

Result structure

Element name Element type Optional Description
ResultType xsd:integer Yes 0: completed 1: waiting for further messages
ResultCode xsd:string No It indicates whether MM processes the request successfully or not. Max length is 10
ResultDesc xsd:string Yes Its value is a description for the parameter ResultCode.Max length is 1024
OriginatorConversationID xsd:string Yes The unique identifier of the request message generated by third party. Its value comes from the request message.
ConversationID xsd:string Yes The unique identifier generated by MM for a request
TransactionID xsd:string Yes It’s only for transaction. When the request is a transaction request, MM will generate a unique identifier for the transaction.
ResultParameters ResultParameters Yes It is used to carry specific parameters for specific transaction or business operation.
ReferenceData ReferenceData Yes It comes from the request message

 

Result code

Error code Error Description
0 Success ApiResult
1 Insufficient Funds ApiResult
2 Less Than Minimum Transaction Value ApiResult
3 More Than Maximum Transaction Value ApiResult
4 Would Exceed Daily Transfer Limit ApiResult
5 Would Exceed Minimum Balance ApiResult
6 Unresolved Primary Party ApiResult
7 Unresolved Receiver Party ApiResult
8 Would Exceed Maxiumum Balance ApiResult
11 Debit Account Invalid ApiResult
12 Credit Account Invaliud ApiResult
13 Unresolved Debit Account ApiResult
14 Unresolved Credit Account ApiResult
15 Duplicate Detected ApiResult
17 Internal Failure ApiResult
18 Initiator Credential Check Failure ApiResult
19 Message Sequencing Failure ApiResult
20 Unresolved Initiator ApiResult
21 Initiator to Primary Party Permission Failure ApiResult
22 Initiator to Receiver Party Permission Failure ApiResult
23 Request schema validation error ApiResponse
24 Missing mandatory fields ApiResponse
25 Cannot communicate with Caller ApiResponse
26 Traffic blocking condition in place ApiResponse
0 Success ApiResponse
100000000 Request was cached, waiting for resending ApiResponse
100000001 The system is overload ApiResponse
100000002 Throttling error ApiResponse
100000003 Exceed the limitation of the LICENSE ApiResponse
100000004 Internal Server Error ApiResponse
100000005 Invalid input value:%1 ApiResponse
%1 indicates the parameter’s name.
100000006 SP’s status is abnormal ApiResponse
100000007 Authentication failed ApiResponse
100000008 Service’s status is abnormal ApiResponse
100000009 API’s status is abnormal ApiResponse
100000010 Insufficient permissions ApiResponse
100000011 Exceed the limitation of request rate ApiResponse
100000012 Insufficient balance ApiResponse
100000013 No route ApiResponse
100000014 Missing mandatory parameter:%1 ApiResponse
%1 indicates the parameter’s name.

 

Web Service Interface Definition


Interface: RequestMgrPortType

Operation: GenericAPIRequest

The 3rd party invokes this operation to send a B2C request

Message Header: RequestSOAPHeader
Element name Element type Optional Description
SpId xsd: string No SP ID.
This is the Service Provider Identifier that is allocated by the Broker to the 3rd party.
[Example] : 888777
SpPassword xsd: string Yes This is an encrypted form of the SP password issued to an SP when an account is created on the Broker.
The encrypted password is a Base64 encoded string of the SHA-256 hash of the concatenation of the spId, password and the timeStamp as illustrated below:
Given the following parameters
spId: 888777
password: spPassword
timestamp: 20130702212854
spPassword = BASE64(SHA-256(spId + Password + timeStamp)) e.g.
spPassword = BASE64(SHA-256(888777spPassword20130702212854)
[Example] : e6434ef249df55c7a21a0b45758a39bb
ServiceId xsd: string Yes Service ID.
This is the Service Identifier that is allocated by the Broker for every service created.
[Example] : 888777000
Timestamp xsd: string Yes Time stamp (UTC time).
The value is required during SHA-256 encryption for spPassword.
NOTE
If the spPassword parameter must be set, this parameter is mandatory.
[Format]
yyyyMMddHHmmss
[Example] : 20161127093550

 

Input Message: RequestMsg
Element name Element type Optional Description
RequestMsg xsd: string No Request Message from 3rd party. Its value should be an instance of Request Type and a CDATA

N/B:

If there is no configuration for notification URL on Broker side, which indicates the callback url for accepting notification of GenericAPIResult or/and notification of cached requests expired, the ResultURL parameter inside Identity tag and a QueueTimeoutURL parameter in ReferenceData tag must be present respectively.

Output Message: ResponseMsg
Element name Element type Optional Description
ResponseMsg xsd: string No Response return to 3rd party. Its value should be an instance of Response Type and a CDATA.

 

Interface: ResultMgrPortType

Operation: GenericAPIResult

This operation must be implemented by a Web Service at the 3rd party side if it requires notification of the final result for B2C request. It will be invoked by Broker to notify the 3rd party once Broker received the notification from Core API.

Input Message: ResultMsg
Element name Element type Optional Description
ResultMsg xsd: string No Request Message from Broker. Its value should be a instance of Result Type and a CDATA.
Output Message: ResponseMsg
Element name Element type Optional Description
ResponseMsg xsd: string No Response return to Broker. Its value should be a instance of Response Type and a CDATA.
Response Codes
ResponseCode ResponseDesc
0 Success
200000001 The system is overload
200000002 Throttling error
200000003 Internal Server Error
ResultParameters
Parameter Data Type Mandatory or Optional Description Example
TransactionReceipt xs:string Mandatory Unique transaction ID for the payment transaction. 1234560000
TransactionAmount xs:string Mandatory 2 fixed point decimal amount of the transaction 100.22
TransactionCompletedDateTime xs:string Mandatory The time when the financial transaction was completed, as recorded in the M-Pesa system. 22.03.2012 12:20:20
Format:
dd.mm.yyyy HH:MM:SS
ReceiverPartyPublicName xs:string Mandatory Public name of the customer who has been issued the money. 254778866553868-Kip Keino
Format: <MSISDN>-<First Name> <Last Name>
For unregister customer, the <First Name> <Last Name> will be blank.
B2CWorkingAccountAvailableFunds xs:string Mandatory 2 fixed point decimal amount of the Available Balance of the organization’s Working Account. 9999.88
Note: the exact Account Type will depend on the configuration.
B2CUtilityAccountAvailableFunds xs:string Mandatory 2 fixed point decimal amount of the Available Balance of the organization’s Utility Account, which is the debit account of the principle transaction. 9999.88
Note: the exact Account Type will depend on the configuration.
B2CChargesPaidAccountAvailableFunds xs:string Mandatory 2 fixed point decimal amount of the Available Balance of the organization’s Charge Paid Account, which is debit account of the charge. 9999.88
Note: the exact Account Type will depend on the configuration.
B2CRecipientIsRegisteredCustomer xs:string Mandatory Indicate if the recipient is an existing Mobile Money customer, or an unregistered customer. Y
Format: Y or N
Note: This field is not filled by the G1 platform, but it will be filled by the G2 platform.

 

Interface: QueueTimeoutNotificationPort

Operation: notifyQueueTimeout

This operation must be implemented by a Web Service at the 3rd party side if it requires notification of expired B2C cached requests. It will be invoked by Broker to notify the 3rd party once B2C cached requests are expired

Input Message: notifyQueueTimeout
Element name Element type Optional Description
OriginatorConversationID xsd:string originatorConversationID from the request sent by the 3rd party
originRequest xsd:string No Original request without SOAP Header sent by 3rd party. Its value is encoded with base64, when the 3rd party receive the request, it should decode it.
ExtensionInfo Parameters Yes Extended parameters.
Output Message: notifyQueueTimeoutResponse
Element name Element type Optional Description
Result Result No
ExtensionInfo Parameters Yes Extended parameters.
Response Codes
ResponseCode ResponseDesc
0 Success
1 Failed

Interface: QueryTransactionPort

Operation: queryTransaction

The 3rd party invokes this operation to query transaction information.

Message Header: RequestSOAPHeader
Element name Element type Optional Description
SpId xsd: string No SP ID.
It’s allocated by the Broker to the 3rd party.
 [Example] : 888777
spPassword xsd: string Yes This is an encrypted form of the SP password issued to an SP when an account is created on the Broker.
The encrypted password is a Base64 encoded string of the SHA-256 hash of the concatenation of the spId, password and the timeStamp as illustrated below:
Given the following parameters
spId: 888777
password: spPassword
timestamp: 20130702212854
spPassword = BASE64(SHA-256(spId + Password + timeStamp)) e.g.
spPassword = BASE64(SHA-256(888777spPassword20130702212854)
[Example] : e6434ef249df55c7a21a0b45758a39bb
ServiceID xsd: string Yes The value is allocated by the Broker to the 3rd party.
 [Example] : 888777000
timeStamp xsd: string Yes Time stamp (UTC time).
The value is required during SHA-256 encryption for spPassword.
NOTE
If the spPassword parameter must be set, this parameter is mandatory.
[Format] : yyyyMMddHHmmss
[Example] : 20161127093550
Input Message: queryTransaction
Element name Element type Optional Description
originatorConversationID xsd:string The unique identifier of the request message generated by third party. It is used to identify a request between the third party and MM. Max length is 128
extensionInfo Parameters Yes Extended parameters.
ExtensionInfo Description
Parameter Optional Type Description
queryDate Yes String(20) The date of the original conversation. Format is yyyyMMddHHmmss, for example: 20131230134412
If this parameter does not present, it will cost more time to get the result.
Output Message: queryTransactionResponse
Element name Element type Optional Description
Result Response No
submitApiRequestList xsd:string[0-unbounded] Y Requests sent by the 3rd party. Its value is the requests sent by the 3rd party with base64 encoded.
submitApiResponseList xsd:string[0-unbounded] Y Responses returned from the Broker. Its value is the responses returned from the Broker with base64 encoded.
submitApiResultList xsd:string[0-unbounded] Y Results sent to the 3rd party. Its value is the requests sent by the Broker with base64 encoded.
queueTimeOutList xsd:string[0-unbounded] Y QueueTimeout requests sent to the 3rd party. Its value is the requests sent by the Broker with base64 encoded.
extensionInfo Parameters Yes Extended parameters.
Response Codes
ResponseCode ResponseDesc
0 Success
100000001 The system is overload
100000002 Throttling error
100000003 Exceed the limitation of the LICENSE
100000004 Internal Server Error
100000005 Invalid input value:%1
%1 indicates the parameter’s name.
100000006 SP’s status is abnormal
100000007 Authentication failed
100000008 Service’s status is abnormal
100000010 Insufficient permissions
100000014 Missing mandatory parameter:%1
%1 indicates the parameter’s name.

Interface: Management

Operation: changePassword

The 3rd party invokes this operation to change their password.

Input Message: changePassword
Element name Element type Optional Description
SpId xsd: string No SP ID.
This is the Service Provider Identifier that is allocated by the Broker to the 3rd party.
[Example] : 888777
SpPassword xsd: string Yes This is an encrypted form of the SP password issued to an SP when an account is created on the Broker.
The encrypted password is a Base64 encoded string of the SHA-256 hash of the concatenation of the spId, password and the timeStamp as illustrated below:
Given the following parameters
spId: 888777
password: spPassword
timestamp: 20130702212854
spPassword = BASE64(SHA-256(spId + Password + timeStamp)) e.g.
spPassword = BASE64(SHA-256(888777spPassword20130702212854)
[Example] : e6434ef249df55c7a21a0b45758a39bb
Timestamp xsd: string Yes Time stamp (UTC time).
The value is required during SHA-256 encryption for spPassword.
NOTE
If the spPassword parameter must be set, this parameter is mandatory.
[Format]
yyyyMMddHHmmss
[Example] : 20161127093550
newPassword xsd:string No New authentication password for 3rd parties to access the SAG. It should be encrypted by AES-256 and encoded with base64. Shared key and will be allocated by the SAG.
For example:
New password is !QAZ2wsx,
Security key is AAAabcdefghijklm,
Vector is abcdefghijklmnop
AES(!QAZ2wsx, AAAabcdefghijklm, abcdefghijklmnop) is wi2a7BAH0QPd2LRdmcgC9w==
SP should fill wi2a7BAH0QPd2LRdmcgC9w== as newPassword
extensionInfo Parameters Yes Extended parameters.
Output Message: changePasswordResponse
Element name Element type Optional Description
result Result No Result.
extensionInfo Parameters Yes Extended parameters.
Response Codes
ResponseCode ResponseDesc
0 Success
100000001 The system is overload
100000002 Throttling error
100000003 Exceed the limitation of the LICENSE
100000004 Internal Server Error
100000005 Invalid input value:%1
%1 indicates the parameter’s name.
100000006 SP’s status is abnormal
100000007 Authentication failed
100000014 Missing mandatory parameter:%1
%1 indicates the parameter’s name.

 

Examples


Sample API Call To Broker

<soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/” xmlns:req=”http://api-v1.gen.mm.vodafone.com/mminterface/request”>
<soapenv:Header>
<tns:RequestSOAPHeader xmlns:tns=”http://www.huawei.com/schema/osg/common/v2_1″>
<tns:spId>107043</tns:spId>
<tns:spPassword>YjUxOTViOThkNzE3MWI0OTNhOWJhZTIMzZjMGY4Y2ZiZPWDGM2U3M2MwNWRjOGI1NGEyM2I1YWVjNzU4NjI4ZQ==</tns:spPassword>
<tns:timeStamp>20160927093540</tns:timeStamp>
<tns:serviceId>107043000</tns:serviceId>
</tns:RequestSOAPHeader>
</soapenv:Header>
<soapenv:Body>
<req:RequestMsg>
<![CDATA[<?xml version=”1.0″ encoding=”UTF-8″?>
<request xmlns=”http://api-v1.gen.mm.vodafone.com/mminterface/request”>
<Transaction>
<CommandID>PromotionPayment</CommandID>
<LanguageCode></LanguageCode>
<OriginatorConversationID>107043_testapi_080106140056</OriginatorConversationID>
<ConversationID></ConversationID>
<Remark></Remark>
<Parameters><Parameter>
<Key>Amount</Key>
<Value>500</Value>
</Parameter></Parameters>
<ReferenceData>
<ReferenceItem>
<Key>QueueTimeoutURL</Key>
<Value>https://11.11.11.11:443/B2CService/queueTimeout.php</Value>
</ReferenceItem>
</ReferenceData>
<Timestamp>2016-11-07T13:59:42.2109675Z</Timestamp>
</Transaction>
<Identity>
<Caller>
<CallerType>2</CallerType>
<ThirdPartyID></ThirdPartyID>
<Password></Password>
<CheckSum></CheckSum>
<ResultURL>https://11.11.11.11:443/B2CService/resultApi.php</ResultURL>
</Caller>
<Initiator>
<IdentifierType>11</IdentifierType>
<Identifier>testapi</Identifier>
<SecurityCredential>JV
+vFzeioSwc7/w7qoV7rv0UYu4G9ipApGV3VSNZ0f9JmqgbwC9urWBiGRz0awLH5QGrYvWttbbopLUWg/7lCLgCIfJfzyvRWJj2Uf3zE0ALskbm0PC8fFD46I3tyNzVyWoEV9MUIEnRagzc5zGd8EMDRzpp
+r8cQnl7KQCpGuj3XIvN5aZuNZ2KQQ+Va6DQ
+wcM32wA84cqSw/Cr7d8lgecwqwRqS/VFFuARVJkWnIVYd9KwQ9qPtSluhKzVUHPDIdvL3ssfDXhDBCGYXLxWM0o5iA3mSC/iZcKxuApPweicQRu70DGEXNaO5c78zqUXcZO2WW/MQDIteVz7Q==</SecurityCredential
>
<ShortCode>646566</ShortCode>
</Initiator>
<PrimaryParty>
<IdentifierType>4</IdentifierType>
<Identifier>646566</Identifier>
<ShortCode></ShortCode>
</PrimaryParty>
<ReceiverParty>
<IdentifierType>1</IdentifierType>
<Identifier>254713171292</Identifier>
<ShortCode></ShortCode>
</ReceiverParty>
<AccessDevice>
<IdentifierType>1</IdentifierType>
<Identifier>Identifier3</Identifier>
</AccessDevice>
</Identity>
<KeyOwner>1</KeyOwner>
</request>]]></req:RequestMsg>
</soapenv:Body>
</soapenv:Envelope>

Sample API Response To 3rd Party

<soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/”>
<soapenv:Body>
<req:ResponseMsg xmlns:req=”http://api-v1.gen.mm.vodafone.com/mminterface/request”><![CDATA[<?xml version=”1.0″ encoding=”UTF-8″>
<Response><ResponseCode>0</ResponseCode><ConversationID>AG_20140825_000056ac18ccfd6a13a2</ConversationID>
<ResponseDesc>Accept the service request successfully.</ResponseDesc>
<OriginatorConversationID>107043_testapi_080106140056</OriginatorConversationID>
<ServiceStatus>0</ServiceStatus>
</Response>]]></req:ResponseMsg>
</soapenv:Body>
</soapenv:Envelope>

Sample API Result To 3rd Party

<soapenv:Envelope xmlns:soapenv=”http://schemas.xmlsoap.org/soap/envelope/”>
<soapenv:Header/>
<soapenv:Body>
<req:ResultMsg xmlns:req=”http://cps.huawei.com/cpsinterface/result”><![CDATA[<?xml version=”1.0″ encoding=”UTF-8″?>
<Result>
<ResultType>0</ResultType>
<ResultCode>0</ResultCode>
<ResultDesc>The service request is processed successfully.</ResultDesc>
<OriginatorConversationID>107043_testapi_080106140056</OriginatorConversationID>
<ConversationId>B72AC018-86E4-477A-B4B0-9EC65AE8A2FE</ConversationId>
<TransactionId>2782728972</TransactionId>
<ResultParameters>
<ResultParameter>
<Key>TransactionReceipt</Key>
<Value>2782728972</Value>
</ResultParameter>
<ResultParameter>
<Key>TransactionAmount</Key>
<Value>100.00</Value>
</ResultParameter>
<ResultParameter>
<Key>TransactionCompletedDateTime</Key>
<Value>22.03.2012 12:20:20</Value>
</ResultParameter>
<ResultParameter>
<Key>ReceiverPartyPublicName</Key>
<Value>254778866553868-Kip Keino</Value>
</ResultParameter>
<ResultParameter>
<Key>B2CWorkingAccountAvailableFunds</Key>
<Value>10000.00</Value>
</ResultParameter>
<ResultParameter>
<Key>B2CUtilityAccountAvailableFunds</Key>
<Value>100000.00</Value>
</ResultParameter>
<ResultParameter>
<Key>B2CChargesPaidAccountAvailableFunds</Key>
<Value>1000.00</Value>
</ResultParameter>
<ResultParameter>
<Key>B2CRecipientIsRegisteredCustomer</Key>
<Value>Y</Value>
</ResultParameter>
<ResultParameter>
<Key>B2CWithdrawalChargeAmount</Key>
<Value>12.00</Value>
</ResultParameter>
</ResultParameters>
<ReferenceData>
<ReferenceItem>
<Key>Occasion</Key>
<Value>Christmas</Value>
</ReferenceItem>
</ReferenceData>
</Result>]]></req:ResultMsg>
</soapenv:Body>
</soapenv:Envelope>

Sample API Response To Broker

<soap:Envelope xmlns:soap=”http://schemas.xmlsoap.org/soap/envelope/”>
<soap:Body>
<ns2:ResponseMsg xmlns:ns2=”http://api-v1.gen.mm.vodafone.com/mminterface/result”>
<![CDATA[<?xml version=”1.0″ encoding=”UTF-8″ standalone=”yes”?>
<response xmlns=”http://api-v1.gen.mm.vodafone.com/mminterface/response”>
<ResponseCode>00000000</ResponseCode>
<ResponseDesc>success</ResponseDesc>
<ConversationID>B72AC018-86E4-477A-B4B0-9EC65AE8A2FE</ConversationID>
<OriginatorConversationID>107043_testapi_080106140056</OriginatorConversationID>
<ServiceStatus>0</ServiceStatus>
</response>]]>
</ns2:ResponseMsg>
</soap:Body>
</soap:Envelope>