FusionPay Payment API

This document is the official manual for FusionPay’s payment APIs.

Base URL

https://merchant.fusionpay.co.uk/api/v2
Payment APIs
POST /payment/barcode/{payment_channel}
POST /payment/qrcode/{payment_channel}
POST /payment/jsapi/wechat
POST /payment/app/wechat
POST /payment/fusioncode
GET /get-openid
POST /refund
GET /exchange-rate/{payment_channel}
GET /settlement
POST /payment/app/alipay-online
POST /payment/web/alipay-online
POST /payment/wap/alipay-online
Barcode Payment
POST /payment/barcode/{payment_channel}

Authentication

Signature

Create a barcode payment (Merchant scans buyer’s payment barcode)

Path variables

payment_channel
string required

Payment channel

Examples:
alipaywechat

Request parameters

client_id
string required

Client ID

Example:
fp0001
sign
string required

Verification signature generated using API key. Signature-Verification

barcode
number required

Barcode

amount
string required

Payment amount in base currency

Example:
0.01
reference
string optional

Order reference.

Example:
reference BarcodePay
order_title
string optional

Order title

out_trade_no
string optional

Transaction number used to identify a payment transaction throughout its life cycle. A number will be generated by FusionPay if it not provided by client. The number must be unique and only contains alphanumeric characters and .(dot) _ (underscore) or - (hyphen)

Max length: 32
Example:
190326.1107-151000_180101
order_detail
string optional

Order detail

Example:
demo AliPay BarcodePay detail
currency
string optional

Use this parameter when you need to price the product in GBP or EUR.

Default:
GBP
Example:
GBP; EUR
device_id
string optional

Device ID

Max length: 8
Example:
d123
operator_id
string optional

Operator ID

Example:
operator_id BarcodePay
extended_info
string optional

Extended information

Example:
extended_info BarcodePay
passback_info
string optional

Info to pass back to merchant as it is

Example:
passback_info BarcodePay
trans_currency
string optional

Only use this parameter when you need to price the product in CNY: trans_currency=CNY.

Example:
CNY

Responses

200 OK

Transaction success

Body
application/json;charset=UTF-8
Object
payment_channel
string

Payment channel

Examples:
AlipayWechat
payment_method
string

Payment method

Example:
Barcode
transaction_status
string

Transaction status

Example:
TRADE_SUCCESS
transaction_details

Transaction details object

created_at
string

Created time of the transaction

Example:
2019-03-26 11:07:18
400 Error Response
Example Response

An example response of a succussful transaction

{  
   "payment_channel":"Alipay",
   "payment_method":"Barcode",
   "out_trade_no":"1903261107151000180101",
   "transaction_status":"TRADE_SUCCESS",
   "transaction_details":
   {  
      "payment_channel":"Alipay",
      "transaction_status":"TRADE_SUCCESS",
      "out_trade_no":"1903261107151000180101",
      "trade_no":"2019032622001432010567448114",
      "currency":"GBP",
      "amount":"0.01",
      "order_time":"2019-03-26 11:07:15",
      "amount_cny":"0.09",
      "payment_time":"2019-03-26 11:07:17",
      "exchange_rate":"8.87281000",
      "refunded_amount":"0"
   },
   "created_at":"2019-03-26 11:07:18"
}
Create Payment QRCode
POST /payment/qrcode/{payment_channel}

Authentication

Signature

Create a pre-payment and return a payment URL used to generate a QRcode. (Buyer will then scan the QRcode and make a payment)

Path variables

payment_channel
string required

Payment channel

Examples:
alipaywechat

Request parameters

client_id
string required

Client ID

Example:
fp0001
sign
string required

Verification signature generated using API key. Signature-Verification

amount
number required

Payment amount in base currency

reference
string optional

A reference of the trade.

Example:
reference QRCode
out_trade_no
string optional

Transaction number used to identify a payment transaction throughout its life cycle. A number will be generated by FusionPay if it not provided by client. The number must be unique and only contains alphanumeric characters and .(dot) _ (underscore) or - (hyphen)

Max length: 32
Example:
2010-5678_1800.12033
notify_url
string uri optional

The URL you want the asynchronous payment status notification to be post to. No notification will be sent if this URL is not specified. Asynchronous Notification

Max length: 256
Example:
https://www.mywebiste.com/notify
order_title
string optional

Order title

order_detail
string optional

Order detail

Example:
FusionPay qrcode order
currency
string optional

Base currency

Default:
GBP
Example:
GBP; EUR
device_id
string optional

Device ID

Max length: 8
Example:
d123
operator_id
string optional

Operator ID

Example:
operator_id QRCode
extended_info
string optional

Extended information

Example:
extended_info QRCode
passback_info
string optional

Info to pass back to merchant as it is

Example:
passback_info QRCode
trans_currency
string optional

