我要验牌(法国口音)
设置 手动代付
账户可用余额
{{ stats[0].value }}
处理中金额
¥{{ processingAmount }}
{{ item.label }}
{{ item.prefix }}{{ item.value }}
支付宝:¥{{ pieText.alipay.toFixed(2) }}
微信:¥{{ pieText.wechat.toFixed(2) }}
银行卡:¥{{ pieText.bank.toFixed(2) }}
搜索
点击上传 或 Ctrl+V 粘贴 收款二维码
调用摄像头扫码
正在对准二维码...
提交代付订单 (CONFIRM SUBMIT)
确认修改密码
当前商户 ID:
{{ merchant.merchant_code }}
重置对接密钥 (Secret) 查看 API 对接文档
已绑定 未绑定 生成绑定二维码
手动密钥:{{ merchant2FA.secret }}
如果不能扫码,可在验证器中手动输入密钥绑定。
确认绑定
解绑2FA
保存2FA策略

1. 通用说明

专业代发功能,后台可以接收到代发订单,人工或通过 API 接口完成代发。

接口基础地址 (Base URL):

http://商户端/api/v2

鉴权方式: 签名校验 (sign)

⚠️ 重要要求:

  • 所有 POST 请求必须在 Header 中设置 Content-Type: application/json
  • 金额处理: 建议统一使用保留两位小数的字符串(如 "20.00"),签名与传输保持一致。

签名算法:

  1. 将所有请求参数(不包括 sign 本身和空值参数)按参数名 ASCII 码从小到大排序(字典序)。
  2. 使用 URL 键值对的格式(即 key1=value1&key2=value2...)拼接成字符串 stringA。
  3. 在 stringA 最后拼接上商户密钥:stringSignTemp = stringA + "&secret=您的密钥"
  4. 对 stringSignTemp 进行 MD5 运算,并将得到的字符串所有字符转换为大写,得到 sign 值。

MD5 验证示例: 字符串 "abc" 的 MD5 结果为 "900150983CD24FB0D6963F7D28E17F72"

2. 发起代付订单

请求方式: POST /distributes

参数名 必填 说明
{{row.p}} {{row.r}} {{row.d}}

返回结果示例:

{
  "merchant_id": "477267",
  "timestamp": "1714812345",
  "distribute_code": "M20250407001",
  "amount": "15.25",
  "status": "distnew",
  "message": "订单已受理"
}

状态说明:distnew 新建, distsuccess 成功, distoperating 操作中, distfail 失败

3. 代发回调通知

订单处理成功后,系统会向您的 notification_url 发起 POST 请求。

回调参数示例:

{
  "distribute_code": "M20250407001",
  "amount": 15.25,
  "merchant_id": "477267",
  "status": "dist_success",
  "message": "备注信息 (仅展示,不参与签名)",
  "notification_status": "success",
  "sign": "AK4H34IEI36NVO3V2J2O3IE4NIH"
}

处理要求: 服务器收到回调后请直接返回字符串 success (不带引号)。返回其它字符均视为通知失败。

4. 代发查询

请求方式: GET /distributes/:distribute_code

必传参数: merchant_id, timestamp, sign

返回参数说明:

  • status: 订单状态
  • notify: 回调状态 (notifynew/notifysuccess/notify_fail)
  • message: 详情说明

5. 代发明细查询 (报表)

请求方式: GET /distributes/report

特有参数: date (格式: 2025/04/07), offset, limit

6. Python 对接示例

import requests
import hashlib
import time

# 1. 准备请求参数 (直接使用保留两位的字符串,签名与传输一致)
amount_val = 10.0
params = {
    "merchant_id": "{{ merchant.merchant_code }}",
    "amount": "{:.2f}".format(amount_val), 
    "paytool": "alipay",
    "distribute_code": "ORDER_123456",
    "notification_url": "http://your-callback.com",
    "timestamp": str(int(time.time()))
}

# 2. 生成签名
secret = "您的密钥"
sorted_keys = sorted(params.keys())
query_string = "&".join([f"{k}={params[k]}" for k in sorted_keys])
sign_source = query_string + "&secret=" + secret
params["sign"] = hashlib.md5(sign_source.encode('utf-8')).hexdigest().upper()

# 3. 发送请求 (直接发送 params 即可)
url = "http://商户端/api/v2/distributes"
res = requests.post(url, json=params)
print(res.json())

安全警告

1. 严禁在前端 JavaScript 代码中存储密钥或计算签名。
2. 所有 API 请求必须在您的服务器后端完成。
3. 请确保您的通知地址 (notification_url) 能够稳定接收 POST 请求。