开发文档

九鼎支付系统开发文档,可以照着开发文档开发插件

协议规则
协议规则

提交数据格式:application/x-www-form-urlencoded

返回数据格式:JSON

字符编码:UTF-8

签名算法:SHA256WithRSA

1、V2接口全面使用 RSA 签名算法;V1接口使用 MD5 签名算法

2、V2接口改用全新的接口地址,支持退款、代付等功能;V1接口使用submit.php和mapi.php提交订单

3、V2接口新增timestamp入参和返回值用于校验时间戳

获取RSA密钥对

在 商户后台->个人资料->API信息 页面,点击【生成商户RSA密钥对】,生成后注意保存【商户私钥】。对接接口时只需要用到【平台公钥】与【商户私钥】。

签名规则
签名步骤

对本平台接口发起的请求,需要进行签名。

1、获取请求报文所有非空请求参数,不包括数组、字节类型参数,如文件、字节流,剔除signsign_type字段,并按照第一个字符的键值ASCII码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值ASCII码递增排序,以此类推。

2、将排序后的参数和对应值,组合成“参数=参数值”的格式,并且把这些参数用 &字符连接起来,此时生成的字符串为待签名字符串。

3、使用商户私钥,对待签名字符串计算RSA签名(SHA256WithRSA),得到签名sign。

验签步骤

针对接口返回的数据,以及异步通知回调的数据,需进行验签。

1、先根据签名步骤里面的1~2,获取到待签名字符串。

2、使用平台公钥,根据签名字符串sign,对待签名字符串与进行RSA验签(SHA256WithRSA)

注意事项

1、商户私钥(private key)需填写到代码中供签名时使用。生成的私钥需妥善保管,避免遗失,不要泄露。

2、平台公钥(public key)用于接口返回数据、异步通知回调数据的验签。

3、具体发起支付相关流程的示例代码可下载SDK查看。

支付方式列表
支付方式说明
调用值 描述
alipay支付宝
wxpay微信支付
页面跳转支付

此接口可用于用户前台直接发起支付,使用form表单跳转或拼接成url跳转。

请求接口

请求地址:https://api.jdzf.cc/api/pay/submit

请求方式:POST 或 GET(推荐POST,不容易被劫持)

请求参数说明
字段名 变量名 必填 类型 示例值 描述
商户ID pid Int 1001
支付方式 type String alipay 支付方式列表
商户订单号 out_trade_no String 20160806151343349
异步通知地址 notify_url String http://www.pay.com/notify_url.php 服务器异步通知地址
跳转通知地址 return_url String http://www.pay.com/return_url.php 页面跳转通知地址
商品名称 name String VIP会员 如超过127个字节会自动截取
商品金额 money String 1.00 单位:元,最大2位小数
业务扩展参数 param String 没有请留空 支付后原样返回
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
其他说明

支付方式(type)不传会跳转到收银台支付

统一下单接口

此接口可用于服务器后端发起支付请求,会返回支付二维码链接、支付跳转url等。

请求接口

请求地址:https://api.jdzf.cc/api/pay/create

请求方式:POST

请求参数说明
字段名 变量名 必填 类型 示例值 描述
商户ID pid Int 1001
接口类型 method String web 接口类型列表
设备类型 device String pc 仅通用网页支付需要传 设备类型列表
支付方式 type String alipay 支付方式列表
商户订单号 out_trade_no String 20160806151343349
异步通知地址 notify_url String http://www.pay.com/notify_url.php 服务器异步通知地址
跳转通知地址 return_url String http://www.pay.com/return_url.php 页面跳转通知地址
商品名称 name String VIP会员 如超过127个字节会自动截取
商品金额 money String 1.00 单位:元,最大2位小数
用户IP地址 clientip String 192.168.1.100 用户发起支付的IP地址
业务扩展参数 param String 没有请留空 支付后原样返回
被扫支付授权码 auth_code String 仅被扫支付需要传
用户Openid sub_openid String 仅JSAPI支付需要传
公众号AppId sub_appid String 仅JSAPI支付需要传
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
返回参数说明
字段名 变量名 类型 示例值 描述
返回状态码 code Int 0 0为成功,其它值为失败
错误信息 msg String 失败时返回原因
平台订单号 trade_no String 20160806151343349 平台内部的订单号
发起支付类型 pay_type String jump 参考 发起支付类型说明
发起支付参数 pay_info String weixin://wxpay/bizpayurl?pr=04IPMKM 根据不同的发起支付类型,返回内容也不一样
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
返回示例
返回示例-1
    {
        "code": 0,
        "trade_no": "20160806151343349",
        "pay_type": "qrcode",
        "pay_info": "weixin://wxpay/bizpayurl?pr=04IPMKM"
    }
    