Only use this parameter when you need to price the product in CNY: trans_currency=CNY.

Responses

200 OK

Success

Body
application/json;charset=UTF-8
Object
payment_channel
string

Payment channel

Examples:
AlipayWechat
payment_method
string

Payment method

Example:
Qrcode
out_trade_no
string

Unique FusionPay transaction number

Example:
1903261036161000127869
qr_code
string

QR code - use a library of your choice to make a QR code of this URL

Example:
https://qr.alipay.com/bax043914vdiesvabjss00b6
created_at
string

Created time

Example:
2019-03-26 10:36:17
400 Error Response
Example Response

An example response of a successful operation.

{  
   "payment_channel":"Alipay",
   "payment_method":"Qrcode",
   "out_trade_no":"1903261036161000127869",
   "qr_code":"https://qr.alipay.com/bax043914vdiesvabjss00b6",
   "created_at":"2019-03-26 10:36:17"
}
JSAPI Payment (Wechat Only)
POST /payment/jsapi/wechat

Authentication

Signature

Create a pre-payment and return the parameters required by Wechat JSAPI or Mini-Program payment

Request parameters

client_id
string required

Client ID

Example:
fp0001
sign
string required

Verification signature generated using API key. Signature-Verification

amount
number required

Payment amount in base currency

openid
string required

Wechat openid

appid
string optional

Mini-Program appid (required for Wechat Mini-Program payment)

reference
string optional

A reference of the trade.

Example:
reference QRCode
out_trade_no
string optional

Transaction number used to identify a payment transaction throughout its life cycle. A number will be generated by FusionPay if it not provided by client. The number must be unique and only contains alphanumeric characters and .(dot) _ (underscore) or - (hyphen)

Max length: 32
Example:
20102_1234.5678-1100
notify_url
string uri optional

The URL you want the asynchronous payment status notification to be post to. No notification will be sent if this URL is not specified. Asynchronous Notification

Max length: 256
Example:
https://www.mywebiste.com/notify
order_title
string optional

Order title

order_detail
string optional

Order detail

Example:
FusionPay qrcode order
currency
string optional

Base currency

Default:
GBP
Example:
GBP; EUR
device_id
string optional

Device ID

Max length: 8
Example:
d123
operator_id
string optional

Operator ID

Example:
operator_id QRCode
extended_info
string optional

Extended information

Example:
extended_info QRCode
passback_info
string optional

Info to pass back to merchant as it is

Example:
passback_info QRCode
trans_currency
string optional

Only use this parameter when you need to price the product in CNY: trans_currency=CNY.

Example:
CNY

Responses

200 OK

Success

Body
application/json;charset=UTF-8
Object
payment_channel
string

Payment channel

Example:
Wechat
payment_method
string

Payment method

Examples:
JsapiMini-Program
out_trade_no
string

Unique FusionPay transaction number

Example:
1903261036161000127869
jsapi_parameters
Object

Parameters required by Wechat JSPAI or Mini-Program payment

appId
string

appId

Example:
wxf19a14ab2ea3e2af
timeStamp
string

timeStamp

Example:
1553737670
nonceStr
string

nonceStr

Example:
4da9b0f9dfbed16a427dde386fa8a06a
package
string

package

Example:
prepay_id=wx28094749859359449e5ba0540163092144
signType
string

signType

Example:
MD5
paySign
string

paySign

Example:
ccf13fa993f75cee99df548cc957daf5
created_at
string

Created time

Example:
2019-03-26 10:36:17
400 Error Response
Example Response
{  
   "payment_channel":"Wechat",
   "payment_method":"Jsapi",
   "out_trade_no":"1903280147481000280039",
   "jsapi_parameters":{  
      "appId":"wxf19a14ab2ea3e2af",
      "timeStamp":"1553737670",
      "nonceStr":"4da9b0f9dfbed16a427dde386fa8a06a",
      "package":"prepay_id=wx28094749859359449e5ba0540163092144",
      "signType":"MD5",
      "paySign":"ccf13fa993f75cee99df548cc957daf5"
   },
   "created_at":"2019-03-28 01:47:50"
}
APP Payment (Wechat Only)
POST /payment/app/wechat

Authentication

Signature

Create a pre-payment and return the parameters required by Wechat App payment

Request parameters

client_id
string required

Client ID

Example:
fp0001
sign
string required

Verification signature generated using API key. Signature-Verification

amount
number required

Payment amount in base currency

appid
string required

Wechat Open Platform appid

reference
string optional

A reference of the trade.

Example:
reference QRCode
out_trade_no
string optional

Transaction number used to identify a payment transaction throughout its life cycle. A number will be generated by FusionPay if it not provided by client. The number must be unique and only contains alphanumeric characters and .(dot) _ (underscore) or - (hyphen)

