跳到主要内容

冲正/取消

注意

当无法确定交易状态时,例如未收到付款通知、响应超时、网络问题等,应将撤销作为最后的手段。首先应使用查询API端点检查交易状态。香港支付类型不支持交易取消。

撤销 API 端点允许商家取消/撤销当前正在进行的交易。 已成功处理的交易(返回代码 0000 = 成功)无法再撤销或取消。 如果您想撤销已成功的交易,请参阅[退款端点](退款)。


对于代码说明,请使用下面的选项卡选择 Python、Java、Node.js 或 PHP。


import urllib.request, urllib.parse, urllib.error, urllib.request, urllib.error, urllib.parse, hashlib
import requests
from hashids import Hashids
import datetime
import string
import random

# Enter Client Credentials
environment = 'https://test-openapi-hk.qfapi.com'
app_code = '3F504C39125E4886AB4741**********'
client_key = '5744993FBC034DBBB995FA**********'


# Create parameter values for data payload
current_time = datetime.datetime.now().replace(microsecond=0)
random_string = ''.join(random.choices(string.ascii_uppercase + string.digits, k=32))

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")
print(unsign_str)
s = hashlib.md5(unsign_str).hexdigest()
return s.upper()



# Body payload
txamt = '2500' #In USD,EUR,etc. Cent
out_trade_no = '4MDGEJ7L496LAAU1V1HBY9HMOGWZWLXQ'
syssn = '20200305066100020000977812'
txdtm = '2020-03-05 16:50:30'
mchid = 'MNxMp11FV35qQN'
key = client_key

#data ={'txamt': txamt, 'out_trade_no': out_trade_no, 'syssn': syssn, 'txdtm': txdtm, 'udid': udid, 'mchid': mchid}
data ={'txamt': txamt, 'out_trade_no': out_trade_no, 'txdtm': txdtm, 'mchid': mchid}

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

print(r.json())

上面的命令返回 JSON 结构如下:


{
"surcharge_fee": "0",
"resperr": "success",
"txdtm": "2020-03-05 16:50:30",
"syssn": "20200305066100020000977814",
"sysdtm": "2020-03-05 16:54:38",
"txcurrcd": "EUR",
"respmsg": "",
"chnlsn2": "",
"cardcd": "",
"udid": "qiantai2",
"txamt": "2500",
"orig_syssn": "20200305066100020000977813",
"surcharge_rate": "0",
"respcd": "0000",
"chnlsn": ""
}

HTTP请求 - 支付宝 CPM & MPM

GET ..trade/v1/reversal

HTTP請求 - 微信支付 CPM

GET ..trade/v1/reversal

HTTP请求 - 微信支付 MPM

GET ..trade/v1/close

HTTP请求 - 其他符合条件的电子钱包*

GET ..trade/v1/close

*如果您想在支付宝和微信支付以外的钱包上使用该API,请联系我们获取说明。

请求参数

参数名称是否必填参数类型描述
mchidNoString(16)QFPay提供的商户标识符
syssnYes*String(40)付款完成后系统返回的 QFPay 交易编号
out_trade_noYes*String(128)外部交易编号
txamtYesInt(11)交易金额。单位为分(即 100 = 1 元)
txdtmYesString(20)交易时间格式: YYYY-MM-DD hh:mm:ss
udidNoString(40)唯一的交易设备 ID。显示在商家管理平台上。

*Either the syssn or out_trade_no must be provided.

响应参数

参数名称参数类型描述
orig_syssnString(40)指原始 QFPay 交易编号
syssnString(40)取消/撤销的 QFPay 交易编号
out_trade_noString(128)外部交易编号
txamtInt(11)交易金额。单位为分(即 100 = 1 元)
txcurrcdString(3)交易货币。查看 支付币种 表,了解可用货币的完整列表。
txdtmString(20)交易时间格式: YYYY-MM-DD hh:mm:ss
sysdtmString(20)系统交易时间。 格式:YYYY-MM-DD hh:mm:ss
该参数值作为清算截止时间。
chnlsnString支付通道交易编号(钱包方)
respcdString(4)响应代码
0000 = 冲正/取消成功
1143/1145 = 冲正/取消正在进行中
其他 = 冲正/取消失败
resperrString(128)结果说明
respmsgString(128)信息说明