Alipay GetPayment
Overview
GetPayment is the first API call of the Alipay checkout flow. It is used to initiate the Alipay authorization process.
The item level details are provided in the OrderDetails element defined within the schema, along with total order amount.
The GetPayment response contains a RequestUrl element. This Alipay URL, uniquely generated for each transaction, is used by the webstore to redirect the user to perform authentication and confirm the order on Alipay's website.
URI Description
Action | URI Template | URI Example | Non-URI Request | Response |
---|---|---|---|---|
POST | /vM.m/stores/StoreId/payments/alipay/getPayment.[format] | /v1.0/stores/AStoreId/payments/alipay/getPayment.xml | XML | 200 + XML Response containing Alipay redirect url |
Request Elements
When preparing the request, consider the following data notes:
- A unique OrderId is required to be sent in the request for each transaction/attempt.
- A reattempt requires a new OrderId. If a GetPayment request fails for any reason, or if the webstore has issues with completing the order or redirecting the user, and if the webstore reattempts Alipay payment, it is very important that a new OrderId is sent in the new request. This is required so that the new request generates a new URL that can be used to get the correct status of the transaction during the rest of the Alipay payment process.
Element | Required | Description | Type | Restriction |
---|---|---|---|---|
StoreId | Yes | Store identifier used in the URL. | String | 20 Characters |
requestId | Yes | RequestId is used to uniquely identify a request, including as part of idempotent duplicate request processing. The value must be unique. It is recommended to use a variant 4 UUID for the request ID. The same request ID should only be reused if a read timeout occurs when attempting to receive a response from the payment service, or the payment service responds with a fault response. In all other cases a new request ID must be sent for retried requests, including responses such as Fail, Timeout or PaymentProcessorTimeout. | String | Min - 1 Character Max - 40 Characters. |
/AlipayGetPaymentRequest/OrderId | Yes | Order identifier. | String | Min 1 Character Max 20 Characters |
/AlipayGetPaymentRequest/Amount | Yes | Currency amount being authorized on the credit card | Decimal |
Positive decimal, up to two decimal places (for example, 4.75) |
/AlipayGetPaymentRequest/Amount/ @currencyCode |
Yes | Type of currency used for the order | String | 3-character ISO 4217 code (for example, USD, CAD, EUR). See
http://en.wikipedia.org/ wiki/ISO_4217. |
/AlipayGetPaymentRequest/NotifyUrl | No | URL for the store to receive notifications of payment status from Alipay after payment transaction. | String |
Only use this field if it's desired to receive payment status automatically from Alipay, as it needs extra testing efforts involving Alipay.
|
/AlipayGetPaymentRequest/ReturnUrl | Yes | URL to which the customer's browser is returned after choosing to pay with Alipay. | String | Cannot be empty. Min 1 Character Max 200 Characters |
/AlipayGetPaymentRequest/ OrderDetails |
No | Represents the Line items in the Order. | Complex Type | Includes: Multiple AlipayOrderLineItemType elements. |
/AlipayGetPaymentRequest/ OrderDetails/LineItem |
Yes | Represents a single item in the order. | Complex Type | Includes: Item name and Item description. Min 1 Item Max Unbounded |
/AlipayGetPaymentRequest/ OrderDetails/LineItem/Item |
Yes | Line item name. | String | Minimum length is 1. |
/AlipayGetPaymentRequest/ OrderDetails/LineItem/ItemDescription |
Yes | Line item description. | String | Min 1 Character Max 50 Characters |
Request Example
The request is a AlipayGetPaymentRequest message.
<?xml version="1.0" encoding="UTF-8"?>
<AlipayGetPaymentRequest xmlns="http://api.gsicommerce.com/schema/checkout/1.0" requestId="1234567">
<OrderId>12345</OrderId>
<Amount currencyCode="USD">12.34</Amount>
<NotifyUrl>http://foo.br/alipay/notify</NotifyUrl>
<ReturnUrl>http://webstore.com/return</ReturnUrl>
<OrderDetails>
<LineItem>
<Item>Shirt</Item>
<ItemDescription>Blue shirt</ItemDescription>
</LineItem>
</OrderDetails>
</AlipayGetPaymentRequest>
Request Example with Multiple Line Items
The request is a AlipayGetPaymentRequest message.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AlipayGetPaymentRequest xmlns="http://api.gsicommerce.com/schema/checkout/1.0" requestId="1234567">
<OrderId>11111123</OrderId>
<Amount currencyCode="USD">12.34</Amount>
<NotifyUrl>http://foo.br/alipay/notify</NotifyUrl>
<ReturnUrl>http://webstore.com/return</ReturnUrl>
<OrderDetails>
<LineItem>
<Item>Hat</Item>
<ItemDescription>Red hat</ItemDescription>
</LineItem>
<LineItem>
<Item>Shirt</Item>
<ItemDescription>Blue shirt</ItemDescription>
</LineItem>
</OrderDetails>
</AlipayGetPaymentRequest>
Response Elements
Element | Required | Description | Type | Restriction |
---|---|---|---|---|
/AlipayGetPaymentReply/OrderId | Yes | Order identifier. | String | Min 1 Character Max 20 Characters |
/AlipayGetPaymentReply/RequestUrl | Yes | Used to redirect the customer's browser to Alipay's cashier login page to complete Alipay payment transaction. | String | Min 1 Character Max 200 Characters |
Successful Response Example
The response is a AlipayGetPaymentReply message.
<?xml version="1.0" encoding="UTF-8"?>
<AlipayGetPaymentReply xmlns="http://api.gsicommerce.com/schema/checkout/1.0">
<OrderId>12345</OrderId>
<RequestUrl>https://mapi.alipay.com/gateway.do?seller_name=The Model Store&body=Red hat Blue shirt&seller_industry&total_fee=120.00&subject=Hat Shirt¬ify_url=unavailable&service=create_forex_trade&seller_id=TMSUS&out_trade_no=1487094863349&supplier=The Model Store¤cy=USD&return_url=http://webstore.com/return&partner=2088611221573217&_input_charset=UTF-8&sign=0abfbafc5330ac18734522f2a38266b6&sign_type=MD5</RequestUrl>
</AlipayGetPaymentReply>
Error Response Example
The response is a Fault Reply message.
<?xml version="1.0" encoding="UTF-8"?>
<Fault xmlns="http://api.gsicommerce.com/schema/checkout/1.0">
<CreateTimestamp>2018-08-17T17:36:20.482+05:30</CreateTimestamp>
<Code>SocketTimeoutException</Code>
<Description>Read timed out</Description>
</Fault>
Next Step
After a successful GetPayment call, the next step in the Alipay checkout flow is a PaymentStatus call.