Max length: 32
Example:
20102_1234.5678-1100
notify_url
string uri optional

The URL you want the asynchronous payment status notification to be post to. No notification will be sent if this URL is not specified. Asynchronous Notification

Max length: 256
Example:
https://www.mywebiste.com/notify
order_title
string optional

Order title

order_detail
string optional

Order detail

Example:
FusionPay qrcode order
currency
string optional

Base currency

Default:
GBP
Example:
GBP; EUR
device_id
string optional

Device ID

Max length: 8
Example:
d123
operator_id
string optional

Operator ID

Example:
operator_id QRCode
extended_info
string optional

Extended information

Example:
extended_info QRCode
passback_info
string optional

Info to pass back to merchant as it is

Example:
passback_info QRCode
trans_currency
string optional

Only use this parameter when you need to price the product in CNY: trans_currency=CNY.

Example:
CNY

Responses

200 OK

Success

Body
application/json;charset=UTF-8
Object
payment_channel
string

Payment channel

Example:
Wechat
payment_method
string

Payment method

Example:
App
out_trade_no
string

Unique FusionPay transaction number

Example:
1903261036161000127869
app_date
Object

Parameters required by Wechat App payment

partnerid
string

Wechat merchant no.

Example:
288114271
prepayid
string

prepayid

Example:
wx151033414816438de6e014401649341493
package
string

package

Example:
Sign=WXPay
appid
string

appid

Example:
wxf19a14ab2ea3e2af
noncestr
string

noncestr

Example:
4da9b0f9dfbed16a427dde386fa8a06a
sign
string

sign

Example:
ccf13fa993f75cee99df548cc957daf5
created_at
string

Created time

Example:
2019-03-26 10:36:17
400 Error Response
Example Response
{  
   "payment_channel":"Wechat",
   "payment_method":"App",
   "out_trade_no":"1903280147481000280039",
   "app_date":{
       "partnerid":"288114271",
       "prepayid":"wx151033414816438de6e014401649341493",
       "package":"Sign=WXPay",
       "timestamp":1557887621,
       "appid":"wxd8f62123456a",
       "noncestr":"7117658dddd2b674a8bb0f2fac2de1eb",
       "sign":"6d8b11fba8470ff7af450c14c0ced175"
   },
   "created_at":"2019-03-28 01:47:50"
}
FusionCode
POST /payment/fusioncode

Authentication

Signature

Request parameters

client_id
string required

Client ID

Example:
fp0001
sign
string required

Verification signature generated using API key. Signature-Verification

amount
number optional

Payment amount in base currency. Code scanner’s input if not specified

Example:
0.01
payment_channel
string optional

Both alipay and wechat if not specified

Example:
alipay; wechat
valid_time
number optional

Payment is repeatable if not specified. Unit:Minute

Example:
60
reference
string optional

A reference of the trade.

Example:
reference QRCode
out_trade_no
string optional

Transaction number used to identify a payment transaction throughout its life cycle. A number will be generated by FusionPay if it not provided by client. The number must be unique and only contains alphanumeric characters and .(dot) _ (underscore) or - (hyphen)

notify_url
string uri optional

The URL you want the asynchronous payment status notification to be post to. No notification will be sent if this URL is not specified. Asynchronous Notification

Max length: 256
Example:
https://www.mywebiste.com/notify
order_title
string optional

Order title

order_detail
string optional

Order detail

Example:
FusionPay qrcode order
currency
string optional

Base currency

Default:
GBP
Example:
GBP; EUR
device_id
string optional

Device ID

Max length: 8
Example:
d123
operator_id
string optional

Operator ID

Example:
operator_id QRCode
extended_info
string optional

Extended information

Example:
extended_info QRCode
passback_info
string optional

Info to pass back to merchant as it is

Example:
passback_info QRCode
trans_currency
string optional

Only use this parameter when you need to price the product in CNY: trans_currency=CNY.

Example:
CNY

Responses

200 OK

Success

Body
application/json;charset=UTF-8
Object
payment_channel
string

Payment channel

Examples:
AlipayWechat
payment_method
string

Payment method

Example:
Qrcode
out_trade_no
string

Unique FusionPay transaction number

Example:
1903261036161000127869
qr_code
string

QR code - use a library of your choice to make a QR code of this URL

Example:
https://qr.alipay.com/bax043914vdiesvabjss00b6
created_at
string

Created time

Example:
2019-03-26 10:36:17
400 Error Response
Example Response

An example response of a successful operation.

{  
   "payment_channel":"Alipay",
   "payment_method":"Qrcode",
   "out_trade_no":"1903261036161000127869",
   "qr_code":"https://qr.alipay.com/bax043914vdiesvabjss00b6",
   "created_at":"2019-03-26 10:36:17"
}
Get Openid (Wechat Only)
GET /get-openid

