跳到主要内容

支付方式代码

注意

验证您的API证书支持当前选中的pay_type.

支付类型

编码描述
800008微信、支付宝﹑银联云闪付反扫支付
800101支付宝跨境线下扫码支付
800108支付宝跨境反扫支付
801101支付宝线上上扫码支付 (海外商戶) **
801107支付宝线上上WAP支付 (海外商戶)
801110支付宝In-App支付 (海外商戶)
800107支付宝服务窗H5跨境支付
801501支付宝线上扫码支付 (香港商戶)
801510支付宝In-App支付 (香港商戶)
801512支付宝线上WAP支付 (香港商戶)
801514支付宝线上WEB支付 (香港商戶)
800201微信扫码支付
800208微信反扫支付
800207微信JSAPI支付 (微信公众号支付)
800212微信移动端浏览器H5跨境支付
800210微信 In-App 支付
800213微信小程序支付
801008微信香港反扫支付 (适用于向微信香港申请的商戶)
801010微信香港In-App支付 (适用于向微信香港申请的商戶)
805801PayMe 扫码支付
805808PayMe 反扫支付
805814PayMe 线上WEB支付 (香港商戶)
805812PayMe 线上WAP支付 (香港商戶)
800701银联云闪付扫码支付
800708银联云闪付反扫支付
800712银联云闪付WAP支付 (香港商戶)
800714银联云闪付 PC-Web Payment (香港商户)
802001香港转数快扫码支付***
803701八达通动态二维码扫码支付(香港商户)
803712八达通反扫支付(香港商户)
803714八达通线上WEB支付(香港商户)
802801Visa / Mastercard 卡线上支付
802808Visa / Mastercard 卡线下刷卡支付
806527ApplePay 线上支付
806708银联卡线下刷卡支付
806808American Express 卡线下刷卡支付
注意

注意

备注

(*)

  1. 与常用支付的参数不同的是, return_url 是一个必须的请求变量.
  2. 在响应中的web_url 参数包含了支付链接.

(**)

  1. 交易金额必须大于 1 HKD.

(***)

  1. 该支付方式不支持退款.

(****)

  1. 对于支付请求和响应请参考部分内容.

支付币种

以下列出的货币是目前我们的支付网络支持的支付币种.请联系 technical.support@qfpay.com 来验证您的API证书和选中的pay_type是否支持您期望的货币.

编码描述
AEDArab Emirates Dirham
CNYChinese Yuan
EUREuro
HKDHong Kong Dollar
IDRIndonesian Rupiah
JPYJapanese Yen
MMKMyanmar Kyat
MYRMalaysian Ringgit
SGDSingapore Dollar
THBThai Baht
USDUnited States Dollar
CADCanadian Dollar
AUDAustralian Dollar

支付API端点

注意

请谨记立即将在测试环境进行的交易退款

如果您想要在Postman快速测试支付功能,我们提供了一套可生成签名的预请求脚本,请从此处下载文件: Postman中的支付请求

请求头部:

{
Content-Type: application/x-www-form-urlencoded;
X-QF-APPCODE: D5589D2A1F2E42A9A60C37**********
X-QF-SIGN: 6FB43AC29175B4602FF95F8332028F19
}

请求正文:

{
mchid=ZaMVg*****&out_trade_no=01234567890123&pay_type=800101&txamt=10&txcurrcd=EUR&txdtm=2019-12-25 14:21:28
}

#coding=utf8
import urllib.request, urllib.parse, urllib.error, urllib.request, urllib.error, urllib.parse, hashlib
import requests
import datetime
import string

# Enter Client Credentials
environment = 'https://test-openapi-hk.qfapi.com'
app_code = 'D5589D2A1F2E42A9A60C37*********'
client_key = '0E32A59A8B454940A2FF39**********'


# Create parameter values for data payload
current_time = datetime.datetime.now().replace(microsecond=0)

print(current_time)

# Create signature
def make_req_sign(data, key):
keys = list(data.keys())
keys.sort()
p = []
for k in keys:
v = data[k]
p.append('%s=%s'%(k,v))
unsign_str = ('&'.join(p) + key).encode("utf-8")
s = hashlib.md5(unsign_str).hexdigest()
return s.upper()