返回示例-2
    {
        "code": 0,
        "trade_no": "20160806151343351",
        "pay_type": "jsapi",
        "pay_info": "{\"appId\":\"wx2421b1c4370ec43b\",\"timeStamp\":\"1395712654\",\"nonceStr\":\"e61463f8efa94090b1f366cccfbbb444\",\"package\":\"prepay_id=up_wx21201855730335ac86f8c43d1889123400\",\"signType\":\"RSA\",\"paySign\":\"oR9d8PuhnIc+YZ8cBHFCwfgpaK9gd7vaRvkYD7rthRAZ\"}"
    }
    
返回示例-3
    {
        "code": 0,
        "trade_no": "2024072320222180092",
        "pay_type": "scan",
        "pay_info": "{\"type\":\"wxpay\",\"trade_no\":\"2024072320222180092\",\"api_trade_no\":\"4200002345202407238253501450\",\"buyer\":\"o9uAcc6VlZxhcujpKIqQuWWoDQc\",\"money\":\"1.00\"}"
    }
    
接口类型列表
调用值 描述
web 通用网页支付(会根据device判断,自动
返回跳转url/二维码/小程序跳转url等)
jump 跳转支付(仅会返回跳转url)
jsapi JSAPI支付(小程序内支付使用,仅返回JSAPI参数,
需传入sub_openid和sub_appid参数)
app APP支付(iOS/安卓APP内支付使用,
仅返回APP支付参数)
scan 付款码支付(需传入auth_code参数,
支付成功后返回订单信息)
设备类型列表
调用值 描述
pc 电脑浏览器(默认)
mobile 手机浏览器
qq 手机QQ内浏览器
wechat 微信内浏览器
alipay 支付宝客户端
发起支付类型说明
发起支付类型 描述
jump 返回支付跳转url
html 返回html代码,用于支付跳转
qrcode 返回支付二维码
scheme 返回微信小程序跳转url scheme
jsapi 返回用于发起JSAPI支付的参数
app 返回用于发起APP支付的参数
scan 付款码支付成功,返回支付用户标识
其他说明

代码中需根据接口返回的pay_type值来展示具体的支付页面,例如扫码页面等。如果不懂怎么展示支付页面,可在method传入jump,这样pay_type就只会返回jump,直接跳转支付即可。

订单查询接口
请求接口

请求地址:https://api.jdzf.cc/api/pay/query

请求方式:POST

请求参数说明
字段名 变量名 必填 类型 示例值 描述
商户ID pid Int 1001
平台订单号 trade_no 特殊 String 20160806151343349 与商户订单号必传其一
商户订单号 out_trade_no 特殊 String 20160806151343351 与平台订单号必传其一
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
返回参数说明
字段名 变量名 类型 示例值 描述
返回状态码 code Int 0 0为成功,其它值为失败
错误信息 msg String 失败时返回原因
平台订单号 trade_no String 20160806151343349
商户订单号 out_trade_no String 20160806151343351
接口订单号 api_trade_no String 40001249985198893 微信支付宝返回的单号
支付方式 type String alipay 支付方式列表
支付状态 status Int 1 支付状态列表
商户ID pid Int 1001
订单创建时间 addtime String 2024-07-01 16:47:32
订单完成时间 endtime String 2024-07-01 16:49:24 仅完成才返回
商品名称 name String
商品金额 money String 1.00
已退款金额 refundmoney String 仅部分退款情况才返回
业务扩展参数 param String
支付用户标识 buyer String 一般为openid
支付用户IP clientip String
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
支付状态列表
状态值 描述
0 未支付
1 已支付
2 已退款
3 已冻结
4 预授权
订单退款接口