Authentication

Signature

Retrieve openid required by Wechat JSPAI payment.

Request parameters

client_id
string required

Client ID

Example:
fp0001
sign
string required

Verification signature generated using API key. Signature-Verification

client_url
string url required

The URL to which the openid is to be forwarded as a query parameter

Example:
https://www.mywebiste.com/jsapi/payment (must have at least 1 level of subdirectory)
Query Transaction Status
GET /query

Authentication

Signature

Query transaction status by out_trade_no

Request parameters

client_id
string required

Client ID

Example:
fp0001
sign
string required

Verification signature generated using API key. Signature-Verification

out_trade_no
string required

FusionPay transaction number used to identify a payment transaction throughout its life cycle. The number must be unique and only contains alphanumeric characters and .(dot) _ (underscore) or - (hyphen)

Max length: 32
Example:
2010-2112_0099.0123

Responses

200 OK

Success

Body
application/json;charset=UTF-8
Object
payment_channel
string

Payment channel

Examples:
AlipayWechat
payment_method
string

Payment method

Examples:
QrcodeBarcode
out_trade_no
string

Unique FusionPay transaction number

Example:
201903130348001000010360412
transaction_status
string

Transacion status

Example:
TRADE_SUCCESS
transaction_details
queried_at
string

Query time

Example:
2019-03-26 11:57:14
400 Error Response
Example Response

An example response of a succussful query

{  
   "payment_channel":"Alipay",
   "payment_method":"Qrcode",
   "out_trade_no":"201903130348001000010360412",
   "transaction_status":"TRADE_SUCCESS",
   "transaction_details":
   {  
      "payment_channel":"Alipay",
      "transaction_status":"TRADE_SUCCESS",
      "out_trade_no":"201903130348001000010360412",
      "trade_no":"2019031322001429181022765873",
      "currency":"GBP",
      "amount":"0.01",
      "order_time":"2019-03-13 03:48:00",
      "amount_cny":"0.09",
      "payment_time":"2019-03-13 04:18:27",
      "exchange_rate":"8.79754738",
      "refunded_amount":"0"
   },
   "queried_at":"2019-03-26 11:57:14"
}
Refund
POST /refund

Authentication

Signature

Request parameters

client_id
string required

Client ID

Example:
fp0001
sign
string required

Verification signature generated using API key. Signature-Verification

out_trade_no
string required

FusionPay transaction number used to identify a payment transaction throughout its life cycle. The number must be unique and only contains alphanumeric characters and .(dot) _ (underscore) or - (hyphen)

Max length: 32
Example:
2010-2112_0099.0123
amount
number required

Amount in base currency

out_refund_no
string optional

Unique FusionPay refund number. A number will generated by FusionPay if not provided. The number must be unique.

reference
string optional

Reference

Example:
reference refund
currency
string optional

Base currency

Example:
GBP; EUR; CNY
device_id
string optional

Device ID

Example:
device_id demo
operator_id
string optional

Operator ID

Example:
operator_id demo

Responses

200 OK

Refund success

Body
application/json;charset=UTF-8
Object
out_refund_no
string

Unique FusionPay refund number

Example:
190326110715100018010132577
refund_status
string

Refund status

Example:
REFUND_SUCCESS
refund_amount
string

Refund amount

Example:
0.01
refund_details

Refund_details

out_trade_no
string

out_trade_no

Example:
1903261107151000180101
transaction_status
string

Transaction status

Example:
REFUNDED
transaction_details

Transaction details

requested_at
string

Refund requested time

Example:
2019-03-26 12:18:32
400 Error Response
Example Response

An example response of a successful refund

{  
   "out_refund_no":"190326110715100018010132577",
   "refund_status":"REFUND_SUCCESS",
   "refund_amount":"0.01",
   "refund_details":
   {  
      "payment_channel":"Alipay",
      "refund_status":"REFUND_SUCCESS",
      "out_refund_no":"190326110715100018010132577",
      "refund_no":"2019032622001432010567448114",
      "out_trade_no":"1903261107151000180101",
      "currency":"GBP",
      "amount":"0.01",
      "refund_time":"2019-03-26 12:18:32",
      "amount_cny":"0.09",
      "exchange_rate":"8.87281000"
   },
   "out_trade_no":"1903261107151000180101",
   "transaction_status":"REFUNDED",
   "transaction_details":
   {  
      "payment_channel":"Alipay",
      "transaction_status":"REFUNDED",
      "out_trade_no":"1903261107151000180101",
      "trade_no":"2019032622001432010567448114",
      "currency":"GBP",
      "amount":"0.01",
      "order_time":"2019-03-26 11:07:15",
      "amount_cny":"0.09",
      "payment_time":"2019-03-26 11:07:17",
      "exchange_rate":"8.87281000",
      "refunded_amount":0.01
   },
   "requested_at":"2019-03-26 12:18:32"
}
Query Exchange Rate
GET /exchange-rate/{payment_channel}

