更新时间:2024/11/8日
产品介绍
河南易付通科技有限公司
易付通平台是河南易付通科技有限公司的产品。系统经过多年的运营与考验。
业务涵盖线下收款、线上收款API接口,覆盖微信、支付宝所有支付方式。
我们致力于为更多开发者、个人创业者、个体户及小微企业提供正规的官方支付接口,为中小商家提供便捷的支付接入服务。
产品模式
易付通 只负责帮助用户在微信、支付宝官方签约申请商户并提供正规官方支付接口。
易付通 旨在解决需要支付交易流的开发者、个体户、个人创业者、公司等提供便捷的支付产品。
易付通 只负责信息流,不负责资金流。支付资金全部由微信/支付宝官方直接结算。易付通支付平台只是一个支付技术服务平台,不负责资金。
接口说明及规范
协议规则
提交数据格式:application/x-www-form-urlencoded
返回数据格式:JSON
字符编码:UTF-8
签名算法:SHA256WithRSA
V2升级说明
1、V2接口全面使用 RSA 签名算法;V1接口使用 MD5 签名算法
2、V2接口改用全新的接口地址,支持退款、代付等功能;V1接口使用submit.php和mapi.php提交订单
3、V2接口新增timestamp入参和返回值用于校验时间戳
获取RSA密钥对
在 商户后台->个人资料->API信息 页面,点击【生成商户RSA密钥对】,生成后注意保存【商户私钥】。对接接口时只需要用到【平台公钥】与【商户私钥】。
旧版接口文档
签名规则
签名步骤
对本平台接口发起的请求,需要进行签名。
1、获取请求报文所有非空请求参数,不包括数组、字节类型参数,如文件、字节流,剔除sign、sign_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://pay.fanxiy.cn/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://pay.fanxiy.cn/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 |
返回示例:
123456 | { "code": 0, "trade_no": "20160806151343349", "pay_type": "qrcode", "pay_info": "weixin://wxpay/bizpayurl?pr=04IPMKM" } |
123456 | { "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"}" } |
123456 | { "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内浏览器 | |
微信内浏览器 | |
alipay | 支付宝客户端 |
发起支付类型说明
发起支付类型 | 描述 |
---|---|
jump | 返回支付跳转url |
html | 返回html代码,用于支付跳转 |
qrcode | 返回支付二维码 |
scheme | 返回微信小程序跳转url scheme |
jsapi | 返回用于发起JSAPI支付的参数 |
app | 返回用于发起APP支付的参数 |
scan | 付款码支付成功,返回支付订单信息 |
其他说明:
- 代码中需根据接口返回的pay_type值来展示具体的支付页面,例如扫码页面等。如果不懂怎么展示支付页面,可在method传入jump,这样pay_type就只会返回jump,直接跳转支付即可。
- 付款码支付可不传支付类型type字段,会根据auth_code的数字自动判断支付类型。
订单查询
请求地址:
https://pay.fanxiy.cn/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://pay.fanxiy.cn/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://pay.fanxiy.cn/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://pay.fanxiy.cn/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 | 微信 |
4 | 银行卡 |
查询订单列表
查询订单列表可用于对账或同步订单状态等
请求地址:
https://pay.fanxiy.cn/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 |
可用余额查询
请求地址:
https://pay.fanxiy.cn/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 |
暂无评论内容