create_forex_trade
Call this interface to initiate a website payment request.
#Request
#Service address
Environment | HTTPS request URL |
Production environment | |
Test environment |
#Request parameters
#trade_information
| Parameter | Description |
business_type String | Business type. 5 types are supported: 1: Hotel 2: AIR 3: Overseas study consulting 4: Sales of goods 5: Others, including all the other business types that do not fall into the above 4 categories. For example, mobile data service recharge, airport pick up service, etc. If more than one type is involved, separate type values with vertical bar (|).
|
hotel_name String | Hotel name that consists of numbers, letters, spaces, and special characters including ,.<>()[]/\-,. If more than one hotel name exists, separate values with vertical bar (|). Specify this field only when business_type is 1 (Hotel).
|
check_in_time Date | Check-in time. Format: yyyy-MM-dd. Timezone: GMT +8. Specify this field only when business_type is 1 (Hotel).
|
check_out_time Date | Check-out time. Format: yyyy-MM-dd. Timezone: GMT +8. Specify this field only when business_type is 1 (Hotel).
|
flight_number String | Flight number. If flight transfer exists, separate flight numbers with vertical bar (|). Specify this field only when business_type is 2 (AIR).
|
departure_time Date | Departure time. Format: yyyy-MM-dd HH:mm Timezone: GMT +8. If flight transfer exists, separate time values with vertical bar (|). Specify this field only when business_type is 2 (AIR).
|
admission_notice_url String | If business_type is 3 (Overseas study consulting), the URL of admission notice (image) must be specified.
|
goods_info String | Goods information that includes SKU names and corresponding quantities, in the format of SKU_name^quantity. If more than one goods exists, separate values with vertical bar (|). Specify this field only when business_type is 4 (Sales of goods).
|
total_quantity Number | Total quantities of all goods in one order. Specify this field only when business_type is 4 (Sales of goods).
|
other_business_type String | If business_type is 5 (Others), specify the business type in details.
|
Notes:
- When the merchant wishes to price their products in RMB, the merchant can put the CNY payment amount in the
rmb_feefield. In the same time, thetotal_feefield needs to be ignored. The payment amount will be displayed in RMB to the user.
- The merchant must not change the value of the
currencyfield, which is the settlement currency that Alipay pays the merchant in. - The
total_feeorrmb_feefield are mutually exclusive. One and only one of them can be used.
- The decimal place accuracy of amounts, such as the values of
total_fee, depends on the value ofcurrency. If the value ofcurrencyisJPY, then the amount must be an integer. For example, 100 JPY. For other currencies, the amount is of two decimal place accuracy. For example, 100.00 USD. Amounts in other formats will cause error, for example, 100.999 USD. The value ofrmb_feeis also of two decimal places because the currency is CNY. - If both
order_gmt_create+order_valid_timeandtimeout_ruleare specified,order_gmt_create+order_valid_timewill be used for order timeout control. Alipay suggests to useorder_gmt_create+order_valid_timefor order timeout control. - The merchant cannot attach parameters to
return_urlin order to pass them to Alipay. Alipay will remove all extra parameters in thereturn_urlfield.
#Response
#Synchronous response
| Parameter | Description |
| Basic parameter | |
sign_type String | Sign type. RSA, RSA2 and MD5 are supported. Use uppercase.
|
sign String | Sign value
|
| Business parameter | |
trade_status String(32) | Alipay transaction status. For each transaction, you must ensure that the status is TRADE_FINISHED. See Trade status for details.
|
trade_no String(64) | The serial number assigned by Alipay to identify a trade in the Alipay system, with a length in the range 16 - 64 bits.
|
out_trade_no String(64) | The unique transaction ID that is assigned by the merchant. This parameter is transmitted by the corresponding request and needs to be returned with the original value.
|
currency String(3) | Settlement currency code
|
total_fee Number(9,2) | The transaction amount. This parameter is transmitted by the corresponding request and needs to be returned with its original value.
|
#Asynchronous response
| Parameter | Description |
| Basic parameter | |
sign_type String | Sign type. RSA, RSA2 and MD5 are supported. Use uppercase.
|
sign String | Sign value
|
| Business parameter | |
notify_type String | Notification type, with a value of trade_status_sync
|
notify_id String(34) | Notification ID, used by the partner system to verify the notification
|
notify_time Timestamp | The time in GMT+8 when the notification is sent. The time format is yyyy-MM-dd HH:mm:ss.
|
trade_status String(32) | Alipay transaction status. See Trade status for details.
|
trade_no String(64) | The serial number assigned by Alipay to identify a trade in the Alipay system, with a length in the range 16 - 64 bits.
|
out_trade_no String(64) | The unique transaction ID that is assigned by the merchant. This parameter is transmitted by the corresponding request and needs to be returned with the original value.
|
currency String(3) | Settlement currency code
|
total_fee Number(9,2) | The transaction amount. This parameter is transmitted by the corresponding request and needs to be returned with its original value.
|
#Notification trigger condition
Trigger condition name | Description | Note |
TRADE_FINISHED | Trade is completed successfully | true (trigger notification) |
WAIT_BUYER_PAY | Trade creation | false (does not trigger notification) |
TRADE_CLOSED | Trade closed | true (trigger notification) |
Please pay attention to the specifications when you use asynchronous notifications:
- Ensure that the Notification Page (as configured by
notify_url) is absolutely blank, without space, html tag, or any error messages threw from the program system. - Alipay sends the notification information in POST method.
- Asynchronous notification is only sent when a transaction exists in Alipay system and the transaction status is changed. For example, if the status of a real-time transaction is
WAIT_BUYER_PAY, no notification is sent. - For some interfaces, if both
return_urlandnotify_urlare passed, both synchronous redirection and asynchronous notification are used when a transaction reaches a final state. - Asynchronous notification is the interaction between servers, which, unlike interaction between websites, is usually not visible.
- After the notification is processed, the notification page must print "success" (without quote). If not, Alipay server keeps re-sending notification for the next 24 hours and 22 minutes. Generally, there are eight notifications within 25 hours (Frequency: 2m, 10m, 10m, 1h, 2h, 6h, 15h).
- After the notification is processed, the notification page must not redirect. Otherwise, Alipay will not recognize a "success" string. Alipay system will then regard it as an error and keep sending notification.
- Cookies and sessions are invalid on the notification page, which means these data cannot be captured.
- The configuration and testing of asynchronous notification must be on a server that is connected to internet.
- The main purpose of the asynchronous notification is to prevent loss of transaction orders. Even if a synchronous redirection fails, asynchronous notification can ensure that the merchant can still obtain the transaction information.
- Alipay uses
notify_idfor idempotence control of asynchronous notifications. When the merchant receives the asynchronous notification and prints "success", the parameternotify_idbecomes invalid. - Alipay might add new parameters (existing parameters will not change) along the way. When doing notification verification, merchants must use all parameters returned from Alipay, excluding
sign_typeandsign.
#Error codes
#Business errors
Returned Result | Description |
FOREX_MERCHANT_NOT_SUPPORT_THIS_CURRENCY | The currency is not supported. |
ILLEGAL_SECURITY_PROFILE | This kind of encryption is not supported. |
REPEAT_OUT_TRADE_NO | The out_trade_no parameter is duplicated. |
ILLEGAL_CURRENCY | Incorrect currency parameter |
ILLEGAL_TIMEOUT_RULE | Incorrect timeout_rule parameter |
SYSTEM_EXCEPTION | Alipay system error |
ILLEGAL_ARGUMENT | Incorrect parameter |
SECONDARY_MERCHANT_ID_BLANK | The secondary merchant ID is not provided to Alipay. |
SECONDARY_MERCHANT_ID_INVALID | The secondary merchant is not registered with Alipay. |
SECONDARY_MERCHANT_STATUS_ERROR | The status of secondary merchant is abnormal in the Alipay system. |
#Access errors
Returned Result | Description |
ILLEGAL_SIGN | Illegal signature |
ILLEGAL_SERVICE | Incorrect service parameter |
ILLEGAL_PARTNER | Incorrect partner ID |
ILLEGAL_SIGN_TYPE | Signature is of wrong type. |
ILLEGAL_PARTNER_EXTERFACE | Service is not activated for this account. |
ILLEGAL_DYN_MD5_KEY | Dynamic key information is incorrect. |
ILLEGAL_ENCRYPT | Encryption is incorrect. |
ILLEGAL_USER | User ID is incorrect. |
ILLEGAL_EXTERFACE | Interface configuration is incorrect. |
ILLEGAL_AGENT | Agency ID is incorrect. |
HAS_NO_PRIVILEGE | Not authorized to visit. |
INVALID_CHARACTER_SET | The character set is invalid. |
#System errors
Returned result | Description |
SYSTEM_ERROR | Alipay system error |
SESSION_TIMEOUT | Session timeout |
ILLEGAL_TARGET_SERVICE | Wrong target service |
ILLEGAL_ACCESS_SWITCH_SYSTEM | Merchant is not allowed to visit system of this type. |
EXTERFACE_IS_CLOSED | The interface has been closed. |
#Samples
#Request
Request sample for merchants directly integrated with Alipay
https://intlmapi.alipay.com/gateway.do?service=create_forex_trade&partner=208xxxxxxxxx6931&_input_charset=UTF-8&sign_type=MD5¬ify_url=http%3A%2F%2Fwww.mikascoffee.com%2Fnotify&return_url=http%3A%2F%2Fwww.mikascoffee.com%2Freturn¤cy=USD&product_code=NEW_OVERSEAS_SELLER&subject=Mika's%20capsule%20coffee&out_trade_no=out_trade_no_20190826_204550&total_fee=12&refer_url=http%3A%2F%2Fwww.mikascoffee.com&trade_information=%7B%22business_type%22%3A%224%22%2C%22goods_info%22%3A%22Mika's%20capsule%20coffee%5E1%22%2C%22total_quantity%22%3A%221%22%7D&sign=2f269efd5b601babfa8a698e65253ea3
Request sample for acquirers and system integrators with secondary merchants
https://intlmapi.alipay.com/gateway.do?service=create_forex_trade&partner=208xxxxxxxxx6931&_input_charset=UTF-8&sign_type=MD5¬ify_url=http%3A%2F%2Fwww.mikascoffee.com%2Fnotify&return_url=http%3A%2F%2Fwww.mikascoffee.com%2Freturn¤cy=USD&product_code=NEW_OVERSEAS_SELLER&subject=Mika's%20capsule%20coffee&out_trade_no=out_trade_no_20190826_204550&total_fee=12&secondary_merchant_id=1314520&secondary_merchant_name=China%20Substation&secondary_merchant_industry=5499&sign=0ef10a4855cfbd82d2c5865414104823
#Response
Synchronous response sample
http://www.mikascoffee.com/return?out_trade_no=out_trade_no_20190826_204553&total_fee=0.01&trade_status=TRADE_FINISHED&sign=777dac430d4177aa4683877951512613&trade_no=2019082622001336530599785994¤cy=USD&sign_type=MD5
http://www.mikascoffee.com/return
out_trade_no=out_trade_no_20190826_204553
total_fee=0.01
trade_status=TRADE_FINISHED
sign=777dac430d4177aa4683877951512613
trade_no=2019082622001336530599785994
currency=USD
sign_type=MD5

Asynchronous response sample
http://www.mikascoffee.com/notify?notify_id=2019082600222210609036530579173208¬ify_type=trade_status_sync&sign=$amp;trade_no=2019082622001336530599785994&total_fee=0.01&forex_rate=7.20211000¬ify_reg_time=2019-08-26 21%3A06%3A09.149&out_trade_no=out_trade_no_20190826_204553&rmb_fee=0.07¤cy=USD¬ify_time=2019-08-26 21%3A06%3A09&trade_status=TRADE_FINISHED&sign_type=MD5
http://www.mikascoffee.com/notify
notify_id=2019082600222210609036530579173208
notify_type=trade_status_sync
sign=$$
trade_no=2019082622001336530599785994
total_fee=0.01
forex_rate=7.20211000
notify_reg_time=2019-08-26 21:06:09.149
out_trade_no=out_trade_no_20190826_204553
rmb_fee=0.07
currency=USD
notify_time=2019-08-26 21:06:09
trade_status=TRADE_FINISHED
sign_type=MD5