Authentication

Signature

Path variables

payment_channel
string required

“alipay” or “wechat”

Examples:
alipaywechat

Request parameters

client_id
string required

Client ID

Example:
fp0001
sign
string required

Verification signature generated using API key. Signature-Verification

currency
string optional

Base currency

Default:
GBP
Example:
GBP; EUR

Responses

200 OK

Successful query

Body
application/json;charset=UTF-8
Object
payment_channel
string

Payment channel

Examples:
alipaywechat
exchange_rate
string

Exchange rate (base currency to CNY)

Example:
8.923670
rate_date
string

Date of the exchange rate (only the query date currently)

Example:
2019-03-26
queried_at
string

Query time

Example:
2019-03-26 12:54:08
400 Error Response
Example Response

An example response of a successful query

{  
   "payment_channel":"alipay",
   "exchange_rate":"8.923670",
   "rate_date":"2019-03-26",
   "queried_at":"2019-03-26 12:54:08"
}
Download Settlement
GET /settlement

Authentication

Signature

Download settlement file.

Request parameters

client_id
string required

Client ID

Example:
fp0001
sign
string required

Verification signature generated using API key. Signature-Verification

settlement_date
string required

Settlement date

Example:
20200223
currency
string required

Base currency

Example:
GBP; EUR

Responses

200 OK

Settlement file in a CSV format

Body
text/plain

Transaction Date,Payment Details,Out Trade No,Trade No,Payment Type,Currency,Transaction Amount,Transaction Rate,Transaction Fee,Settlement Amount 2020/02/11,test1,Q010001X20021112381482590002145191944,50000103472020021114648470612,Wechat Pay,GBP,0.01,1.2%, 0,0.01 2020/02/11,test2,Q010001X20021112381482590002145191945,50000103472020021114648470613,Wechat Pay,GBP,0.10,1.2%, 0.01,0.09

400 Error Response
Alipay Online (APP)
POST /payment/app/alipay-online

Authentication

Signature

Request parameters

client_id
string required

Client ID

Example:
fp0001
sign
string required

Verification signature generated using API key. Signature-Verification

amount
number required

Payment amount in base currency or, if specified, trans_currency

Example:
0.01
reference
string optional

A reference of the trade.

Example:
reference 123
out_trade_no
string optional

Transaction number used to identify a payment transaction throughout its life cycle. A number will be generated by FusionPay if it not provided by client. The number must be unique and only contains alphanumeric characters and .(dot) _ (underscore) or - (hyphen)

Max length: 32
Example:
20102_1234.5678-1100
notify_url
string uri optional

The URL you want the asynchronous payment status notification to be post to. No notification will be sent if this URL is not specified. Asynchronous Notification

Max length: 256
Example:
https://www.mywebiste.com/notify
order_title
string optional

Order title

order_detail
string optional

Order detail

Example:
FusionPay order
currency
string optional

Base currency

Default:
GBP
Example:
GBP; EUR
trans_currency
string optional

Only use this parameter when you need to price the product in CNY: trans_currency=CNY.

Example:
CNY

Responses

200 OK

Success

Body
application/json;charset=UTF-8
Object
payment_channel
string

Payment channel

Example:
Alipay-Online
payment_method
string

Payment method

Example:
App
out_trade_no
string

Unique FusionPay transaction number

Example:
120062313425610000151408
system_trade_no
string
Example:
120062313425610000151408
app_data
Object

Parameters required by Alipay online App payment

input_charset
string
Example:
UTF-8
sign_type
string
Example:
MD5
service
string
Example:
mobile.securitypay.pay
notify_url
string
Example:
https%3A%2F%2Fmerchant.fusionpay.co.uk%2Fapi%2Fv2%2Fnotify%2Fsgao
subject
string
Example:
Demo+Wechat+Jsapi+order_title
body
string
Example:
Demo+Wechat+Jsapi+order_detail
out_trade_no
string
Example:
120062313425610000151408
payment_type
string
Example:
1
seller_id
string
Example:
2088231755155260
currency
string
Example:
GBP
total_fee
string
Example:
0.01
forex_biz
string
Example:
FP
secondary_merchant_id
string
Example:
on200100001
secondary_merchant_name
string
Example:
FusionPay+Demo+Merchant
secondary_merchant_industry
string
Example:
4816
product_code
string
Example:
NEW_WAP_OVERSEAS_SELLER
trade_information
string
Example:
%7B%22business_type%22%3A%225%22%2C+%22other_business_type%22%3A+%22PARTNER+FUSIONPAY+PAYMENT%22%7D
return_url
string
Example:
https%3A%2F%2Fmerchant.fusionpay.co.uk%2Fapi%2Fv2%2Freturn%2Fsgao%2Fapp
partner
string
Example:
2088231755155260
sign
string