需要先在商户后台开启订单退款API接口开关,才能调用该接口发起订单退款

请求接口

请求地址:https://api.jdzf.cc/api/pay/refund

请求方式:POST

请求参数说明
字段名 变量名 必填 类型 示例值 描述
商户ID pid Int 1001
平台订单号 trade_no 特殊 String 20160806151343349 与商户订单号必传其一
商户订单号 out_trade_no 特殊 String 20160806151343351 与平台订单号必传其一
退款金额 money String 1.00 单位:元
商户退款单号 out_refund_no String 20160806151343391 可避免出现重复请求退款
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
返回参数说明
字段名 变量名 类型 示例值 描述
返回状态码 code Int 0 0为成功,其它值为失败
返回信息 msg String 失败或成功时返回提示
平台退款单号 refund_no String 20160806151343349
商户退款单号 out_refund_no String 20160806151343351
平台订单号 trade_no String 20160806151343349
退款金额 money String
扣减商户余额 reducemoney String
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
其他说明

少数插件对接的第三方平台不支持部分金额退款

订单退款查询
请求接口

请求地址:https://api.jdzf.cc/api/pay/refundquery

请求方式:POST

请求参数说明
字段名 变量名 必填 类型 示例值 描述
商户ID pid Int 1001
平台退款单号 refund_no 特殊 String 20160806151343349 与商户退款单号必传其一
商户退款单号 out_refund_no 特殊 String 20160806151343351 与平台退款单号必传其一
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
返回参数说明
字段名 变量名 类型 示例值 描述
返回状态码 code Int 0 0为成功,其它值为失败
错误信息 msg String 失败时返回提示
平台退款单号 refund_no String 20160806151343349
商户退款单号 out_refund_no String 20160806151343351
平台订单号 trade_no String 20160806151343349
商户订单号 out_trade_no String 20160806151343351
退款金额 money String
扣减商户余额 reducemoney String
退款状态 status Int 0:失败,1:成功
退款时间 addtime String 2024-07-01 16:47:32
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
支付结果通知
请求接口

通知类型:服务器异步通知(notify_url)、页面跳转通知(return_url)

请求方式:GET

请求参数说明
字段名 变量名 类型 示例值 描述
商户ID pid Int 1001
平台订单号 trade_no String 20160806151343349
商户订单号 out_trade_no String 20160806151343351
接口订单号 api_trade_no String 40001249985198893 微信支付宝返回的单号
支付方式 type String alipay 支付方式列表
交易状态 trade_status String TRADE_SUCCESS 固定为TRADE_SUCCESS
订单创建时间 addtime String 2024-07-01 16:47:32
订单完成时间 endtime String 2024-07-01 16:49:24 仅完成才返回
商品名称 name String
商品金额 money String 1.00
业务扩展参数 param String
支付用户标识 buyer String 一般为openid
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
返回内容说明

收到异步通知后,需返回success以表示服务器接收到了订单通知

其他说明

商户系统代码内务必对返回的签名sign进行校验,并且判断trade_status的值是否等于TRADE_SUCCESS

支付平台可能会增加回调字段,验证签名时必须支持增加的扩展字段

查询商户信息
请求接口

请求地址:https://api.jdzf.cc/api/merchant/info

请求方式:POST

请求参数说明
字段名 变量名 必填 类型 示例值 描述
商户ID pid Int 1001
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
返回参数说明
字段名 变量名 类型 示例值 描述
返回状态码 code Int 0 0为成功,其它值为失败
返回信息 msg String 失败或成功时返回提示
商户ID pid Int 1001
商户状态 status Int 1 0:已封禁,1:正常,2:待审核
支付状态 pay_status Int 1 0:关闭,1:开启
结算状态 settle_status Int 1 0:关闭,1:开启
商户余额 money String 50.00 单位:元
结算方式 settle_type Int 1 结算方式列表
结算账户 settle_account String alipay@alipay.com
结算账户姓名 settle_name String 张三
订单总数量 order_num Int 10
今日订单数量 order_num_today Int 3
昨日订单数量 order_num_lastday Int 2
今日订单收入 order_money_today String 45.00 单位:元
昨日订单收入 order_money_lastday String 35.00 单位:元
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
结算方式列表
状态值 描述
1 支付宝
2 微信
3 QQ钱包
4 银行卡
查询订单列表

