接入指南
接入步骤
1. 注册商户
联系 DaxPay 运营方注册商户,获取以下核心凭证:
| 参数 | 描述 |
|---|---|
| mchNo | 商户号,唯一标识接入商户 |
| appId | 应用 ID,商户下创建的应用标识 |
2. 生成 RSA 密钥对
DaxPay 支付 API 使用 RSA 非对称加密进行签名验签。商户需自行生成 RSA 密钥对(推荐 2048 位):
- 商户私钥:保管在商户服务器,用于对请求签名
- 商户公钥:注册到 DaxPay 平台,供平台验证请求签名
- 平台公钥:从 DaxPay 平台获取,用于商户验证响应/回调签名
密钥安全
私钥是敏感信息,禁止提交到代码仓库,建议通过环境变量或安全配置中心管理。
3. 环境信息
| 环境 | 基础地址 |
|---|---|
| 沙箱环境 | https://sandbox.daxpay.cn(测试用,不影响生产数据) |
| 生产环境 | https://your-domain.com |
建议先在沙箱环境完成联调,验证通过后再切换到生产环境。
4. 首次调用
以下示例展示一个完整的支付请求流程:
1) 构造请求参数
json
{
"mchNo": "M200000001",
"appId": "APP001",
"reqId": "REQ20241201001",
"nonceStr": "5K8264ILTKCH16CQ2502SI8ZNMTM67VS",
"reqTime": "2024-12-01 12:00:00",
"bizOrderNo": "ORDER20241201001",
"title": "测试商品",
"amount": 100,
"method": "wechat_qr",
"notifyUrl": "https://your-domain.com/notify",
"returnUrl": "https://your-domain.com/return"
}2) 生成签名
将请求参数(不含 sign 字段)按 key 升序排列,拼接为 key=value&key=value 格式,使用商户私钥以 SHA256withRSA 签名,Base64 编码后填入 sign 字段。
签名细节参见 签名机制。
3) 发送请求
http
POST /unipay/pay HTTP/1.1
Host: your-domain.com
Content-Type: application/json
{
"mchNo": "M200000001",
"appId": "APP001",
"reqId": "REQ20241201001",
"nonceStr": "5K8264ILTKCH16CQ2502SI8ZNMTM67VS",
"reqTime": "2024-12-01 12:00:00",
"sign": "Base64签名值",
"bizOrderNo": "ORDER20241201001",
"title": "测试商品",
"amount": 100,
"method": "wechat_qr",
"notifyUrl": "https://your-domain.com/notify"
}4) 处理响应
json
{
"code": 0,
"msg": "success",
"data": {
"orderId": 1853123456789012345,
"bizOrderNo": "ORDER20241201001",
"orderNo": "P2024120112345700001",
"tradeNo": "T2024120112345700001",
"status": "progress",
"payBody": "weixin://wxpay/bizpayurl?pr=xxxxx",
"payBodyType": "code_url"
},
"sign": "Base64签名值",
"resTime": "2024-12-01T04:00:00Z",
"reqId": "REQ20241201001"
}data.payBody:支付参数体,根据支付方式不同返回不同内容(二维码链接、调起参数等)data.payBodyType:支付参数体类型(如code_url、pay_info、redirect_url)sign:平台对整个响应的 RSA 签名,可使用平台公钥验签
安全配置
接入时必须遵循以下安全规范:
- HTTPS:生产环境强制使用 HTTPS,禁止明文传输
- 密钥保管:商户私钥为敏感信息,禁止提交到代码仓库
- 签名验签:请求需签名,响应/回调需验签,防止数据篡改
- 回调验签:接收异步通知时必须先验签再处理业务,防止伪造通知
- 防重放:每次请求使用不同的
reqId和nonceStr,平台会校验唯一性
常见问题
Q: 签名验证失败?
检查签名参数排序是否正确(ASCII 字典序),签名字符串格式是否为 key=value&key=value,使用的密钥是否匹配(请求用商户私钥签名,验签用平台公钥)。
Q: 请求被拒绝?
确认请求体中包含所有必填字段:mchNo、appId、reqId、reqTime、sign,以及业务参数。
Q: 测试环境与生产环境差异?
沙箱环境不产生真实资金流动,用于接口联调和流程验证。生产环境配置与沙箱一致,仅基础地址和凭证不同。