sign

Example:
ccf13fa993f75cee99df548cc957daf5
created_at
string

Created time

Example:
2019-03-26 10:36:17
400 Error Response
Example Response
{
   "payment_channel":"Alipay-Online",
   "payment_method":"App",
   "out_trade_no":"120062313425610000151408",
   "system_trade_no":"120062313425610000151408",
   "app_data":"_input_charset=UTF-8&sign_type=MD5&service=mobile.securitypay.pay&notify_url=https%3A%2F%2Fmerchant.fusionpay.co.uk%2Fapi%2Fv2%2Fnotify%2Fsgao&subject=Demo+Wechat+Jsapi+order_title&body=Demo+Wechat+Jsapi+order_detail&out_trade_no=120062313425610000151408&payment_type=1&seller_id=2088231755155260&currency=GBP&total_fee=0.01&forex_biz=FP&secondary_merchant_id=on200100001&secondary_merchant_name=FusionPay+Demo+Merchant&secondary_merchant_industry=4816&product_code=NEW_WAP_OVERSEAS_SELLER&trade_information=%7B%22business_type%22%3A%225%22%2C+%22other_business_type%22%3A+%22PARTNER+FUSIONPAY+PAYMENT%22%7D&return_url=https%3A%2F%2Fmerchant.fusionpay.co.uk%2Fapi%2Fv2%2Freturn%2Fsgao%2Fapp&partner=2088231755155260&sign=6803916aa257b8dd9e55c22210bfe1ac",
   "created_at":"2020-06-23 13:42:56"
}
Alipay Online (Web)
POST /payment/web/alipay-online

Authentication

Signature

Request parameters

client_id
string required

Client ID

Example:
fp0001
sign
string required

Verification signature generated using API key. Signature-Verification

amount
number required

Payment amount in base currency or, if specified, trans_currency

Example:
0.01
return_url
string required

Return URL

Example:
https://www.mywebiste.com/return
reference
string optional

A reference of the trade.

Example:
reference 123
out_trade_no
string optional

Transaction number used to identify a payment transaction throughout its life cycle. A number will be generated by FusionPay if it not provided by client. The number must be unique and only contains alphanumeric characters and .(dot) _ (underscore) or - (hyphen)

Max length: 32
Example:
20102_1234.5678-1100
notify_url
string uri optional

The URL you want the asynchronous payment status notification to be post to. No notification will be sent if this URL is not specified. Asynchronous Notification

Max length: 256
Example:
https://www.mywebiste.com/notify
order_title
string optional

Order title

Example:
Order 1
order_detail
string optional

Order detail

Example:
demo AliPay web order detail
currency
string optional

Base currency

Default:
GBP
Example:
GBP; EUR
trans_currency
string optional

Only use this parameter when you need to price the product in CNY: trans_currency=CNY.

Example:
CNY
device_id
string optional

Device ID (Max:8)

Example:
di_123
operator_id
string optional
Example:
operator_id 123
extended_info
string optional
Example:
extended_info 123
passback_info
string optional
Example:
passback_info 123
Example Payment Url
Example Response Url

Example payment page with Alipay QR code.

https://intlmapi.alipay.com/gateway.do?_input_charset=UTF-8&sign_type=MD5&service=create_forex_trade&return_url=https%3A%2F%2Fmerchant.fusionpay.co.uk%2Fapi%2Fv2%2Freturn%2Fsgao%2Fweb&notify_url=https%3A%2F%2Fmerchant.fusionpay.co.uk%2Fapi%2Fv2%2Fnotify%2Fsgao&subject=FusionPay+Demo+Merchant&body=demo+AliPay+web+order+detail&out_trade_no=120063015105310000186978&currency=GBP&total_fee=0.01&supplier=FusionPay+Demo+Merchant&secondary_merchant_id=on200100001&secondary_merchant_name=FusionPay+Demo+Merchant&secondary_merchant_industry=4816&product_code=NEW_OVERSEAS_SELLER&partner=2088231755155260&sign=feb5a9f8f0e207b1f3eb14aa09eb1ca9

Example response url for return_url=https://www.mywebiste.com/return

https://www.mywebiste.com/return?system_trade_no=120070114553410000213756&out_trade_no=120070114553410000213756&amount=0.01&currency=GBP&client_id=test_user&sign=dba2c05c63f085019cf2bc90fc37344a
Alipay Online (WAP)
POST /payment/wap/alipay-online

Authentication

Signature

Request parameters

client_id
string required

Client ID

Example:
fp0001
sign
string required

Verification signature generated using API key. Signature-Verification

amount
number required

Payment amount in base currency or, if specified, trans_currency