查询订单列表可用于对账或同步订单状态等

请求接口

请求地址:https://api.jdzf.cc/api/merchant/orders

请求方式:POST

请求参数说明
字段名 变量名 必填 类型 示例值 描述
商户ID pid Int 1001
查询偏移 offset Int 0 从0开始
每页条数 limit Int 50 最大不能超过50
过滤订单状态 status Int 1 0:未支付,1:已支付
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
返回参数说明
字段名 变量名 类型 示例值 描述
返回状态码 code Int 0 0为成功,其它值为失败
返回信息 msg String 失败或成功时返回提示
订单列表 data Array 具体参数可参考订单查询
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
转账发起接口

平台需开通代付功能,且在商户后台开启代付API接口开关,才能调用本接口发起转账

请求接口

请求地址:https://api.jdzf.cc/api/transfer/submit

请求方式:POST

请求参数说明
字段名 变量名 必填 类型 示例值 描述
商户ID pid Int 1001
转账方式 type String alipay 转账方式列表
收款方账号 account String alipay@alipay.com 支付宝账号/微信OpenId/银行卡号
收款方姓名 name String 张三 选填,传入则校验账号与该姓名是否匹配
转账金额 money String 1.00 单位:元
转账备注 remark String 选填
转账交易号 out_biz_no String 2016080615134334917 传入后可避免出现重复请求转账
必须为19位纯数字,且以日期时间开头
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
返回参数说明
字段名 变量名 类型 示例值 描述
返回状态码 code Int 0 0为成功,其它值为失败
错误信息 msg String 失败时返回转账失败原因
转账状态 status Int 0:正在处理
1:转账成功
转账交易号 out_biz_no String 2016080615134334917 可用于后续转账查询
接口转账单号 orderid String 40001283951815782 支付宝微信返回的转账单号
转账完成时间 paydate String 2024-07-01 16:47:32
转账花费金额 cost_money String 从商户可用余额扣减的金额
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
转账方式列表
状态值 描述
alipay 支付宝
wxpay 微信支付
qqpay QQ钱包
bank 银行卡
其他说明

如果返回的转账状态status=0,则需稍后调用转账查询接口查询转账状态。

转账查询接口
请求接口

请求地址:https://api.jdzf.cc/api/transfer/query

请求方式:POST

请求参数说明
字段名 变量名 必填 类型 示例值 描述
商户ID pid Int 1001
转账交易号 out_biz_no String 2016080615134334919 转账接口传入或返回的交易号
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
返回参数说明
字段名 变量名 类型 示例值 描述
返回状态码 code Int 0 0为成功,其它值为失败
返回信息 msg String 成功或失败时返回提示
转账状态 status Int 0:正在处理
1:转账成功
2:转账失败
转账失败原因 errmsg String 收款方账户异常 status=2 时才返回
转账交易号 out_biz_no String 2016080615134334917
接口转账单号 orderid String 40001283951815782 支付宝微信返回的转账单号
转账完成时间 paydate String 2024-07-01 16:47:32
转账金额 amount String 单位:元
转账花费金额 cost_money String 从商户可用余额扣减的金额
转账备注 remark String
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
可用余额查询
请求接口

请求地址:https://api.jdzf.cc/api/transfer/balance

请求方式:POST

请求参数说明
字段名 变量名 必填 类型 示例值 描述
商户ID pid Int 1001
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
返回参数说明
字段名 变量名 类型 示例值 描述
返回状态码 code Int 0 0为成功,其它值为失败
返回信息 msg String 成功或失败时返回提示
商户可用余额 available_money String 1.00 单位:元
转账手续费率 transfer_rate String 3 %
当前时间戳 timestamp String 1721206072 10位整数,单位秒
签名字符串 sign String 参考签名规则
签名类型 sign_type String RSA 默认为RSA
SDK下载
PHP-SDK

SDK.zip

版本:V2.0