smart-pay - 支付开发包
软件简介
聚合支付
- 目前已经接入支付渠道:微信(条码支付、扫码支付)、支付宝(条码支付、扫码支付);
- 后台自动生成对账文件
统一下单
业务通过统一下单接口可以发起任意三方支付渠道的支付订单。业务系统不必关心该如何调用三方支付,统一下单接口会根据业务系统选择的支付渠道ID,选择对应支付渠道的支付产品,发起下单请求,然后响应给业务系统支付请求所需参数。
URL地址: _ _
_http://127.0.0.1:3020/api/pay/create_order___
安全密钥:
ReqKey= M86l522AV6q613Ii4W6u8K48uW8vM1N6bFgyv769220MdYe9u37N4y7rI5mQ
ResKey= Hpcl522AV6q613KIi46u6g6XuW8vM1N8bFgyv769770MdYe9u37M4y7rIpl8
请求参数:
****字段**** | ****变量**** | ****必填**** | ****类型**** | ****示例**** | ****说明**** |
****商户ID**** | mchId | 是 | String(30) | 10000000 | 支付中心分配的商户号 |
****商户订单号**** | mchOrderNo | 是 | String(30) | 20160427210604000490 | 商户生成的订单号 |
****订单类型**** | payOrderType | 是 | String(1) | 1 | 支付订单号是否采用商户订单号 |
****渠道ID**** | channelId | 是 | String(24) | WX_NATIVE、ALIPAY_PC | 扫码支付,目前只有两种 |
****币种**** | currency | 是 | String(3) | cny | 三位货币代码,人民币:cny |
****支付金额**** | amount | 是 | int | 100 | 支付金额,单位分 |
****客户端IP**** | clientIp | 否 | String(32) | 210.73.10.148 | 客户端IP地址 |
****设备**** | device | 否 | String(64) | ios10.3.1 | 客户端设备 |
****支付回调URL**** | notifyUrl | 是 | String(200) | http://127.0.0.1/notify.htm | 支付结果回调URL,将支付结果通知给业务系统,如自助机。 |
****商品主题**** | subject | 是 | String(64) | 挂号费 | 商品主题 |
****描述信息**** | body | 是 | String(256) | XX医院,专家号,20元。 | 商品描述信息 |
****扩展参数1**** | param1 | 否 | String(64) | 支付中心回调时会原样返回 | |
****扩展参数2**** | param2 | 否 | String(64) | 支付中心回调时会原样返回 | |
****附加参数**** | extra | 是 | String(512) | {“openId”:”o2RvowBf7sOVJf8kJksUEMceaDqo”} | 特定渠道发起时额外参数,见下面说明 |
****签名**** | sign | 是 | String(32) | 签名值,详见签名算法 |
*extra参数说明*
当请求参数channelId = WX_NATIVE (微信原生扫码支付)时,productId参数必填,对应业务系统定义的商品ID。
例如:
{“openId”:”P2017120511225677”}
返回结果:
****字段**** | ****变量**** | ****必填**** | ****类型**** | ****示例**** | ****说明**** |
****返回状态码**** | retCode | 是 | String(16) | SUCCESS | SUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查看resCode来判断 |
****返回信息**** | retMsg | 否 | String(128) | 签名失败 | 返回信息,如非空,为错误原因 签名失败 参数格式校验错误 |
以下字段在retCode为SUCCESS的时候有返回:
****变量**** | ****必填**** | ****类型**** | ****示例**** | ****说明**** |
resCode | 是 | String(16) | SUCCESS | SUCCESS/FAIL |
errCode | 否 | String(32) | SYSTEMERROR | 错误码 |
errCodeDes | 否 | String(128) | 系统错误 | 结果信息描述 |
以下字段在retCode和resCode都为SUCCESS的时候有返回
****字段**** | ****变量**** | ****必填**** | ****类型**** | ****示例**** | ****说明**** |
****支付订单号**** | payOrderId | 是 | String(32) | P20170001215 | 支付中心生成的订单号 |
****预支付标识**** | prepayId | 否 | String(64) | Wx2017002423 | 第三方支付公司返回的预支付标识 |
****二维码链接**** | codeUrl | 是 | String(200) | weixin://wxpay | 可将该参数值生产二维码展示 |
****微信签名**** | paySign | 否 | String(32) | C380BEUYTUC… | 签名 |
微信返回示例:
{
codeUrl=weixin: //wxpay/bizpayurl?pr=A7W1hFm,
payOrderId=P0020171206233614680006,
mchOrderNo=P0020171206233614680006,
sign=1C576ED262CA87777C9EB4984E975B0A,
resCode=SUCCESS,
prepayId=wx201712062336170a0dbec3ec0035903577,
retCode=SUCCESS,
retMsg=
}
支付宝返回示例:
{
codeUrl=https: //qr.alipay.com/bax03162pv1meea5nnag0059,
payOrderId=P0020171207001840996000,
mchOrderNo=P0020171207001840996000,
sign=E76E40019D1DAFEC909C3318B5F87E6E,
resCode=SUCCESS,
prepayId=P0020171207001840996000,
retCode=SUCCESS,
retMsg=OK
}
退费
统一退单,分为退费和撤销两种。
URL地址: _ _http://127.0.0.1:3020/api/ __refund _ /create_order___
安全密钥:
ReqKey= M86l522AV6q613Ii4W6u8K48uW8vM1N6bFgyv769220MdYe9u37N4y7rI5mQ
ResKey= Hpcl522AV6q613KIi46u6g6XuW8vM1N8bFgyv769770MdYe9u37M4y7rIpl8
请求参数:
****字段**** | ****变量**** | ****必填**** | ****类型**** | ****示例**** | ****说明**** |
****商户ID**** | mchId | 是 | String(30) | 10000000 | 支付中心分配的商户号 |
****商户订单号**** | mchOrderNo | ****二选一**** | String(30) | 20160427210604000490 | 商户订单号 |
****支付订单号**** | payOrderId | String(30) | 20160427210604000490 | 支付订单号 | |
****渠道ID**** | channelId | 是 | String(24) | WX_NATIVE、ALIPAY_PC | 扫码支付,目前只有两种 |
****币种**** | currency | 是 | String(3) | cny | 三位货币代码,人民币:cny |
****支付金额**** | amount | 是 | int | 100 | 支付金额,单位分,退费必填,撤销可选 |
****客户端IP**** | clientIp | 否 | String(32) | 210.73.10.148 | 客户端IP地址 |
****设备**** | device | 否 | String(64) | ios10.3.1 | 客户端设备 |
****支付回调URL**** | notifyUrl | 是 | String(200) | http://127.0.0.1/notify.htm | 支付结果回调URL,将支付结果通知给业务系统,如自助机。 |
****商品主题**** | subject | 是 | String(64) | 挂号费 | 商品主题 |
****描述信息**** | body | 是 | String(256) | XX医院,专家号,20元。 | 商品描述信息 |
****扩展参数1**** | param1 | 否 | String(64) | 支付中心回调时会原样返回 | |
****扩展参数2**** | param2 | 否 | String(64) | 支付中心回调时会原样返回 | |
****退款方式**** | refundType | 是 | String(5) | 1 | 退款方式 0、退款 1、撤销 默认0 |
****签名**** | sign | 是 | String(32) | 签名值,详见签名算法 |
返回结果:
****字段**** | ****变量**** | ****必填**** | ****类型**** | ****示例**** | ****说明**** |
****返回状态码**** | retCode | 是 | String(16) | SUCCESS | SUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查看resCode来判断 |
****返回信息**** | retMsg | 否 | String(128) | 签名失败 | 返回信息,如非空,为错误原因 签名失败 参数格式校验错误 |
以下字段在retCode为SUCCESS的时候有返回:
****字段**** | ****变量**** | ****必填**** | ****类型**** | ****示例**** | ****说明**** |
****业务结果**** | resCode | 是 | String(16) | SUCCESS | SUCCESS/FAIL |
****错误代码**** | errCode | 否 | String(32) | SYSTEMERROR | 错误码 |
****错误描述**** | errCodeDes | 否 | String(128) | 系统错误 | 结果信息描述 |
以下字段在retCode和resCode都为SUCCESS的时候有返回
****字段**** | ****变量**** | ****必填**** | ****类型**** | ****示例**** | ****说明**** |
****退款订单号**** | refundOrderId | 是 | String(32) | R20170001215 | 支付中心生成的订单号 |
****支付订单号**** | payOrderId | 否 | String(64) | P2017002423 | 第三方支付公司返回的预支付标识 |
****微信签名**** | paySign | 否 | String(32) | C380BEUYTUC… | 签名 |
商户信息配置截图
渠道配置截图
订单截图