Example:
0.01
return_url
string required

Return URL

Example:
https://www.mywebiste.com/return
reference
string optional

A reference of the trade.

Example:
reference 1
out_trade_no
string optional

Transaction number used to identify a payment transaction throughout its life cycle. A number will be generated by FusionPay if it not provided by client. The number must be unique and only contains alphanumeric characters and .(dot) _ (underscore) or - (hyphen)

Max length: 32
Example:
20102_1234.5678-1100
notify_url
string uri optional

The URL you want the asynchronous payment status notification to be post to. No notification will be sent if this URL is not specified. Asynchronous Notification

Max length: 256
Example:
https://www.mywebiste.com/notify
order_title
string optional

Order title

Example:
Order 1
order_detail
string optional

Order detail

Example:
FusionPay order
currency
string optional

Base currency

Default:
GBP
Example:
GBP; EUR
trans_currency
string optional

Only use this parameter when you need to price the product in CNY: trans_currency=CNY.

Example:
CNY
device_id
string optional

Device ID (Max:8)

Example:
di_123
operator_id
string optional
Example:
operator_id 123
extended_info
string optional
Example:
extended_info 123
passback_info
string optional
Example:
passback_info 123
Example Response Url

The example response url for return_url=https://www.mywebiste.com/return

https://www.mywebiste.com/return?system_trade_no=120070114553410000213756&out_trade_no=120070114553410000213756&amount=0.01&currency=GBP&client_id=test_user&sign=dba2c05c63f085019cf2bc90fc37344a
References

Common parameters and references

Signature Verification

Signatures (MD5 digests) are used to verify incoming API requests and sign outgoing asynchronous notifications.
An API key is required to generate the signature. The API key can be requested from FusionPay customer service.
*The API key itself should not be sent with the request.

Steps to generate a signature for request prarmeters:
Pseudocode
$parameters = {"c":123,"b":"xyz","a":null,"d":"", "e":{"f":"abc","g":"000"}, "sign":"06f131c90bf08eceea2aa5fff5f90ed7" }

  1. Sort the parameters by parameter names.
    $parameters = {"a":null,"b":"xyz","c":123,"d":"", "e":{"f":"abc","g":"000"}, , "sign":"06f131c90bf08eceea2aa5fff5f90ed7"}
  2. Delete parameters with empty value, null value, object or array. Also delete the “sign” if there is one i.e. in asynchronous notifications.
    $parameters = {"b":"xyz","c":123}
  3. Generate a query string.
    $query_string = "b=xyz&c=123"
  4. Add API key to the end of the query string.
    $temp_string = "b=xyz&c=123{$api_key}"
  5. Generate a MD5 signature and use this as the value of the common paramter named ‘sign’.
    $signature=md5($temp_string)
    $query_string = "b=xyz&c=123&sign={$signature}"
Asynchronous Notification

Asynchronous notifications will be sent to merchant’s notify_url after a pending transaction has been processed. The URL must print SUCCESS after receiving the notification. Otherwise, multiple notifications will be sent.

Object
payment_channel
string

Payment channel

Examples:
AlipayWechat
payment_method
string

Payment method

Examples:
QrcodeJsapi
out_trade_no
string

Unique FusionPay transaction number

Example:
1903261107151000180101
transaction_status

Transaction status transaction_status

transaction_details
Object

Transaction details (Should be exluded during signature verification Signature-Verification)

payment_channel
string

Payment channel

Examples:
AlipayWechat
transaction_status

Transaction status transaction_status

out_trade_no
string

Unique FusionPay transaction number

Example:
1903261107151000180101
trade_no
string

Unique transaction number assigned by the paymenet Channel

Example:
2019032622001432010567448114
currency
string

Base currency (only GBP is supported currently)

Example:
GBP
amount
string

Payment amount in base currency

Example:
0.01
order_time
string

Order time (UK)

Example:
2019-03-26 11:07:15
amount_cny
string

Payment amount in CNY

Example:
0.09
payment_time
string

Payment time (UK)

Example:
2019-03-26 11:07:17
exchange_rate
string

Exchange rate (CNY to base currency)

Example:
8.87281000
refunded_amount
string

Refunded amount in base currecny

Example:
0
notified_at
string

Notification sent time

Example:
2019-03-26 11:07:18
sign
string
Example:
06f131c90bf08eceea2aa5fff5f90ed7
Example Notification
{
    "payment_channel": "Alipay",
    "payment_method": "Barcode",
    "out_trade_no": "1903261107151000180101",
    "transaction_status": "TRADE_SUCCESS",
    "transaction_details": {
        "payment_channel": "Alipay",
        "transaction_status": "TRADE_SUCCESS",
        "out_trade_no": "1903261107151000180101",
        "trade_no": "2019032622001432010567448114",
        "currency": "GBP",
        "amount": "0.01",
        "order_time": "2019-03-26 11:07:15",
        "amount_cny": "0.09",
        "payment_time": "2019-03-26 11:07:17",
        "exchange_rate": "8.87281000",
        "refunded_amount": "0"
    },
    "notified_at": "2019-03-26 11:07:18",
    "sign": "06f131c90bf08eceea2aa5fff5f90ed7"
}
400 Error Response
Applied to all operations
Body
application/json;charset=UTF-8
Object
state
string

