### POST /api/pay/paymentrequest Source: https://araka-pay.com/documentation/collecte-paiements This endpoint allows the caller to request payments from a payee. Access requires setup changes on your account; contact the technical team for configuration. ```APIDOC ## POST /api/pay/paymentrequest ### Description This endpoint allows the caller to request payments from a payee. Access to this endpoint requires setup changes on your account. Contact the technical team for this configuration to be completed. ### Method POST ### Endpoint /api/pay/paymentrequest ### Parameters #### Request Body - **Order** (Object) - Required - Information about the operation to be performed - **Order.Paymentpageid** (String(20)) - Required - Identifier for payment page. Refer to the section marked 2.1 (One Time Payment Page) the ID is the last part of your payment page URL eg: https://merchant.arakapay.com/payment/xxxx. Where xxxx is the paymentpageid - **Order.customerFullName** (String(180)) - Optional - Full Name for customer - **Order.customerPhoneNumber** (String(180)) - Optional - Phone Number of the customer - **Order.transactionReference** (String(20)) - Required - Reference transaction ID from source request to be used in reconciliations - **Order.customerEmailAddress** (String(180)) - Optional - Email address of the customer - **Order.currency** (String(3)) - Required - Char 3 ISO currency code - **Order.amount** (Decimal(8,2)) - Required - Amount involved in the transaction - **Order.redirectURL** (String(400)) - Optional - URL where result of the transaction is to be sent after completion of the operation. This endpoint should support POST and redirect. - **PaymentChannel** (Object) - Required - Information about the payment channel the client should use in completing the transaction - **PaymentChannel.channel** (String(30)) - Required - The channel to be used for payments. Eg (MOBILEWALLET) - **PaymentChannel.provider** (Object) - Required - The Provider to be used to process the payment (MPESA,AIRTEL,ORANGE,AFRIMONEY) - **PaymentChannel.walletid** (String(14)) - Required - phone number in international format (+243XXXX…) ### Request Example ```json { "order": { "paymentPageId": "string", "customerFullName": "string", "customerPhoneNumber": "string", "customerEmailAddress": "string", "transactionReference": "string", "amount": 0, "currency": "string", "redirectURL": "string" }, "paymentChannel": { "channel": "string", "provider": "string", "walletID": "string" } } ``` ### Response #### Success Response (200) - **field1** (type) - Description #### Response Example { "example": "response body" } ``` -------------------------------- ### GET api/reporting/transactionstatusbyreference/{transactionReference} Source: https://araka-pay.com/documentation/collecte-paiements Retrieves the status of a transaction using its reference number. Access requires account configuration changes. ```APIDOC ## GET api/reporting/transactionstatusbyreference/{transactionReference} ### Description Retrieves the status of a transaction using the reference number provided in the original transaction request. This endpoint requires specific account configuration and may need to be enabled by contacting the technical team. ### Method GET ### Endpoint api/reporting/transactionstatusbyreference/{transactionReference} ### Parameters #### Path Parameters - **transactionReference** (string) - Required - The reference number of the transaction. ### Response #### Success Response (200) - **transactionId** (string) - The unique identifier of the transaction. - **originatingTransactionId** (string) - The ID of the originating transaction. - **status** (string) - The status of the transaction (e.g., APPROVED, DECLINED, PENDING). - **statusCode** (string) - The status code associated with the transaction. - **transactionDate** (string) - The date of the transaction. #### Response Example ```json { "transactionId": "string", "originatingTransactionId": "string", "status": "string", "statusCode": "200", "transactionDate": "string" } ``` ``` -------------------------------- ### Send Mobile Money Source: https://araka-pay.com/documentation/mobile-money Allows you to transfer money to a mobile money user's wallet. Access to this endpoint requires setup changes on your account. Contact the technical team for this configuration to be completed. ```APIDOC ## POST /api/pay/sendmobilemoney ### Description This method allows you to transfer money to a mobile money users wallet. Access to this endpoint requires setup changes on your account. Contact the technical team for this configuration to be completed. ### Method POST ### Endpoint /api/pay/sendmobilemoney ### Parameters #### Request Body - **Order** (Object) - Required - Information about the operation to be performed - **Order.customerFullName** (String(180)) - Optional - Full Name for customer - **Order.customerPhoneNumber** (String(180)) - Optional - Phone Number of the customer - **Order.transactionReference** (String(20)) - Required - Reference transaction ID from source request to be used in reconciliations - **order.customerEmailAddress** (String(180)) - Optional - Email address of the customer - **order.currency** (String(3)) - Required - Char 3 ISO currency code - **Order.amount** (Decimal(8,2)) - Required - Amount involved in the transaction - **Destination** (Object) - Required - Information about the payment channel the client should use in completing the transaction - **Destination.provider** (String) - Required - The Provider to be used to process the payment (MPESA,AIRTEL,ORANGE,AFRIMONEY) - **Destination.walletid** (String(14)) - Required - Phone number in international format (+243XXXX…) ### Request Example ```json { "order": { "customerFullName": "string", "customerPhoneNumber": "string", "customerEmailAddress": "string", "transactionReference": "string", "amount": 0, "currency": "string" }, "destination": { "provider": "string", "walletID": "string" } } ``` ### Response #### Success Response (200) - **transactionId** (string) - Description - **originatingTransactionId** (string) - Description - **statusCode** (string) - Description - **statusDescription** (string) - Description #### Response Example ```json { "transactionId": "string", "originatingTransactionId": "string", “statusCode”:”200”, “statusDescription”:”SUCCESS” } ``` ``` -------------------------------- ### GET api/reporting/transactionstatus/{transactionid} Source: https://araka-pay.com/documentation/collecte-paiements Retrieves the status of a transaction using its transaction ID. Access requires account configuration changes. ```APIDOC ## GET api/reporting/transactionstatus/{transactionid} ### Description Retrieves the status of a transaction using its unique transaction ID. This endpoint requires specific account configuration and may need to be enabled by contacting the technical team. ### Method GET ### Endpoint api/reporting/transactionstatus/{transactionid} ### Parameters #### Path Parameters - **transactionid** (string) - Required - The unique identifier of the transaction. ### Response #### Success Response (200) - **transactionId** (string) - The unique identifier of the transaction. - **originatingTransactionId** (string) - The ID of the originating transaction. - **statusDescription** (string) - The status of the transaction (e.g., APPROVED, DECLINED, PENDING). - **statusCode** (string) - The status code associated with the transaction. #### Response Example ```json { "transactionId": "string", "originatingTransactionId": "string", "statusDescription": "string", "statusCode": "200" } ``` ``` -------------------------------- ### Sample Payment Callback Response Source: https://araka-pay.com/documentation/collecte-paiements This is a sample JSON response received via callback after a payment transaction. ```json { "transactionId": "string", "originatingTransactionId": "string", "statusCode": "202", "statusDescription": "ACCEPTED" } ``` -------------------------------- ### Sample Approved Payment Callback Response Source: https://araka-pay.com/documentation/collecte-paiements This is a sample JSON response for an approved payment received via callback. ```json { "transactionId": "string", "originatingTransactionId": "string", “statusCode”:”200”, “statusDescription”:”string” // APPROVED,DECLINED,PENDING } ``` -------------------------------- ### Sample Transaction Status Inquiry Response by Reference Source: https://araka-pay.com/documentation/collecte-paiements This JSON represents the response when inquiring about a transaction's status using its transaction reference. ```json { "transactionId": "string", "originatingTransactionId": "string”, “status”:”string”, //APPROVED,DECLINED,PENDING “statusCode”:”200”, “transactionDate”:”string” } ``` -------------------------------- ### Sample Transaction Status Inquiry Response Source: https://araka-pay.com/documentation/collecte-paiements This JSON represents the response when inquiring about the status of a transaction using its transaction ID. ```json { "transactionId": "string", "originatingTransactionId": "string”, “statusDescription”:”string”, //APPROVED,DECLINED,PENDING “statusCode”:”200” } ``` -------------------------------- ### Send Mobile Money Request Payload Source: https://araka-pay.com/documentation/mobile-money This is a sample JSON payload for sending money to a mobile money user. Ensure all required fields like transactionReference, currency, amount, provider, and walletID are correctly populated. ```json { "order": { "customerFullName": "string", "customerPhoneNumber": "string", "customerEmailAddress": "string", "transactionReference": "string", "amount": 0, "currency": "string” }, "destination": { "provider": "string", //MPESA,AIRTEL,ORANGE "walletID": "string" //MSISDN } } ``` -------------------------------- ### Verify Callback Payload with HMAC SHA256 in C# Source: https://araka-pay.com/documentation/collecte-paiements Use this C# code to verify the integrity of callback payloads using HMAC encryption and a shared secret key. Ensure you have the necessary .NET cryptographic libraries. ```csharp public static bool VerifyCallback(string receivedPayload, string receivedSignature, string sharedSecretKey) { byte[] keyBytes = Encoding.UTF8.GetBytes(sharedSecretKey); byte[] payloadBytes = Encoding.UTF8.GetBytes(receivedPayload); byte[] signatureBytes = Convert.FromBase64String(receivedSignature); using (var hmac = new HMACSHA256(keyBytes)) { byte[] calculatedHash = hmac.ComputeHash(payloadBytes); // Compare the calculated hash with the received signature return CryptographicOperations.FixedTimeEquals(calculatedHash, signatureBytes); } } ``` -------------------------------- ### Send Mobile Money Response Source: https://araka-pay.com/documentation/mobile-money This is a sample response structure for the Send Mobile Money API. It includes transaction details and status codes upon successful processing. ```json { "transactionId": "string", "originatingTransactionId": "string”, “statusCode”:”200”, “statusDescription”:”SUCCESS” } ``` -------------------------------- ### Payment Request API Payload Source: https://araka-pay.com/documentation/collecte-paiements This JSON structure is used to initiate a payment request via the ARAKA API. It includes details about the order, customer, and preferred payment channel. ```json { "order": { "paymentPageId": "string", "customerFullName": "string", "customerPhoneNumber": "string", "customerEmailAddress": "string", "transactionReference": "string", "amount": 0, "currency": "string",//USD,CDF "redirectURL": "string" }, "paymentChannel": { "channel": "string", //MOBILEMONEY,CARD "provider": "string", //MPESA,AIRTEL,ORANGE, AFRIMONEY "walletID": "string" //MSISDN } } ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.