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… | 签名 |
商户信息配置截图
渠道配置截图
订单截图