# Body payload
txamt = '10' #In USD,EUR,etc. Cent. Suggest value > 200 to avoid risk control
txcurrcd = 'HKD'
pay_type = '800101' # 支付宝 CPM = 800108 , MPM = 800101
auth_code='283854702356157409' #CPM only
out_trade_no = '01234567890123'
txdtm = current_time
goods_name = 'test1'
auth_code = '280438849930815813'
mchid = 'ZaMVg*****'
notify_url = 'https://xxx.com/notify/success'
key = client_key


#data ={'txamt': txamt, 'txcurrcd': txcurrcd, 'pay_type': pay_type, 'out_trade_no': out_trade_no, 'txdtm': txdtm, 'goods_name': goods_name, 'udid': udid, 'auth_code': auth_code, 'mchid': mchid, 'notify_url': notify_url}
data ={'txamt': txamt, 'txcurrcd': txcurrcd, 'pay_type': pay_type, 'out_trade_no': out_trade_no, 'txdtm': txdtm, 'mchid': mchid}

r = requests.post(environment+"/trade/v1/payment",data=data,headers={'X-QF-APPCODE':app_code,'X-QF-SIGN':make_req_sign(data, key)})

print(r.json())

上述指令会返回结构如下的JSON代码:

{
"txdtm": "2019-12-25 14:21:28",
"qrcode": "https://qr.alipay.com/bax01781r3pu4fjaqazt4091",
"pay_type": "800101",
"resperr": "success",
"out_trade_no": "01234567890123",
"syssn": "20191225000200020060996533",
"sysdtm": "2019-12-25 14:22:37",
"paydtm": "2019-12-25 14:22:37",
"txcurrcd": "EUR",
"respmsg": "",
"cardcd": "",
"udid": "qiantai2",
"txamt": "10",
"respcd": "0000",
"chnlsn": ""
}

HTTP请求

POST ../trade/v1/payment

如下列出的是支付API端点最常用的参数.请根据实际的支付场景增加额外的参数.

常用请求参数列表

参数名称参数编码是否必填参数类型描述
订单支付金额txamtInt(11)以当前货币最小计量单位计算,只允许整数类型 (i.e. 100 = $1). 建议数值大于200,避免因支付金额过低而被交易风控.
币种txcurrcdString(3)交易币种, 请查看币种表以获取完整的可选用的币种
支付类型pay_typeString(6)请查看支付类型表以获取完整的可选用的支付类型
外部订单号out_trade_noString(128)开发者自定义订单号,在同一商户账户中的每笔交易和退款请求该参数值唯一
请求交易时间txdtmString(20)格式:yyyy-MM-dd HH:mm:ss
授权码auth_code
(仅限反扫支付)
String(128)指定扫描条码/二维码的授权码。 返回的auth_code在每个授权中都是唯一的, 且每个“auth_code”只能使用一次,并会在一天后自动过期. 为了使用支付宝和微信支付测试反扫支付,可以使用任何可扫描二维码设备提取auth_code,或者在条形码下方的消费者钱包中手动找到auth_code.
交易到期时间expired_timeNo
(仅限正扫支付)
String(3)以分钟为计时的二维码过期时间,默认的过期时间是30分钟. 该参数可以被手动设置为最小5分钟,最大120分钟
该参数可用于:
800201 - 微信扫码支付
800101 - 支付宝跨境线下扫码支付
801512 - 支付宝线上WAP支付 (香港商戶)
801501 - 支付宝线上扫码支付 (香港商戶)
801107 - 支付宝线上上WAP支付 (海外商戶)
801101 - 支付宝线上上扫码支付 (海外商戶)
微信香港In-App支付
801510 - 支付宝In-App支付 (香港商戶)
商品名称标识goods_nameString(64)商品名称 / 标识: 不能超过 20 个字母数字或包含特殊字符。 APP支付不能为空。 如果参数是汉字,则需要使用UTF-8编码。
子商户号mchidString(16)标识子商户身份,由QFPay 分配(渠道系统后台查看对应商户(非业务员)子商户号,被视为对应商户的交易)
时区txzoneString(5)用于记录本地下单时间,默认为北京时间+0800
设备唯一idudidString(40)唯一的设备ID,显示在商户管理后台上.
异步通知地址notify_urlString(256)异步通知地址

