Alipay+ DocsAlipay+ Docs

Accept a payment

After the account binding process is completed, the merchant can initiate a payment with the access token that is retrieved during the account binding process, without involving any further user interactions.

Workflow

The following figure illustrates the workflow of how to initiate and process a payment.

Payment.png

Figure 1. The payment processing workflow of Auto Debit

Acquiring Service Provider actions

After receiving the payment request from the merchant, the Acquiring Service Provider (ACQP) needs to call the pay interface from Alipay+ to process the payment. When Alipay+ returns the response of the pay request, the ACQP needs to handle the payment result and return it to the merchant.

Initiate a payment request

After the account binding process is completed, the merchant as the auth client, obtains the user authorization (the access token). Then the merchant can initiate a payment request according to the business scenario, which can be an individual payment request or one of the subscription payment requests. The ACQP then uses the access token to assemble a request to call the pay interface.

Processing logic

  • The following list provides the key information that the ACQP needs to take into consideration when configuring the request parameters of the pay interface:
    • paymentAmount.currency: specifies the transaction currency.
    • paymentAmount.value: the value of this parameter must be in the smallest currency unit. For example, when the currency is HKD, $5.99 must be specified as 599. When the currency is JPY, ¥599 must be specified as 599. Check ISO 4217 Currency Code for more details.
    • paymentMethod.paymentMethodType: the value of this parameter must be set to CONNECT_WALLET.
    • paymentMethod.paymentMethodId: specifies the value of the accessToken parameter that is obtained in the account binding process.
    • paymentFactor.isAgreementPayment: the value of this parameter must be set to true.
    • paymentFactor.presentmentMode: the value of this parameter must be set to UNIFIED.
    • paymentExpiryTime: the expiration time expected for this payment. Normally, the Auto Debit payment can be processed and results can return synchronously in a very short time. However, when some issues (such as network timeout) occur, the payment will be closed by Alipay+ when the time reaches the expiration time. By default, the expiration time is 1 minute.
    • paymentRequestId: must be a uniqure ID that is assigned by the payment initiator to identify an order payment.
  • The following table lists the different results that the ACQP might receive from Alipay+.

result.resultStatus

result.resultCode

Actions

S

SUCCESS

Payment succeeds, which means the money is deducted from the user. Update the status from merchant side.

F

...

Payment fails. Take actions according to the error message in result.resultCode.

U

...

Payment in processing. Call the inquiryPayment interface to inquire the payment result. The inquiry request can be sent 10 to 20 times within 60 seconds.

No result received

Sample

The ACQP sends a request to Alipay+.

copy
{
    "paymentNotifyUrl": "https://xmock.inc.alipay.net/api/Ipay/globalSite/automtion/paymentNotify.htm",
    "paymentRequestId": "pay_1089760038715669_102775745075669",
    "paymentFactor": {
        "isAgreementPayment": "true",
        "presentmentMode": "UNIFIED"
    },
    "order": {
        "referenceOrderId": "102775745075669",
        "orderDescription": "SHOES",
        "orderAmount": {
            "currency": "JPY",
            "value": "100"
        },
        "merchant": {
            "referenceMerchantId": "M0000000001",
            "merchantName": "UGG",
            "merchantMCC": "5411",
            "merchantAddress": {
                "region": "JP",
                "city": "xxx"
            }
        },
        "env": {
            "terminalType": "APP",
            "osType": "IOS"
        },
        "buyer": {
            "referenceBuyerId": "907410100070010000"
        }
    },
    "settlementStrategy": {
        "settlementCurrency": "JPY"
    },
    "paymentAmount": {
        "currency": "JPY",
        "value": "100"
    },
    "paymentMethod": {
        "paymentMethodType": "CONNECT_WALLET",
        "paymentMethodId": "ALIPAY20210521s5yWq9NvmJDFb9l8TLFFvgbum3Mp9rWET39h0QXxlRM0881307330994"
    }
}

Alipay+ returns a response to the ACQP.

copy
{
    "acquirerId": "2021228100000000",
    "result": {
        "resultCode": "PAYMENT_IN_PROCESS",
        "resultStatus": "U",
        "resultMessage": "The payment in process."
    },
    "paymentId": "20190608114010800100188820200355883",
    "paymentAmount": {
        "value": "100",
        "currency": "JPY"
    },
    "paymentTime": "2021-04-08T14:48:50+08:00",
    "customerId": "208812211210000",
    "pspId": "102208800000000000",
    "walletBrandName": "walletName",
    "settlementAmount": {
        "currency": "JPY",
        "value": "100"
    }
}

More information

For more information about how to use the pay interface (such as the field description and format), see pay.