# 支付
## 接口说明
接口为商家提供线上支付功能,适用于银联、支付宝及A+、微信支付等付款方式。
## 请求路径
> `POST` /api/v5/createorder
## 请求参数
凡是上送参数都需参与签名。
***通用参数:***
| 参数 | 类型 | 必填 | 描述 |
| ------------- | ----- | --- | ------------------------------------------------------------ |
| paymentBrand | String|是 | 支付品牌,参考[交易场景和支持品牌](#交易场景和支持品牌)|
| tradeFrom | String|是 | 交易场景,参考[交易场景和支持品牌](#交易场景和支持品牌)|
| orderNum | String|是 | 订单号:商户自行定义,需保证同一商户号下订单号不能重复|
| orderAmount | String|是 | 订单金额:如 100 元,表示为 100 或 100.00 |
| orderCurrency | String|是 | 订单币种:ISO标准。如:人民币填写“CNY”,美元填写"USD" |
| frontURL | String|是 | 支付完成后前端跳转到该URL。GET请求,参数详见[支付结果通知(回调)](/op_api/result_pay) |
| backURL | String|是 | 支付结果异步通知到该URL。支付成功后,GoAllPay 会以 POST JSON 方式调用 backURL 通知支付结果(详见[支付结果通知(回调)](/op_api/result_pay))。商户在接收到通知后,需响应字符串“OK”。
如果没有收到商户响应“OK”,GoAllPay将会过一段时间后重新推送,时间间隔为[15, 15, 15, 30, 180, 1800, 3600, 7200, 14400],单位为秒。 |
| merID | String|是 | 商户 ID,由 GoAllPay 分配 |
| goodsInfo | String|是 | 商品信息。注意不要包含特殊符号,如 "#","&","+" 等 |
| detailInfo | String|是 | 商品明细。
格式:[{"goods_name":"iPhone X","quantity":"2"},{"goods_name":"iPhone 8","quantity":"4"}],需Base64编码后上送。注意goods_name不要包含特殊符号,如 "#","&","+" 等 |
| transTime | String|是 | 交易时间,格式:"yyyyMMddHHmmss" |
| merReserve | String|否 | 预留内容,商户自定义。注意不要包含特殊符号,如 "#","&","+" 等 |
| osType | String|是 | 用户操作系统类型。
"IOS","ANDROID","HARMONYOS","WINDOWS","MAC","OTHER" 选其中一个上送 |
| osVersion | String|否 | 用户操作系统版本。示例:"10.0.19043" |
| userIP | String|是 | 用户IP |
| userID | String|是 | 用户在商家的唯一ID |
| logisticsStreet| String|是 | 收货地址。若为虚拟物品,填写用户邮箱地址 |
| openid | String|否 | 仅适用于微信小程序支付场景 |
| signType | String|是 | SHA256 |
| signature | String|是 | 签名 |
## 响应参数
| 参数 | 类型 | 必填 | 描述 |
| --------- | -------| ---- | ------------------------------------------------------------ |
| respCode | String | 是 | 应答码,00表示请求成功 |
| respMsg | String | 是 | 应答信息 |
| merID | String | 否 | 商户ID |
| orderNum | String | 否 | 订单号 |
| transID | String | 否 | GoAllPay流水号 |
| parameter | Object | 否 | 支付相关参数。RespCode为00且非后台支付模式时返|
**响应参数`parameter`说明:**
(1) H5/WEB/JSAPI交易场景(tradeFrom=`H5`,`WEB`,`JSAPI`)
| 参数 | 类型 | 必填 | 描述 |
| -------- | ------ | ---- | ------------------------------- |
| payUrl | String | 否 | 支付URL |
(2) APP交易场景(tradeFrom=`APP`)
| 参数 | 类型 | 必填 | 描述 |
| -------- | ------ | ---- | --------------------------------------------------------- |
| tn | String | 否 | 交易流水号,作为调起 sdk 支付的参数 |
获取到tn后,根据[APP对接文档](AllPay_Integration_Specification_CH.md#6-app模式对接文档)调用SDK进行支付。
(3) APPLET交易场景(tradeFrom=`APPLET`)
| 参数 | 类型 | 必填 | 描述 |
| ---------- | ------ | ---- | ------------------------------------------------------ |
| sdk_params | Object | 否 | 小程序支付所需参数 |
(4) QRCODE交易场景(tradeFrom=`QRCODE`)
| 参数 | 类型 | 必填 | 描述 |
| -------- | ------ | ---- | ------------------------------- |
| code_url | String | 否 | 二维码字符串 |
(5) QUICK交易场景(tradeFrom=`QUICK`)
| 参数 | 类型 | 必填 | 描述 |
| -------- | ------ | ---- | ------------------------------- |
| payUrl | String | 否 | 收银台URL |
## 交易场景和支持品牌
tradeFrom|支持paymentBrand列表|交易示例
---|---|---
H5|unionpay,alipay_cn,alipay_hk,...|[报文示例](/examples/examples_op?id=h5-payment)
WEB|alipay_cn,alipay_hk,...|[报文示例](/examples/examples_op?id=web-payment)
APP|unionpay,wechat_pay,alipay_cn,alipay_hk,...|[报文示例](/examples/examples_op?id=app-payment)
JSAPI|wechat_pay,alipay_cn|[报文示例](/examples/examples_op?id=jsapi-payment)
APPLET|wechat_pay,alipay_cn|[报文示例](/examples/examples_op?id=applet-payment)
QRCODE|unionpay,wechat_pay,alipay_cn,....|[报文示例](/examples/examples_op?id=qrcode-payment)
QUICK|wechat_pay|[报文示例](/examples/examples_op?id=quick-payment)