统一支付接口设计

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
&notify_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
&timestamp=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(代码片段