统一支付接口设计
Posted wangdaijun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了统一支付接口设计相关的知识,希望对你有一定的参考价值。
1、接口说明
支付接口用于后台根据自己逻辑的单号生成签名用于调起第三方。
2、接口地址
xxx/v1/pay
3、接口格式
上行:Key & Value
下行:JSON
4、协议
HTTP/POST
5、输入参数
参数名 | 类型 | 是否必填 | 备注 |
token | String | 是 | |
appId | string | 否 | 设备唯一标识 |
appVersion | string | 否 | APP版本 |
imei | string | 否 | 手机串码 |
phoneModel | string | 否 | 手机型号 |
timestamp | string | 是 | |
orderId | string | 是 | 对应业务的单号 |
orderType | int | 是 | 业务类型(1、 普通行程订单 2、企业行程订单 3.xxx 4.小程序行程订单 40:钱包充值订单) |
payment | int | 是 | 支付方式(0免单支付,1支付宝(项目app),2微信(项目app) 3(企业支付) 4.余额支付 5银联支付... )201:公众号/小程序 |
openId | String | 特殊是 | 当payment= 201 公众号/小程序支付时 必须传入 OpenID 当payment=421 同理 |
appCode | String | 特殊是 | 当payment=201 公众号/小程序支付时 项目xx端小程序 :"12021" 当payment=421 同理 |
PS.已规划appCode 10010(零元) 11010(支付宝APP) 12020(微信APP)12021(xx小程序)12022(XX公众号微信原生扫码) 12023(XX公众号微信H5) 13010(企业) 14010(余额支付) 14011(余额支付-余额自动支付)
6、请求示例
orderId=133&orderType=1&payment=1
7、输出参数
参数名 | 类型 | 是否必填 | 备注 |
code | Integer | 是 | 状态码 |
msg | String | 否 | 返回消息 |
data | Object | 否 | 返回数据 |
Object内容(支付宝)
说明:因为此接口返回的是第三方要求的需要可以被调起的签名格式,故Object内容为一个经过加密的字符串。移动端拿到数据调用即可
Object内容(微信)
参数名 | 类型 | 是否必填 | 备注 |
app_id | String | 是 | 微信开放平台审核通过的应用APPID |
partnerid | String | 是 | 微信支付分配的商户号 |
prepayid | String | 是 | 微信返回的支付交易会话ID |
package | String | 是 | 暂填写固定值Sign=WXPay |
noncestr | String | 是 | 随机字符串,不长于32位。 |
timestamp | String | 是 | 时间戳 |
sign | String | 是 | 签名 |
支付宝
{
"data": “
alipay_sdk=alipay-sdk-java-3.1.0
&app_id=xxx
&biz_content=%7B%22xxx_amount%22%3A%220.01%22%7D
&charset=UTF-8
&format=json
&method=alipay.trade.app.pay
¬ify_url=xxxpayAliCallback
&return_url=xxxFreturn
&sign=cyu9MIAJGjGZ7yQKo7Lvu4C8cVCm%2BOeME%2B9A%2B%2BYkabZiBMguCPhtzQliruUaE5yyWhbNBtIqwT%2Bb4vIWzhb%2FlEiFcovcsKYbe46lDo9ihy%2Fb%2FTMBX%x‘x‘x%2BkhIcykHpfjfZLrWjdD7flsPRIotoBq%xxx%2F6vBQPC%2Fv8feQBlmFEfgoLLX8IBnFd5G%2F6n0GIwfVjOArSQ58izGuNjjXHHdtTbbiOD2oJMfAomUlCCwIOBYEvexgO4qOWKOFqcGOwnu594a4tG7vnCtOuTTwA%3D%3D
&sign_type=RSA2
×tamp=2018-07-11+11%3A34%3A00
&version=1.0"
”
}
微信
{
"code":0,
"data": {
"package":"Sign=WXPay",
"appid":"xxx",
"partnerid":"xxx",
"prepayid":"wx20180711174645947779",
"noncestr":"gSBpmOpKk8mhvdGTZaie",
"timestamp":"1531302402"
"sign":"EE8707786C6D008E48608291E971A920",
}
}
小程序支付结果:
{
"code":0,
"data": {
"appId":"xxxx",
"timeStamp":"Sign=WXPay",
"nonceStr":"wx1930ad04c1e714a8",
"package":"prepay_id=xxxxxx",
"signType":"MD5",
"paySign":"EE8707786C6D008E48608291E971A920",
}
}
企业支付
{
"code":0,
"msg": "支付成功!"
}
9、状态码
态码 | msg |
---|---|
200 | 支付成功 |
xxx1 | 订单已支付 |
xxx2 | 订单已关闭 |
xxx3 | 校验订单信息失败(未到支付状态/未查询到订单) |
xxx4 | 支付渠道错误 |
xxx5 | MQ广播通知错误 |
xxx6 | 操作失败 |
以上是关于统一支付接口设计的主要内容,如果未能解决你的问题,请参考以下文章
微信:微信扫码支付调用统一下单接口网站支付 + springmvc
支付宝统一收单交易创建接口,在PHP中怎么传递notify_url,具体的代码,不知道的别乱回答,谢谢
微信:微信扫码支付调用统一下单接口网站支付 + springmvc
Java对接支付宝(alipay)电脑网站生成二维码扫码支付 alipay.trade.page.pay统一收单下单并支付页面接口
Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段