# 1. 收款下单接口
# 简要描述
- 商户代付-收单接口
# 请求URL
{domain}/open-api/payment/generate
# 请求方式
- POST
# 请求头
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
Content-Type | 是 | string | application/json |
# 请求体参数
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appId | 是 | string | 应用APPID |
param | 是 | string | 参数体 |
sign | 是 | string | 签名 |
# param参数
参数名 | 必填 | 类型 | 长度限制 | 示例 | 说明 |
---|---|---|---|---|---|
timestamp | 是 | long | - | 1677495496979 | 当前时间戳 |
mchOrderId | 是 | string | 1-32 | CCP20220428011068111 | 商户订单id, 格式:字母+数字,1-32位 |
amount | 是 | long | - | - | 收款金额 (单位为分, 当国家为印尼时,单元为元) |
countryCode | 是 | string | - | - | 国家编码 (PH , ID , MY , TH , RU ) |
currency | 是 | string | - | - | 标价币种 (PHP , IDR , MYR , THB , RUB ) |
channelType | 是 | string | - | - | 渠道类型 (QR , ONLINE_BANKING , EWALLET , BANK_TRANSFER , CARD , DIRECT_DEBIT , PAYLATER ) |
channelCode | 是 | string | - | 参考列表 | Platform收单渠道Code |
payToken | 否 | string | - | - | 代扣token, channelType为DIRECT_DEBIT 时必填 |
customerName | 否 | string | 1-128 | - | 付款人姓名, channelType为QR , ONLINE_BANKING , EWALLET , BANK_TRANSFER , CARD , PAYLATER 时必填 |
否 | string | 1-128 | - | 付款人邮箱, channelType为QR , ONLINE_BANKING , EWALLET , BANK_TRANSFER , CARD , PAYLATER 时必填 | |
mobile | 否 | string | 10-14 | - | 付款人电话, channelType为QR , ONLINE_BANKING , EWALLET , BANK_TRANSFER , CARD , PAYLATER 时必填 |
terminalType | 否 | string | - | - | 设备类型 (WEB , WAP ), channelType为QR , ONLINE_BANKING , EWALLET , BANK_TRANSFER , CARD , PAYLATER 时必填 |
osType | 否 | string | - | - | 操作系统 (IOS , ANDROID , OTHER ) |
notifyUrl | 是 | string | 1-256 | - | 商户交易通知 URL |
redirectUrl | 否 | string | 1-512 | - | 重定向 URL, channelType为ONLINE_BANKING , EWALLET , CARD , PAYLATER 时必填 |
remark | 否 | string | 1-256 | - | 收单备注 |
wechatpay | 否 | wechatpay | - | - | 微信相关参数 |
goodsDetails | 否 | List<goodsDetail> | - | - | 商品信息 channelType 为 PAYLATER 时必填 注: 如果传入该对象,则内层必填字段必须传入 |
billingAddress | 否 | billingAddress | - | - | 账单地址信息 channelType 为 PAYLATER 时必填 注: 如果传入该对象,则内层必填字段必须传入 |
# wechatpay参数
参数名 | 必填 | 类型 | 长度限制 | 示例 | 说明 |
---|---|---|---|---|---|
payerClientIp | 否 | string | 1-40 | - | - 当channelCode=TH_WECHAT_URL 时必传. - 用户侧设备IP,取公网出口IP,支持IPV6 |
wpOpenid | 否 | string | 1-128 | - | - 当channelCode=TH_WECHAT_JS_URL 时必传. - 微信用户唯一标识,通过网页授权获取openid |
wpAppid | 否 | string | 1-32 | - | - 当channelCode为以下值[TH_WECHAT_JS_URL ]时必传. - 商户在微信开放平台申请移动应用对应的APPID * 公众号支付使用商户公众号appid * 小程序支付使用商户小程序appid |
# goodsDetail参数
参数名 | 必填 | 类型 | 长度限制 | 示例 | 说明 |
---|---|---|---|---|---|
name | 是 | string | 1-128 | - | 商品名称 |
price | 是 | long | - | - | 商品单价 (商品总价格必须与收款金额一致) |
quantity | 是 | integer | 1-9999 | - | 商品数量 |
sku | 是 | string | 1-64 | - | SKU ID (商家分配的用于识别商品的唯一ID) |
url | 否 | string | 1-256 | - | 商品链接地址 当channelCode=ID_INDODANA_URL 时必传 |
category | 是 | string | 1-64 | - | 商品分类 参考值: airlines arts-crafts-and-collectibles automotive baby beauty-and-fragrances biller books-and-magazines business-to-business-including-mlm charity-and-non-profit clothing community digital-content electronics-and-telecom entertainment-and-media financial-services-and-products financial-services-and-technology food-and-beverage food-retail-and-service games-voucher gifts-and-flowers government health-and-personal-care home-and-garden hotel-and-travel insurance marketplace nonprofit offline-store others over-the-air overseas pets-and-animals property public-services religion-and-spirituality retail services sports-and-outdoors telco ticketing toys-and-hobbies transportation travel vehicle-sales vehicles-service-and-accessories fee offline 如果找不到参考值,可使用 others |
# billingAddress参数
参数名 | 必填 | 类型 | 长度限制 | 示例 | 说明 |
---|---|---|---|---|---|
name | 是 | string | 1-128 | - | 付款人名称 |
address | 是 | string | 1-512 | - | 付款人地址 |
city | 是 | string | 1-512 | - | 城市 |
state | 否 | string | 1-512 | - | 省 |
postalCode | 是 | string | 5-10 | - | 邮政编码 |
mobile | 是 | string | 10-14 | - | 付款人电话 |
countryCode | 是 | string | 1-32 | - | 国家编码 (需与当前渠道类型所属国家保持一致) |
# 请求示例
# 请求体
{
"appId": "733b887a4a784708bb369524db5b6ded",
"sign": "A5Vd8NcQvU3QT41Yee2jCIK58jDAKZ6kP5gEE4q7Yu92hUCY3k00FKTSlCNU+CcZm0LSrGbEMFMID3p7uvXaqy5khNv3kPndrgp7MIRHUmQnMgRK+g1XG7PzWdnrqlXc3g+L+kqVja+qrFRz+uVS6GLKLR1P4AtgTa9dok6NU7YTWOnG9r/FwIVx/At4czfEpI10pvg2TptVpiANmseGmz4G30hkaYTTNahkcOMQJn6PDFjivHvjNLZNJVOqHQzVUa+kca1yZZMPHtgxR647KjoY2oAjjl0Y45GL6zP9qHD/eVwcPPAPrRZ4K2o05OJnPf67fAcWNVqpnu6ZGQIXhQ==",
"param": "{\"timestamp\":1715595802,\"mchOrderId\":\"10e5595801938341100\",\"currency\":\"PHP\",\"countryCode\":\"PH\",\"channelType\":\"QR\",\"channelCode\":\"PH_QRPH_DYNAMIC\",\"customerName\":\"name\",\"email\":\"test@email.com\",\"mobile\":\"09123456789\",\"amount\":10000,\"remark\":\"remark\",\"notifyUrl\":\"https://www.test.com\",\"redirectUrl\":\"https://www.test.com\",\"terminalType\":\"WEB\"}"
}
TH_WECHAT_URL
{
"appId": "733b887a4a784708bb369524db5b6ded",
"sign": "A5Vd8NcQvU3QT41Yee2jCIK58jDAKZ6kP5gEE4q7Yu92hUCY3k00FKTSlCNU+CcZm0LSrGbEMFMID3p7uvXaqy5khNv3kPndrgp7MIRHUmQnMgRK+g1XG7PzWdnrqlXc3g+L+kqVja+qrFRz+uVS6GLKLR1P4AtgTa9dok6NU7YTWOnG9r/FwIVx/At4czfEpI10pvg2TptVpiANmseGmz4G30hkaYTTNahkcOMQJn6PDFjivHvjNLZNJVOqHQzVUa+kca1yZZMPHtgxR647KjoY2oAjjl0Y45GL6zP9qHD/eVwcPPAPrRZ4K2o05OJnPf67fAcWNVqpnu6ZGQIXhQ==",
"param": "{\"timestamp\":1715595802,\"mchOrderId\":\"10e5595801938341100\",\"currency\":\"THB\",\"countryCode\":\"TH\",\"channelType\":\"EWALLET\",\"channelCode\":\"TH_WECHAT_URL\",\"customerName\":\"name\",\"email\":\"test@email.com\",\"mobile\":\"0912345678\",\"amount\":10000,\"remark\":\"remark\",\"notifyUrl\":\"https://www.test.com\",\"redirectUrl\":\"https://www.test.com\",\"terminalType\":\"WEB\",\"wechatpay\": {\"payerClientIp\": \"1.1.1.1\"}}"
}
TH_WECHAT_JS_URL
{
"appId": "733b887a4a784708bb369524db5b6ded",
"sign": "A5Vd8NcQvU3QT41Yee2jCIK58jDAKZ6kP5gEE4q7Yu92hUCY3k00FKTSlCNU+CcZm0LSrGbEMFMID3p7uvXaqy5khNv3kPndrgp7MIRHUmQnMgRK+g1XG7PzWdnrqlXc3g+L+kqVja+qrFRz+uVS6GLKLR1P4AtgTa9dok6NU7YTWOnG9r/FwIVx/At4czfEpI10pvg2TptVpiANmseGmz4G30hkaYTTNahkcOMQJn6PDFjivHvjNLZNJVOqHQzVUa+kca1yZZMPHtgxR647KjoY2oAjjl0Y45GL6zP9qHD/eVwcPPAPrRZ4K2o05OJnPf67fAcWNVqpnu6ZGQIXhQ==",
"param": "{\"timestamp\":1715595802,\"mchOrderId\":\"10e5595801938341100\",\"currency\":\"THB\",\"countryCode\":\"TH\",\"channelType\":\"EWALLET\",\"channelCode\":\"TH_WECHAT_URL\",\"customerName\":\"name\",\"email\":\"test@email.com\",\"mobile\":\"0912345678\",\"amount\":10000,\"remark\":\"remark\",\"notifyUrl\":\"https://www.test.com\",\"redirectUrl\":\"https://www.test.com\",\"terminalType\":\"WEB\",\"wechatpay\": {\"wpOpenid\": \"xxxx\", \"wpAppid\": \"yyyy\"}}"
}
# 响应参数
参数名 | 类型 | 说明 |
---|---|---|
code | integer | 响应码 |
message | string | 响应信息 |
data | Object | 数据 |
# data参数
参数名 | 类型 | 说明 |
---|---|---|
mchOrderId | string | 商户订单号 |
transactionId | string | 交易编号 |
transactionStatus | string | 交易状态(PENDING , COMPLETED , FAILED ) |
payData | string | 支付信息(VA、跳转URL或者QR Content) |
channelType | string | 渠道类型 |
channelCode | string | 收单渠道Code |
cashierUrl | string | 支付指引链接 |
metadata | object | 元数据 |
metadata.wechatpay | object | 微信调起支付需要用到的参数(根据调起支付的不同方式选择性使用对应参数) |
metadata.wechatpay.prepayId | string | 预下单会话标识 |
metadata.wechatpay.appId | string | 微信公众号/小程序/app应用对应的appid |
metadata.wechatpay.nonceStr | string | 随机字符串 |
metadata.wechatpay.pkg | string | 订单详情扩展字符串 |
metadata.wechatpay.paySign | string | 签名 |
metadata.wechatpay.signType | string | 签名方式 |
metadata.wechatpay.timeStamp | string | 时间戳 |
# 响应示例
{
"code": 10000,
"message": "Success",
"data": {
"mchOrderId": "10e051066810618100",
"transactionId": "CU510579106014826496",
"transactionStatus": "PENDING",
"payData": "00020101021128760011ph.ppmi.p2m0111OPDVPHM1XXX03157771480000000170416529481372394713405030005204601653036085802PH5908PayCools6015City Of Mandalu62310010ph.allbank05062110000803***88310012ph.ppmi.qrph0111OPDVPHM1XXX630476F2",
"channelType": "QR",
"channelCode": "PH_QRPH_DYNAMIC"
}
}
TH_WECHAT_URL
{
"code": 10000,
"message": "Success",
"data": {
"mchOrderId": "test1729221472807",
"transactionId": "CU547114851101577216",
"transactionStatus": "PENDING",
"payData": "https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wxtest202410187232209353610467317753&package=4490330157&redirect_url=https%3A%2F%2Fwww.test.com",
"channelType": "EWALLET",
"channelCode": "TH_WECHAT_URL"
}
}
TH_WECHAT_JS_URL
{
"code": 10000,
"message": "Success",
"data": {
"mchOrderId": "test1729223118645",
"transactionId": "CU547121754175180800",
"transactionStatus": "PENDING",
"payData": "https://bluepaycashier.upay365.xyz/payment/wechat/inner/rh0lTZoN3JDyPUlKQv9-iQ==?redirect_url=https://www.test.com",
"channelType": "EWALLET",
"channelCode": "TH_WECHAT_JS_URL",
"metadata": {
"wechatpay": {
"prepayId": "wxtest202410187110737194525930233806",
"appId": "YYY",
"nonceStr": "yUFOPwEFX9ZK0Sc7mZBfzIlnR0tzAz7Y",
"pkg": "prepay_id=wxtest202410187110737194525930233806",
"paySign": "hTm4NhjeT7MM3qbeO8CFkhVxbSgk5SeOB8M/5AY8CuogH5hl9TWE1xVP3R9ZjhSZ/9bfziQKRTYL/rp+FjZ1TUGqqANbL9IDDy5V2ITjP/Gczf+kOM+hMM8HYBTe67BCJREOmKIWya4vN7l7nLQnB0tM7+bCujoxKjXDmittnUD6ECQh5zm/0FtJUNtT7a4o0H350pp/SjNIaNAXbZ8hP+aBBRRdquL6Sz9BCZe1A0fwO9ufBll2vvOOfa0zvXt1jR2DIsCDWA4icw1Vvf2lhadPYo3tNDqA5I3qebCGGcXLudyw4c5XVR/I5gpnR7YndGd16i56uODM0yBAnLGiMg==",
"signType": "RSA",
"timeStamp": "1729223119"
}
}
}
}
# 返回失败案例
{
"code":21016,
"message":"Merchant ip forbidden"
}