常用响应参数列表

参数名称参数编码参数类型描述
支付类型pay_typeString(6)请参阅 支付类型 获取完整的支付类型
系统交易时间sysdtmString(20)格式:YYYY-MM-DD hh:mm:ss
这个参数值被用作结算截止时间
请求交易时间txdtmString(20)格式:YYYY-MM-DD hh:mm:ss
信息描述resperrString(128)
订单支付金额txamtInt(11)
调试信息respmsgString(128)
外部订单号out_trade_noString(128)外部订单号
QFPay 订单号syssnString(40)
钱包/渠道交易码chnlsnString
返回码respcdString(4)0000 = 请求成功.
1143/1145 = 商户需要持续查询交易结果
所有其他的返回码表明交易失败.请参阅 支付状态码 获得完整返回类型列表

交易状态码

返回码描述
0000交易成功;success
1100系统维护中 (1100)
1101Reversal 错误 (1101)
1102重复请求 (1102)
1103请求格式错误 (1103)
1104请求参数错误 (1104)
1105设备未激活 (1105)
1106无效设备 (1106)
1107设备无权限 (1107)
1108签名错误 (1108)
1125交易已退款 (1125)
1136交易不存在或无法处理 (1136)
1142订单已关闭 (1142)
1143订单还未支付,或者正在输入密码中 (1143)
1145处理中,请稍等 (1145)
1147微信支付交易错误 (1147)
1150您的结算方式为T0,不支持撤销交易 (1150)
1155退款请求被拒绝 (1155)
1181订单过期 (1181)
1201余额不足,请更换支付方式支付 (1201)
1202付款码错误或过期,请出示正确的付款码或刷新付款码后重新支付 (1202)
1203账户错误,请确认支付账户可用 (1203)
1204银行错误,请确认支付账户可用 (1204)
1205交易失败,请稍后重试 (1205)
1212请消费者使用银联境外码付款 (1212)
1241店铺不存在或状态不正确,请勿进行支付 (1241)
1242该店铺配置有些问题,无法进行交易 (1242)
1243该店铺被禁用,请勿进行支付,联系店主确认 (1243)
1250该交易禁止进行,如有疑问请联系QFPay 客服 (1250)
1251该店铺配置有些问题,我们正在加紧解决中 (1251)
1252进行交易请求时出现系统错误 (1252)
1254系统出了点小差,我们正在加紧解决中 (1254)
1260该订单已支付,请确认交易结果后再操作 (1260)
1261该订单未支付,请确认交易结果后再操作 (1261)
1262该订单已退款,请确认订单状态再操作 (1262)
1263该订单已撤销,请确认订单状态再操作 (1263)
1264该订单已关闭,请确认订单状态再操作 (1264)
1265该笔订单被禁止退款,23:30-00:30的交易以及部分特殊交易会被禁止 (1265)
1266该订单金额错误,请确认后再操作 (1266)
1267该订单信息不匹配,请确认后再操作 (1267)
1268该订单不存在,请确认后再操作 (1268)
1269当日未结算金额不足,无法操作,请确认余额充足 (1269)
1270该币种不支持部分退款 (1270)
1271该交易不支持部分退款 (1271)
1272该退款金额大于原交易可退款的最大金额 (1272)
1294该笔交易可能存在风险,已被银行禁止交易 (1294)
1295网络有些拥堵,我们正在加速解决中 (1295)
1296网络有些拥堵,请稍后再试或使用其他支付方式 (1296)
1297银行系统繁忙,请稍后再试或使用其他支付方式 (1297)
1298网络有些拥堵,切勿重复支付,如已支付请稍后确认结果 (1298)
2005消费者付款码错误或已过期请刷新后重新支付 (2005)
2011交易流水号重复 (2011)