State (always error)

Example:
error
code
string

Code

Example:
INVALID_SIGN
message
string

Message

Example:
invalid sign
Examples

An example of a failed operation

{
    "state": "error",
    "code": "INVALID_SIGN",
    "message": "invalid sign"
}
client_id
string required
Applied to all operations

Client ID

Example:
fp0001
sign
string required
Applied to all operations

Verification signature generated using API key. Signature-Verification

out_trade_no
string required

FusionPay transaction number used to identify a payment transaction throughout its life cycle. The number must be unique and only contains alphanumeric characters and .(dot) _ (underscore) or - (hyphen)

Max length: 32
Example:
2010-2112_0099.0123
notify_url
string uri optional

The URL you want the asynchronous payment status notification to be post to. No notification will be sent if this URL is not specified. Asynchronous Notification

Max length: 256
Example:
https://www.mywebiste.com/notify
transaction_status

Transaction status

string
Enumeration:
WAIT_BUYER_PAY

Waiting for buyer to make payment. Use the query API to query status.

TRADE_SUCCESS

Payment succeeded and is operable, such as refund.

TRADE_FINISHED

Payment succeeded and is not operable.

TRADE_CLOSED

Payment has not been completed within specified time.

TRADE_FAILED

Payment failed.

STATUS_UNKNOWN

Payment status unknow. Use the query API to query status.

PARTIAL_REFUNDED

Payment has been partially refunded.

REFUNDED

Payment has been fully refunded.

refund_status

Refund status

string
Enumeration:
REFUND_SUCCESS

Refund succeeded.

REFUND_FAILED

Refund failed.

STATUS_UNKNOWN

Refund status unknow. Use the query API to query status.

transaction_details

Transaction details

Object
Example:
{
    "payment_channel": "Alipay",
    "transaction_status": "TRADE_SUCCESS",
    "out_trade_no": "1903261107151000180101",
    "trade_no": "2019032622001432010567448114",
    "currency": "GBP",
    "amount": "0.01",
    "order_time": "2019-03-26 11:07:15",
    "amount_cny": "0.09",
    "payment_time": "2019-03-26 11:07:17",
    "exchange_rate": "8.87281000",
    "refunded_amount": "0.01"
}
payment_channel
string

Payment channel

Examples:
AlipayWechat
transaction_status

Transaction status transaction_status

out_trade_no
string

Unique FusionPay transaction number

Example:
1903261107151000180101
trade_no
string

Unique transaction number assigned by the paymenet Channel

Example:
2019032622001432010567448114
currency
string

Base currency (only GBP is supported currently)

Example:
GBP
amount
string

Payment amount in base currency

Example:
0.01
order_time
string

Order time (UK)

Example:
2019-03-26 11:07:15
amount_cny
string

Payment amount in CNY

Example:
0.09
payment_time
string

Payment time (UK)

Example:
2019-03-26 11:07:17
exchange_rate
string

Exchange rate (CNY to base currency)

Example:
8.87281000
refunded_amount
string

Refunded amount in base currecny

Example:
0.01
passback_info
string

Info to pass back to merchant as it is

Example:
pass this back to
refund_details

Refund details

Object
Example:
{
    "payment_channel": "Alipay",
    "refund_status": "REFUND_SUCCESS",
    "out_refund_no": "",
    "refund_no": "2019032622001432010567448114",
    "out_trade_no": "1903261107151000180101",
    "currency": "GBP",
    "amount": "0.01",
    "refund_time": "2019-03-26 11:07:17",
    "amount_cny": "0.09",
    "exchange_rate": "8.87281000"
}
payment_channel
string

Payment channel

Examples:
AlipayWechat
refund_status

Refund status

out_refund_no
string

Unique FusionPay refund number

refund_no
string

Unique refund number assigned by the paymenet Channel

Example:
2019032622001432010567448114
out_trade_no
string

Unique FusionPay transaction number

Example:
1903261107151000180101
currency
string

Base currency (only GBP is supported currently)

Example:
GBP
amount
string

Payment amount in base currency

Example:
0.01
refund_time
string

Refund time (UK)

Example:
2019-03-26 11:07:17
amount_cny
string

Payment amount in CNY

Example:
0.09
exchange_rate
string

Exchange rate (CNY to base currency)

Example:
8.87281000
Methods: Refund