API开发文档简介
本文阅读对象:使用 鼎信国际 商户自服务系统的技术架构师、研发工程师、系统运维工程师。通过本文档,商户可了解 鼎信国际 接入的技术、接入的产品业务、接入的流程、接入规范等信息,以便于商户顺利完成接入工作。
接入网关
请登录商户中心,API管理》API开发文档,查看商户号、商户密钥等参数。
签名算法
一句话概览:把“参与签名”的参数按参数名升序排列,按 k=v 用 & 连接成字符串,末尾追加 &key=商户密钥,对整个字符串做 MD5 并转大写,得到 sign。
签名步骤
-
确定参与签名的字段
以参数表“参与签名=是”为准。请求里出现但标记为“不参与签名”的字段一律忽略;sign 本身不参与签名。
-
按参数名排序
对参与签名的“参数名”做 ASCII 升序(字典序升序)。
Python:sorted(dict.items())
Golang:sort.Strings(keys)
Java:new TreeMap<>()
PHP:ksort()
-
拼接待签名字符串
按排序后的顺序拼成 k=v,并用 & 连接:
k1=v1&k2=v2&k3=v3...
然后把 &key=商户密钥 追加到最后面:
k1=v1&k2=v2&k3=v3...&key=xxxxxx
-
生成 sign
sign = MD5(待签名字符串).toUpperCase()
示例
待签名字符串:
pay_amount=10&pay_applydate=2020-02-18 11:42:53&pay_bankcode=904&pay_callbackurl=https://zfbh5.com/Pay_Test_callback.html&pay_memberid=10111&pay_notifyurl=https://zfbh5.com/Pay_Test_notify.html&pay_orderid=2020021811425310052559&key=96e79218965eb72c92a549dd5a330112
计算:
sign=MD5(stringSignTemp).toUpperCase()
最终签名:CEC49EC102B90C6E0FA6E831502A4845
常见问题(签名不一致时先对照这里)
- 确认参与签名的字段集合与参数表一致(尤其是回调/返回时有些字段可能不参与)。
- key 必须放在最后,格式固定为 &key=商户密钥。
- sign 不参与签名,不要把 sign 自己再拼进去。
- MD5 结果需要转大写。
代收提交接口
接口信息
POST
form-data (multipart/form-data)
UTF-8
接口地址:
https://dxgj68.com/Pay_Index.html
说明:按下表提交参数,其中
pay_md5sign 为签名字段,计算方法见
签名算法。
| 参数 |
类型 |
必填 |
参与签名 |
描述 |
| pay_memberid |
int(10) |
是 |
是 |
平台分配的商户号 |
| pay_orderid |
string(32) |
是 |
是 |
订单号, 需保证唯一性 |
| pay_applydate |
datetime |
是 |
是 |
提交时间,如:2038-01-01 10:00:13 |
| pay_bankcode |
int(10) |
是 |
是 |
银行编码, 取值范围:1251-越南银行卡扫码, 1252-越南MOMO 1253-越南zalo |
| pay_notifyurl |
string(255) |
是 |
是 |
订单成功通知地址(请求方式:post form-data) |
| pay_callbackurl |
string(255) |
是 |
是 |
页面跳转返回地址(GET返回数据) |
| pay_amount |
float(15, 2) |
是 |
是 |
订单金额, 单位:元 |
| pay_productname |
string(32) |
否 |
否 |
商品名称 |
| pay_productnum |
int(10) |
否 |
否 |
商品数量 |
| pay_productdesc |
string(32) |
否 |
否 |
Iphone6 16G |
| pay_producturl |
string(255) |
否 |
否 |
商品链接地址 |
| visitor_id |
string(32) |
否 |
否 |
用户标识,如会员ID、设备ID,在return_type=3时必传 |
| pay_cardnumber |
integer |
否 |
否 |
拉空单时收款银行卡号 |
| pay_orderidold |
string |
否 |
否 |
拉空单时原商户订单号 |
| pay_kyc |
string |
否 |
否 |
泰国传卡号,其它国家不用传 |
| return_type |
int(10) |
是 |
否 |
返回类型,取值范围:2-支付链接(需商户自行提取并传递),3-收款信息(商户自建收银台使用) |
| pay_md5sign |
string(32) |
是 |
否 |
签名字段,计算方法见 签名算法
|
返回说明
接口返回固定包含 code、msg、data 三个字段;其中 data 会随 return_type 不同而变化:
- return_type=2:data 为支付链接(string)
- return_type=3 或传入 pay_cardnumber 拉空单:data 为收款信息(object)
返回字段(通用)
| 参数 |
类型 |
必填 |
描述 |
| code |
string(32) |
是 |
状态, 取值范围: success-成功, error-失败 |
| msg |
string(32) |
是 |
状态描述 |
| data |
string / object |
是 |
返回数据(结构随 return_type 不同,见下方) |
return_type=2:支付链接(data 为 string)
| 参数 |
类型 |
必填 |
描述 |
data |
string(255) |
是 |
收银台跳转链接 |
return_type=3(或拉空单):收款信息(data 为 object)
| 参数 |
类型 |
必填 |
描述 |
| data |
object |
是 |
收款信息 |
| ↳ pay_orderid |
string(32) |
是 |
平台交易流水号 |
| ↳ out_trade_id |
string(32) |
是 |
商户订单号 |
| ↳ truename |
string(32) |
是 |
收款人姓名 |
| ↳ card_no |
string(32) |
是 |
收款人银行卡号 |
| ↳ bank_name |
string(32) |
是 |
收款人银行名称 |
| ↳ pay_useramount |
string |
是 |
订单支付金额 |
| ↳ qr_url |
string |
是 |
支付二维码链接 |
| ↳ qr_text |
string |
是 |
支付二维码内容 |
| ↳ remark |
string |
是 |
付款备注 |
| ↳ account_id |
string |
是 |
账号id |
| ↳ jump_url |
string |
是 |
收银台跳转链接 |
代收订单回调
接口信息
POST
form-data (multipart/form-data)
UTF-8
说明:当订单
支付成功后,平台会
立即向商户的
pay_notifyurl 发起回调通知(POST form-data)。
商户需做:接收参数 → 按
签名算法 验签 → 处理业务逻辑。
如何确认成功:处理成功后,请在 HTTP 响应体输出
OK(不带引号,必须大写)。返回 OK 表示“商户已成功收到并处理本次通知”,平台将停止继续通知。
重试规则:若未返回 OK(包含超时/返回其它内容/HTTP 异常),平台将每隔 1 分钟重试一次,最多重试 30 次(约 30 分钟)。
回调参数
| 参数 |
类型 |
必填 |
参与签名 |
描述 |
| memberid |
int(10) |
是 |
是 |
平台分配商户号 |
| orderid |
string(32) |
是 |
是 |
商户订单号, 字符长度32 |
| amount |
float(15, 4) |
是 |
是 |
订单金额 |
| transaction_id |
string(32) |
是 |
是 |
平台交易流水号 |
| datetime |
datetime |
是 |
是 |
交易时间 |
| returncode |
string(2) |
是 |
是 |
交易状态 00表示成功,其它表示失败 |
| attach |
string(255) |
否 |
否 |
商户附加数据返回 |
| sign |
string(32) |
是 |
否 |
签名字段,计算方法见 签名算法 |
订单查询接口
接口信息
POST
form-data (multipart/form-data)
UTF-8
接口地址:
https://dxgj68.com/Pay_Trade_query.html
请求参数
| 参数 |
类型 |
必填 |
参与签名 |
描述 |
| pay_memberid |
int(10) |
是 |
是 |
平台分配的商户号 |
| pay_orderid |
string(32) |
是 |
是 |
订单号, 需保证唯一性 |
| pay_md5sign |
string(32) |
是 |
否 |
签名字段,计算方法见 签名算法 |
返回参数
| 参数 |
类型 |
必填 |
参与签名 |
描述 |
| memberid |
int(10) |
是 |
是 |
平台分配商户号 |
| orderid |
string(32) |
是 |
是 |
商户订单号, 字符长度32 |
| amount |
float(15, 4) |
是 |
是 |
订单金额 |
| time_end |
datetime |
是 |
是 |
支付时间 |
| transaction_id |
string(32) |
是 |
是 |
平台订单号 |
| returncode |
string(2) |
是 |
是 |
交易状态 00表示成功,其它表示失败 |
| trade_state |
string |
是 |
是 |
订单状态英文, 取值范围:SUCCESS-支付成功,NOTPAY-未支付 |
| sign |
string(32) |
是 |
否 |
签名字段,计算方法见 签名算法 |
掉单提交接口
接口信息
POST
form-data (multipart/form-data)
UTF-8
接口地址:
https://dxgj68.com/Pay_Trade_lost.html
请求参数
| 参数 |
类型 |
必填 |
参与签名 |
描述 |
| pay_memberid |
int(10) |
是 |
是 |
商户号 |
| pay_orderid |
string(32) |
是 |
是 |
商户订单号 |
| img |
text |
是 |
否 |
图片 base64 编码,仅支持 png,最大 5M |
| pay_md5sign |
string(32) |
是 |
否 |
签名字段,计算方法见 签名算法 |
返回参数
| 参数 |
类型 |
必填 |
描述 |
| status |
string(32) |
是 |
状态, 取值范围: success-成功, error-失败 |
| msg |
string(32) |
是 |
状态描述 |
| transaction_id |
string(32) |
是 |
平台订单号 |
| img_url |
string(255) |
是 |
平台图片链接地址 |
代付提交接口
接口信息
POST
form-data (multipart/form-data)
UTF-8
接口地址:
https://dxgj68.com/Payment_Dfpay_add.html
请求参数
| 参数 |
类型 |
必填 |
参与签名 |
描述 |
| mchid |
int(10) |
是 |
是 |
平台分配商户号 |
| out_trade_no |
string(32) |
是 |
是 |
商户订单号(最大长度32),需保证唯一值 |
| currency_type |
int(10) |
是 |
是 |
货币类型,取值范围: 1-越南盾, 3-印尼盾, 4-巴基斯坦卢比, 默认值1 |
| money |
float(15, 2) |
是 |
是 |
代付金额,单位:元,只支持两位小数点 |
| accountname |
string(32) |
是 |
是 |
开户名 |
| accounttype |
int(10) |
是 |
是 |
银行账号类型,取值范围: 1-卡号收款,2-二维码收款, 默认值1 |
| bankid |
int(10) |
否 |
是 |
开户行ID(accounttype为1时必填), 银行信息对照表》
|
| cardnumber |
string(32) |
否 |
是 |
银行卡号(accounttype为1时必填) |
| qrbase64 |
string |
否 |
是 |
收款码base64编码(accounttype为2时必填) |
| notifyurl |
string(255) |
否 |
是 |
异步通知地址(请求方法:POST, 请求体编码格式:form-data) |
| subbranch |
string(32) |
否 |
是 |
支行名称 |
| pay_md5sign |
string(32) |
是 |
否 |
签名字段,计算方法见 签名算法 |
返回参数
| 参数 |
类型 |
必填 |
描述 |
| status |
string(32) |
是 |
状态, 取值范围: success-成功, error-失败 |
| msg |
string(32) |
是 |
状态描述 |
| transaction_id |
string(32) |
否 |
平台订单号 |
代付订单回调
接口信息
POST
form-data (multipart/form-data)
UTF-8
说明:当订单
状态变更完成后,平台会
立即向商户的
notifyurl 发起回调通知(POST form-data)。
商户需做:接收参数 → 按
签名算法 验签 → 处理业务逻辑。
如何确认成功:处理成功后,请在 HTTP 响应体输出
OK(不带引号,必须大写)。返回 OK 表示“商户已成功收到并处理本次通知”,平台将停止继续通知。
重试规则:若未返回 OK(包含超时/返回其它内容/HTTP 异常),平台将每隔 1 分钟重试一次,最多重试 30 次(约 30 分钟)。
回调参数
| 参数 |
类型 |
必填 |
参与签名 |
描述 |
| status |
string(32) |
是 |
是 |
状态, 取值范围: success-成功 |
| msg |
string(32) |
是 |
是 |
状态描述 |
| mchid |
int(10) |
是 |
是 |
商户号 |
| out_trade_no |
string(32) |
是 |
是 |
商户订单号 |
| amount |
float(15, 2) |
是 |
是 |
代付金额 |
| transaction_id |
string(32) |
是 |
是 |
平台订单号 |
| refCode |
string(10) |
是 |
是 |
代付订单状态,1-已打款,5-已驳回 |
| refMsg |
string(32) |
是 |
是 |
代付订单状态描述 |
| success_time |
datetime |
是 |
是 |
付款成功时间 |
| memo |
string(32) |
否 |
否 |
驳回时的原因 |
| img_url |
string(255) |
否 |
否 |
凭证url地址 |
| truename |
string(32) |
否 |
否 |
付款人姓名 |
| card_no |
string(32) |
否 |
否 |
付款卡号 |
| bank_name |
string(32) |
否 |
否 |
付款银行名称 |
| sign |
string(32) |
是 |
否 |
签名字段,计算方法见 签名算法 |
代付查询接口
接口信息
POST
form-data (multipart/form-data)
UTF-8
接口地址:
https://dxgj68.com/Payment_Dfpay_query.html
请求参数
| 参数 |
类型 |
必填 |
参与签名 |
描述 |
| mchid |
int(10) |
是 |
是 |
商户号 |
| out_trade_no |
string(32) |
是 |
是 |
商户订单号 |
| pay_md5sign |
string(32) |
是 |
否 |
签名字段,计算方法见 签名算法 |
返回参数
| 参数 |
类型 |
必填 |
参与签名 |
描述 |
| status |
string(32) |
是 |
是 |
状态, 取值范围: success-成功 |
| msg |
string(32) |
是 |
是 |
状态描述 |
| mchid |
int(10) |
是 |
是 |
商户号 |
| out_trade_no |
string(32) |
是 |
是 |
商户订单号 |
| amount |
float(15, 2) |
是 |
是 |
代付金额 |
| transaction_id |
string(32) |
是 |
是 |
平台订单号 |
| refCode |
string(10) |
是 |
是 |
代付订单状态,1-已打款,2-已驳回,3-处理中,4-待处理,8-未知 |
| refMsg |
string(32) |
是 |
是 |
代付订单状态描述 |
| success_time |
datetime |
是 |
是 |
付款成功时间 |
| memo |
string(32) |
否 |
否 |
驳回时的原因 |
| img_url |
text |
否 |
否 |
凭证url地址 |
| sign |
string(32) |
是 |
否 |
签名字段,计算方法见 签名算法 |
账户余额查询接口
接口信息
POST
form-data (multipart/form-data)
UTF-8
接口地址:
https://dxgj68.com/Payment_Dfpay_balance.html
请求参数
| 参数 |
类型 |
必填 |
参与签名 |
描述 |
| mchid |
int(10) |
是 |
是 |
商户号 |
| currency_type |
int(10) |
是 |
是 |
货币类型,取值范围: 1-越南盾, 3-印尼盾, 4-巴基斯坦卢比, 默认值1 |
| pay_md5sign |
string(32) |
是 |
否 |
签名字段,计算方法见 签名算法 |
返回参数
| 参数 |
类型 |
必填 |
参与签名 |
描述 |
| status |
string(32) |
是 |
是 |
状态, 取值范围: success-成功 |
| msg |
string(32) |
是 |
是 |
状态描述 |
| mchid |
int(10) |
是 |
是 |
商户号 |
| balance |
float(15, 2) |
是 |
是 |
可提现余额 |
| blockedbalance |
float(15, 2) |
是 |
是 |
冻结余额 |
| pay_md5sign |
string(32) |
是 |
否 |
签名字段,计算方法见 签名算法 |
提现提交接口
接口信息
POST
form-data (multipart/form-data)
UTF-8
接口地址:
https://dxgj68.com/Payment_Withdrawal_add.html
请求参数
| 参数 |
类型 |
必填 |
参与签名 |
描述 |
| mchid |
int(10) |
是 |
是 |
商户号 |
| out_trade_no |
string(32) |
是 |
是 |
商户订单号 |
| currency_type |
int(10) |
是 |
是 |
货币类型,取值范围: 1-越南盾, 3-印尼盾, 4-巴基斯坦卢比, 默认值1 |
| money |
float(15, 2) |
是 |
是 |
提现金额,单位:元,只支持两位小数点 |
| bankname |
string(32) |
是 |
是 |
开户行名称 |
| accountname |
string(32) |
是 |
是 |
开户名 |
| cardnumber |
string(32) |
是 |
是 |
银行卡号 |
| notifyurl |
string(255) |
否 |
是 |
异步通知地址(请求方式:post form-data) |
| subbranch |
string(32) |
否 |
是 |
支行名称 |
| pay_md5sign |
string(32) |
是 |
否 |
签名字段,计算方法见 签名算法 |
返回参数
| 参数 |
类型 |
必填 |
描述 |
| status |
string(32) |
是 |
状态, 取值范围: success-成功, error-失败 |
| msg |
string(32) |
是 |
状态描述 |
| transaction_id |
string(32) |
否 |
平台订单号 |
提现订单回调
接口信息
POST
form-data (multipart/form-data)
UTF-8
说明:当订单
状态变更完成后,平台会
立即向商户的
notifyurl 发起回调通知(POST form-data)。
商户需做:接收参数 → 按
签名算法 验签 → 处理业务逻辑。
如何确认成功:处理成功后,请在 HTTP 响应体输出
OK(不带引号,必须大写)。返回 OK 表示“商户已成功收到并处理本次通知”,平台将停止继续通知。
重试规则:若未返回 OK(包含超时/返回其它内容/HTTP 异常),平台将每隔 1 分钟重试一次,最多重试 30 次(约 30 分钟)。
回调参数
| 参数 |
类型 |
必填 |
参与签名 |
描述 |
| status |
string(32) |
是 |
是 |
状态, 取值范围: success |
| msg |
string(32) |
是 |
是 |
状态描述 |
| mchid |
int(10) |
是 |
是 |
商户号 |
| out_trade_no |
string(32) |
是 |
是 |
商户订单号 |
| amount |
float(15, 2) |
是 |
是 |
提现金额 |
| transaction_id |
string(32) |
是 |
是 |
平台订单号 |
| refCode |
string(10) |
是 |
是 |
提现订单状态,1-已打款,5-已驳回 |
| refMsg |
string(32) |
是 |
是 |
提现订单状态描述 |
| success_time |
datetime |
是 |
是 |
成功时间 |
| memo |
string(32) |
否 |
否 |
驳回时原因 |
| img |
text |
否 |
否 |
已打款时凭证截图,格式base64编码 |
| sign |
string(32) |
是 |
否 |
签名字段,计算方法见 签名算法 |
提现查询接口
接口信息
POST
form-data (multipart/form-data)
UTF-8
接口地址:
https://dxgj68.com/Payment_Withdrawal_query.html
请求参数
| 参数 |
类型 |
必填 |
参与签名 |
描述 |
| mchid |
int(10) |
是 |
是 |
商户号 |
| out_trade_no |
string(32) |
是 |
是 |
商户订单号 |
| pay_md5sign |
string(32) |
是 |
否 |
签名字段,计算方法见 签名算法 |
返回参数
| 参数 |
类型 |
必填 |
参与签名 |
描述 |
| status |
string(32) |
是 |
是 |
状态, 取值范围: success |
| msg |
string(32) |
是 |
是 |
状态描述 |
| mchid |
int(10) |
是 |
是 |
商户号 |
| out_trade_no |
string(32) |
是 |
是 |
商户订单号 |
| amount |
float(15, 2) |
是 |
是 |
提现金额 |
| transaction_id |
string(32) |
是 |
是 |
平台订单号 |
| refCode |
string(10) |
是 |
是 |
提现订单状态,1-已打款,3-处理中,4-待处理,5-已驳回,8-未知 |
| refMsg |
string(32) |
是 |
是 |
提现订单状态描述 |
| success_time |
datetime |
是 |
是 |
成功时间 |
| memo |
string(32) |
否 |
否 |
驳回时原因 |
| img |
text |
否 |
否 |
已打款时凭证截图,格式base64编码 |
| sign |
string(32) |
是 |
否 |
签名字段,计算方法见 签名算法 |