One-Time Payments
Process Flow
Flow diagram
Explanation
- Step 1: Customers check out order at your website and choose MoMo as payment method.
- Step 2: Your server creates a payment session and sends payment request to MoMo.
- Step 3: Switch to MoMo's payment page.
- Step 4: Customers use MoMo app to scan QR code or log in to process payment.
- Step 5: After payment, customers will be redirected back to your website.
- Step 6: Your server authenticates transaction and updates the result for customers.
API configuration
Payment method
At merchant website, after users choose products or services and make payment using Credit card, Merchant server needs to call MoMo API to retrieve the payment URL, then the merchant website redirects users to payment page.
API information to retrieve payment URL
POST /v2/gateway/api/create
requestType
: Identify the type of the request
Attribute | Type | Required | Description |
---|---|---|---|
partnerCode | String | Integration information | |
partnerName | String | Partner name | |
storeId | String | Store ID | |
requestId | String(50) | Request ID, unique for each request, MoMo's partner uses the requestId field for idempotency control | |
amount | Long | Amount needs to be paid Min: 1.000 VND Max: 10.000.000 VND Currency: VND Data type: Long | |
orderId | String | Partner Transaction ID Regex: ^[0-9a-zA-Z]([-_.]*[0-9a-zA-Z]+)*$ | |
orderInfo | String | Order's information | |
redirectUrl | String | A partner's URL. This URL is used to redirect from MoMo page to partner's page after customer's payment. Support: AppLink and WebLink | |
ipnUrl | String | Partner API. Used by MoMo to submit payment results by IPN method (server-to-server) method | |
requestType | String | payWithCC | |
extraData | String | Default value is empty "" Encode base64 follow Jsonformat: {"key": "value"} Example with data: {"username": "momo"} => data of extraData : eyJ1c2VybmFtZSI6ICJtb21vIn0= | |
userInfo | Object | Info of the customer, in which email is required. | |
autoCapture | Boolean | If set to false, the payment will not be automatically captured. | |
lang | String | Language of returned message (vi or en ) | |
signature | String | HMAC_SHA256accessKey=$accessKey&amount=$amount&extraData= $extraData&ipnUrl=$ipnUrl&orderId=$orderId&orderInfo= $orderInfo&partnerCode=$partnerCode&redirectUrl=$redirectUrl &requestId=$requestId&requestType=$requestType, secretKey) |
Details of userInfo
content
If this is provided, customer as MoMo user will be receive a notification or email (by choices).
Attribute | Type | Required | Description |
---|---|---|---|
name | String | Name of the customer as registered on merchant site | |
phoneNumber | String | Phone number of the customer as registered on merchant site | |
String | Email address of the customer as registered on merchant site |
Redirecting information (redirectUrl)
WebLink: Links to open website.
AppLink: Link to open mobile application.
Learn more about AppLink
- Android: https://developer.android.com/training/app-links
- IOS: https://developer.apple.com/documentation/uikit/core_app/..
Example request
{
"partnerCode": "MOMO",
"partnerName" : "Test",
"storeId" : "MomoTestStore",
"requestType": "payWithCC",
"userInfo": {
"email": "email_add@domain.com",
}
"ipnUrl": "http://www.example.com",
"redirectUrl": "http://www.example.com",
"orderId": "6d0a1b10-b382-11e9-8fda-91fa25841420",
"amount": 30000,
"lang": "vi",
"orderInfo": "pay with MoMo Credit card",
"requestId": "6d0a1b11-b382-11e9-8fda-91fa25841420",
"extraData": "eyJlbWFpbCI6ICJleGFtcGxlQGdtYWlsLmNvbSJ9",
"signature": "5344e1f4244173fe0ba2b4c865881aad79b86beff8154b4f74f3b92634ffa711"
}
List of payment methods that MoMo provides:
Attribute | Type | Required | Description |
---|---|---|---|
partnerCode | String | Integration Information | |
requestId | String | Same as the original request | |
orderId | String | Partner Transaction ID Regex: ^[0-9a-zA-Z]([-_.]*[0-9a-zA-Z]+)*$ | |
amount | Long | Same as the original payment amount | |
responseTime | Long | Time to respond payment results to partner Format: timestamp | |
message | String | Error description, error language is based on lang | |
resultCode | int | Error code | |
payUrl | String | URL for switching from the partner's page to the MoMo payment page |
Example response
{
"partnerCode": "MOMO",
"requestId": "6d0a1b11-b382-11e9-8fda-91fa25841420",
"orderId": "6d0a1b10-b382-11e9-8fda-91fa25841420",
"amount": 30000,
"responseTime": 14547523457,
"message": "Success",
"resultCode": 0,
"payUrl": "https://test-payment.momo.vn/v2/gateway/pay?t=TU9NT1NKSTEyMDE5MDgyM3wxNjEyODQwNTMyNDI3OjAxMjM0NTY3Nzg="
}
Processing payment result
For more information, see Payment Notification.
Parameter description
Description for parameters which are used by MoMo in the URL redirectUrl
and the body content of ipnUrl
.
Attribute | Type | Required | Description |
---|---|---|---|
partnerCode | String | Integration information | |
requestId | String | Each Request’s Identification | |
amount | Long | Amount to pay | |
orderId | String | OrderId of partner, unique for each request | |
orderType | String | momo_wallet | |
orderInfo | String | Order info | |
partnerUserId | String | MoMo's unique identifier for each MoMo eWallet account. | |
partnerClientid | String | Identifier of user | |
callbackToken | String | Token info used to get payment token | |
transId | Long | MoMo's transaction ID | |
resultCode | Integer | Order status | |
message | String | description of resultCode based on lang | |
payType | String | credit | |
responseTime | Long | Time to return payment result in miliseconds | |
extraData | String | Additional info | |
signature | String | Signature to confirm information. Secure transaction in Hmac_SHA256 algorithm with format: a String sort all key name of data field from a-z: accessKey=$accessKey&amount=$amount&callbackToken= $callbackToken&extraData=$extraData&message=$message &orderId=$orderId&orderInfo=$orderInfo&orderType= $orderType&partnerClientId=$partnerClientId &partnerCode=$partnerCode&payType=$payType&requestId= $requestId&responseTime=$responseTime&resultCode= $resultCode&transId=$transId |
HTTP Response (IPN)
Partner's response to MoMo after MoMo sends HTTP to the address ipnUrl
Key | Value | Description |
---|---|---|
HTTP Header | Content-Type: application/json;charset=UTF-8 | |
HTTP Status Code | 200 |
HTTP Payload:
Body of the Response
Parameter | Type | Required | Description |
---|---|---|---|
partnerCode | String | Integration Information | |
requestId | String | Unique ID of each request | |
orderId | String | Partner Transaction ID Regex: ^[0-9a-zA-Z]([-_.]*[0-9a-zA-Z]+)*$ | |
resultCode | int | Partner's transaction status code of the order | |
message | String | Partner's transaction status description | |
responseTime | Long | Response time Format: YYYY-MM-DD HH:mm:ss Time zone: GMT +7 | |
extraData | String | Extra Data | |
signature | String | HMAC_SHA256accessKey=$accessKey&extraData=$extraData &message=$message&orderId=$orderId&partnerCode=$partnerCode &requestId=$requestId&responseTime=$responseTime&resultCode= $resultCode, secretKey) |
For the resultCode
and message
fields, partner will handle. Refer to the error code of MoMo to return.
MoMo will use these information to give feedback to customers if any error occurs in the payment process from partner side.
Result Codes & Messages
Kindly locate result codes and messages of One-time Payment of Credit Card Payments in the comprehensive list of result codes provided here.