Skip to main content

Apple Pay

Process Flow

Flow diagram

Onetime_flow

Explaination

  • Step 1: Check Apple Pay Availability: Ensure Apple Pay availability on the user's device before displaying it as a payment option.
  • Step 2: Proceed to Checkout: User selects "Pay via Apple Pay" provided by MoMo in the checkout process.
  • Step 3: Create Payment Request: Initiate an order with a unique orderId and send a payment request to MoMo, request the Apple Pay payment method using your credentials.
  • Step 4: Return Payment URL: After MoMo authenticates the request, we respond with a payment URL (payUrl).
  • Step 5: Redirect to MoMo Web: For merchants operating on a website, redirect the user to MoMo's website using the payUrl.
  • Step 6: Display Apple Pay Payment Page: MoMo Gateway displays order information and asks users to confirm the payment using the Apple Pay button.
  • Step 7: Confirm Payment: User authenticates and confirms the payment through Apple Pay on their device.
  • Step 8: Process Payment: MoMo processes the payment, returns the payment result, and redirects the user back to your web/app.
  • Step 9: Display Payment Result: Receive the payment result and present it on the user's device.

API Configuration

HTTP Information

Check Apple Pay Availability

Before users proceed to checkout, it's essential to verify the availability of Apple Pay. Only display Apple Pay payment method if Apple Pay is confirmed as available during the user checkout session.

To check whether the Apple Pay JS API is available in the browser, verify that the window.ApplePaySession class exists, as shown in the following listing:

if (window.ApplePaySession) {
// The Apple Pay JS API is available.
}

Next, call method canMakePayments to verify that the device is capable of making Apple Pay payments.

Verify Apple payment method availability before displaying Apple Pay using the following code example:

if (window.ApplePaySession) {
const canMakePayment = window.ApplePaySession.canMakePayments();
if (canMakePayment) {
// Display Apple Pay payment method
}
}

Payment via Apple Pay in iframes is unavailable.

Payment method

After users select products or services and make a payment using Apple Pay on the merchant website, the merchant server must call the MoMo API to obtain the payment URL, then redirects users to the obtained payment page.

API information to retrieve payment URL

POST /v2/gateway/api/create

requestType: Identify the type of the request

HTTP Request
AttributeTypeRequiredDescription
partnerCodeStringIntegration information
partnerNameStringPartner name
storeIdStringStore ID
requestIdString(50)Request ID, unique for each request,
MoMo's partner uses the requestId field for idempotency control
amountLongAmount needs to be paid
Min: 1.000 VND
Max: 50.000.000 VND
Currency: VND
Data type: Long
orderIdStringPartner Transaction ID
Regex: ^[0-9a-zA-Z]([-_.]*[0-9a-zA-Z]+)*$
orderInfoStringOrder's information
redirectUrlStringA partner's URL. This URL is used to redirect from MoMo page to partner's page after customer's payment.
Support: AppLink and WebLink
ipnUrlStringPartner API. Used by MoMo to submit payment results by IPN method (server-to-server) method
requestTypeStringpayWithApplePay
extraDataStringDefault value is empty ""
Encode base64 follow Jsonformat: {"key": "value"}
Example with data: {"username": "momo"}=> data of extraData: eyJ1c2VybmFtZSI6ICJtb21vIn0=
userInfoObjectInfo of the customer, in which email is required.
autoCaptureBooleanIf set to false, the payment will not be automatically captured.
langStringLanguage of returned message (vi or en)
signatureStringHMAC_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 implemented, customers will have the option to choose between receiving notifications or emails.

AttributeTypeRequiredDescription
nameStringName of the customer as registered on merchant site
phoneNumberStringPhone number of the customer as registered on merchant site
emailStringEmail 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

Example request
{
"partnerCode": "MOMO",
"partnerName": "Test",
"storeId": "MomoTestStore",
"requestType": "payWithApplePay",
"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 Apple Pay",
"requestId": "6d0a1b11-b382-11e9-8fda-91fa25841420",
"extraData": "eyJlbWFpbCI6ICJleGFtcGxlQGdtYWlsLmNvbSJ9",
"signature": "5344e1f4244173fe0ba2b4c865881aad79b86beff8154b4f74f3b92634ffa711"
}
HTTP Response
AttributeTypeRequiredDescription
partnerCodeStringIntegration Information
requestIdStringSame as the original request
orderIdStringPartner Transaction ID
Regex: ^[0-9a-zA-Z]([-_.]*[0-9a-zA-Z]+)*$
amountLongSame as the original payment amount
responseTimeLongTime to respond payment results to partner
Format: timestamp
messageStringError description, error language is based on lang
resultCodeintError code
payUrlStringURL 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.

AttributeTypeRequiredDescription
partnerCodeStringIntegration information
requestIdStringEach Request’s Identification
amountLongAmount to pay
orderIdStringOrderId of partner, unique for each request
orderTypeStringmomo_wallet
orderInfoStringOrder info
partnerUserIdStringMoMo's unique identifier for each MoMo eWallet account.
transIdLongMoMo's transaction ID
resultCodeIntegerOrder status
messageStringdescription of resultCode based on lang
payTypeStringweb ,
responseTimeLongTime to return payment result in miliseconds
extraDataStringAdditional info
signatureStringSignature 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&extraData=$extraData&message=$message
&orderId=$orderId&orderInfo=$orderInfo&orderType=
$orderType&partnerCode=$partnerCode&payType=$payType&requestId=
$requestId&responseTime=$responseTime&resultCode=
$resultCode&transId=$transId

See also