API开发文档简介
使用 DDPay 商户服务系统的技术架构师、研发工程师、系统运维工程师,通过本文档可了解 DDPay 接入的技术、接入的产品、接入的流程、接入规范等信息,以便于商户顺利完成接入工作。
接入网关
网关:请登录商户中心,在“API管理-API开发文档” 菜单中查看网关地址和对接参数。
协议:接口使用HTTP协议请求,请求头Content-Type: application/x-www-form-urlencoded,数据编码统一采用UTF-8。
统一下单接口
请求方式:POST
请求地址: 网关地址+/Pay_index.html
| 参数名称 |
参数含义 |
是否必填 |
参与签名 | 参数说明 |
| pay_memberid |
商户号 |
是 |
是 |
[String类型]平台分配商户号 |
| pay_orderid |
订单号 |
是 |
是 |
[String类型]订单号(只能包含字母、数字),值唯一,最大长度30 |
| pay_applydate |
提交时间 |
是 |
是 |
[String类型]时间格式:2016-12-26 18:18:18 |
| pay_bankcode |
通道编码 |
是 |
是 |
[String类型]支付方式,在商户中心 API管理里查询 |
| pay_notifyurl |
异步通知url |
是 |
是 |
[String类型]支付后异步通知地址(POST返回数据) |
| pay_callbackurl |
同步回调url |
是 |
是 |
[String类型]支付后回调页面跳转地址 |
| pay_amount |
订单金额 |
是 |
是 |
[Price类型]金额单位:元(两位小数),示例:100.00 |
| pay_md5sign |
MD5签名 |
是 |
否 |
[String类型]请查看签名算法 |
| pay_productname |
产品名称 |
是 |
否 |
[String类型]产品(订单)描述信息或各通道的特殊值 |
| pay_productnum |
产品数量 |
否 |
否 |
[Number类型]示例:1 |
| pay_client_ip |
客户IP |
否 |
否 |
[String类型]示例:159.138.35.190 |
| pay_attach |
自定义字段 |
否 |
否 |
[String类型]附加数据 (中文需urlencode) |
| return_type |
响应方式 |
否 |
否 |
[String类型]若值为json时则响应JSON数据(推荐),值为html时则直接跳转HTML支付页面;示例:json |
| eb_code |
银行编码 |
否 |
否 |
[String类型]网银支付类型的编号参数,示例:CCB |
响应参数
✦
根据return_type参数系统有两种响应方式 :
1.响应HTML方式
直接跳转到支付页面(请求方式须使用form表单提交),系统默认使用本方式响应
2.响应JSON方式
| 参数名称 |
参数含义 |
参数说明 |
| status |
状态 |
成功:success ;其他表示失败 |
| payurl |
支付链接 |
|
| orderno |
平台订单号 |
|
| amount |
金额 |
金额单位是元 |
响应示例(JSON):
{"status":"success",
"msg":"成功",
"orderno":"E2021011814145299969",
"amount":100.88,
"payurl":"http://www.aonipay.com/5464"}
支付异步通知
请求方式:POST
接收到服务器点对点异步通知时,验证签名金额业务正确后请返回“OK”(没有双引号,字母大写)字符串给服务器,否则服务器会重复3次发送通知。
| 参数名称 |
参数含义 |
是否必填 |
参与签名 |
参数说明 |
| memberid |
商户编号 |
是 |
是 |
平台分配商户号 |
| orderid |
订单号 |
是 |
是 |
商户订单号 |
| amount |
订单金额 |
是 |
是 |
单位:元 |
| transaction_id |
平台单号 |
是 |
是 |
平台单号 |
| datetime |
交易时间 |
是 |
是 |
格式:yyyyMMddHHmmss |
| returncode |
响应状态 |
是 |
是 |
"00" 表示交易成功,其它表示失败 |
| sign |
MD5签名 |
是 |
否 |
规则详见签名算法 |
| attach |
自定义字段 |
否 |
否 |
商户附加数据返回 |
订单查询接口
请求方式:POST
请求地址: 网关地址+/Pay_Trade_query.html
| 参数名称 |
参数含义 |
是否必填 |
参与签名 | 参数说明 |
| pay_memberid |
商户编号 |
是 |
是 |
|
| pay_orderid |
商户订单号 |
是 |
是 |
|
| pay_md5sign |
MD5签名 |
是 |
否 |
商户号和订单号参与签名(签名算法同上) |
响应参数(JSON)
| 参数名称 |
参数含义 |
参数说明 |
| memberid |
商户编号 |
|
| returncode |
响应状态 |
00表示成功,其它表示失败 |
| sign |
MD5签名 |
算法:md5(pay_memberid=123&pay_orderid=234&key=key)转大写 |
| orderid |
商户订单号 |
|
| transaction_id |
平台订单号 |
|
| amount |
订单金额 |
单位:元 |
| time_end |
支付成功时间 |
|
| trade_state |
支付状态 |
SUCCESS:支付成功,NOTPAY:未支付 |
响应示例(JSON):
{
"memberid": "190472564",
"orderid": "E2024061518181413191",
"amount": "50.00",
"time_end": "2024-06-15 18:20:14",
"transaction_id": "20240615181831534484331",
"returncode": "00",
"trade_state": "SUCCESS",
"sign": "7A5162AF5F2C42FDE7566EA45146D573"
}
代付提交接口
请求方式:POST
请求地址:网关地址+/Payment_Dfpay_add.html
| 参数名称 |
参数含义 |
是否必填 |
参与签名 |
参数说明 |
| mchid |
商户编号 |
是 |
是 |
平台分配商户号 |
| out_trade_no |
商户订单号 |
是 |
是 |
只能包含字母、数字,值唯一,最大长度30 |
| money |
订单金额 |
是 |
是 |
单位:元,示例:100.25 |
| bankname |
银行名称 |
是 |
是 |
若是支付宝账户请输入“支付宝”;示例:支付宝、工商银行、中国银行... |
| subbranch |
支行名称 |
是 |
是 |
若是支付宝账户可输入任意值 |
| accountname |
收款人姓名 |
是 |
是 |
|
| cardnumber |
收款账号 |
是 |
是 |
银行卡号或支付宝账户 |
| province |
省份 |
否 |
否 |
|
| city |
城市 |
否 |
否 |
|
| extends |
附加字段 |
否 |
否 |
扩展字段 |
| eb_code |
银行编码 |
否 |
否 |
|
| notifyurl |
异步通知地址 |
否 |
否 |
代付异步通知URL,若为空,则系统不发送异步通知 |
| sign |
MD5签名 |
是 |
否 |
|
响应参数(JSON)
| 参数名称 |
参数含义 |
参数说明 |
| status |
状态 |
成功:success ;失败:error |
| msg |
状态描述 |
|
| transaction_id |
平台订单号 |
成功时返回 |
代付查询接口
请求方式:POST
请求地址:网关地址+/Payment_Dfpay_query.html
| 参数名称 |
参数含义 |
是否必填 |
参与签名 |
参数说明 |
| out_trade_no |
商户订单号 |
是 |
是 |
|
| mchid |
商户号 |
是 |
是 |
|
| sign |
签名 |
是 |
否 |
|
响应参数(JSON)
| 参数名称 |
参数含义 |
参数说明 |
| status |
状态 |
success:请求成功(不代表业务成功),error:请求失败 |
| msg |
状态描述 |
|
| mchid |
商户号 |
status=success时返回 |
| out_trade_no |
商户订单号 |
status=success时返回 |
| amount |
金额 |
status=success时返回 |
| transaction_id |
平台单号 |
status=success时返回 |
| refCode |
业务状态 |
status=success时返回 |
| refMsg |
业务描述 |
status=success时返回 |
| success_time |
成功时间 |
status=success,refCode=1时返回 |
refCode返回值说明
| 返回值 |
含义 |
| 1 |
成功 |
| 2 |
失败 |
| 3 |
处理中 |
| 4 |
待处理 |
| 5 |
审核驳回 |
| 6 |
待审核 |
注:当status=success和refCode=1同时成立时才表示转账成功
代付异步通知
请求方式:POST
接收到服务器点对点异步通知时,验证签名金额业务正确后请返回“OK”(没有双引号,字母大写)字符串给服务器,否则服务器会重复3次发送通知。
| 参数名称 |
参数含义 |
是否必填 |
参与签名 |
参数说明 |
| memberid |
商户编号 |
是 |
是 |
平台分配商户号 |
| orderid |
订单号 |
是 |
是 |
商户订单号 |
| amount |
订单金额 |
是 |
是 |
单位:元 |
| transaction_id |
平台单号 |
是 |
是 |
平台单号 |
| datetime |
交易时间 |
是 |
是 |
格式:yyyyMMddHHmmss |
| status |
交易状态 |
是 |
是 |
"1" 表示成功,其它表示失败 |
| sign |
MD5签名 |
是 |
否 |
规则详见签名算法 |
签名算法(MD5)
签名生成的通用步骤如下:
第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串。
第二步,在stringA最后拼接上应用 key="密钥" 得到stringSignTemp字符串,并对stringSignTemp进行MD5运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。
示例:
stringSignTemp="pay_amount=pay_amount&pay_applydate=pay_applydate&pay_bankcode=pay_bankcode
&pay_callbackurl=pay_callbackurl&pay_memberid=pay_memberid&pay_notifyurl=pay_notifyurl&pay_orderid=pay_orderid&key=密钥";
sign=MD5(stringSignTemp).toUpperCase();
账户余额查询接口
请求方式:POST
请求地址:网关地址+/Payment_Dfpay_balance.html
| 参数名称 |
参数含义 |
是否必填 |
参与签名 |
参数说明 |
| mchid |
商户编号 |
是 |
是 |
平台分配商户号 |
| timestamp |
时间戳 |
是 |
是 |
位数为10的时间戳(秒),示例:1719417341 |
| sign |
MD5签名 |
是 |
否 |
|
响应参数(JSON)
| 参数名称 |
参数含义 |
参数说明 |
| status |
状态 |
success:请求成功,error:请求失败 |
| msg |
状态描述 |
|
| mchid |
商户号 |
请求成功时返回 |
| balance |
可提现余额 |
请求成功时返回 |
| blockedbalance |
冻结余额 |
请求成功时返回 |
| name |
名称 |
请求成功时返回 |
渠道编码
请登录商户中心,在“API管理-查看通道费率”菜单中查看所属应用的支付通道编码。