pay.prepay
支付下单
- 请求路由:
pay.prepay- 交互模型:
Request Response- 访问限制: 无
将下单接口返回结果中的prepay_id进行签名并返回用于在小程序或H5端唤起微信支付界面。
subOrders仅包含一个条目时,为普通支付,包含多个条目为合单支付。
调用示例:
const payInfo = await RSocket.rr({
route: `pay.trans.prepay`,
"data": { ...... }
})
// 使用返回结果唤起微信支付:
Taro.requestPayment({
...payInfo,
success: () => {},
fail: (res) => {},
complete: () => {},
})
请求
RSocket.rr({
"route" : "pay.prepay",
"data" : {
"appId" : "wxd0be3263c2bdd6bf",
"openId" : "oKQgr46obJ_88888888xzqNjt2MA",
"outTradeNo" : "CCO202311161153192837",
"subOrders" : [
{
"subMchid" : "1658844586",
"payeeInfo" : {
"targetType" : "COMPANY",
"targetId" : "CN1002",
"targetName" : "梦之岛"
},
"description" : "深圳-香港",
"amount" : {
"total" : 10,
"currency" : "CNY"
},
"discounts" : [
{
"id" : "CCB202403070938108",
"type" : "coupon",
"name" : "20元包车满减券",
"amount" : 2000,
"payer" : {
"targetType" : "PLATFORM",
"targetId" : "PLATFORM",
"targetName" : "平台"
}
}
],
"profitShareTargets" : [
{
"targetType" : "PARTNER",
"targetId" : "18900010001@mzd",
"targetName" : "测试鱼",
"description" : "合伙人分润",
"amount" : 1
},
{
"targetType" : "CHANNEL",
"targetId" : "CH9001",
"targetName" : "酒店渠道",
"description" : "渠道分润",
"remark" : "该渠道享受特殊折扣0.3%",
"amount" : 1
},
{
"targetType" : "COMPANY",
"targetId" : "CN1003",
"targetName" : "卓瑞中港车",
"description" : "承运商线下转账",
"remark" : "人工派单变更承运公司",
"manualSplit" : true,
"amount" : 1
}
],
"extra" : {
"companyId" : "CN1009",
"companyName" : "环岛中港通"
}
}
]
}
});
请求参数
| 名称 | 类型 | 必须 | 说明 |
|---|---|---|---|
spMchid | String | 否 | 微信支付平台的服务商标识 该标识为微信支付平台合作伙伴或者普通商户标识。仅当明确需要指定特定服务商来提供微信支付功能时,提供该参数。 未提供时,依据配置根据当前请求的客户端应用自动选取; |
appId | String | 是 | 付款应用ID 由微信生成的应用ID,全局唯一。请求基础下单接口时请注意AppID的应用属性,例如公众号场景下,需使用应用属性为公众号的服务号AppID |
openId | String | 是 | 付款方在应用中的openId |
payerInfo | Object | 否 | 付款方的平台帐户信息 在非线上支付等场景时,需要提供该参数 |
payerInfo.targetType | String | 否 | 帐户类型 由调用方根据分账方身份类型定义,例如:COMPANY,PARTNER,CHANNEL等 |
payerInfo.targetId | String | 否 | targetType下的帐户标识 |
payerInfo.targetName | String | 否 | 帐户名 |
outTradeNo | String | 是 | 商户系统内部订单号 只能是数字、大小写字母_-*且在同一个商户号下唯一。 |
subOrders | Object[] | 是 | 子订单列表 至少1个条目。当条目多于1个时,请求合单支付 |
subOrders.[].outTradeNo | String | 否 | 子订单号 仅当子订单数超过1个时,提供该参数指定子订单编号,一般使用主订单编号加数字后缀组成,例如:CCO202311281608193004-1,CCO202311281608193004-2 |
subOrders.[].subMchid | String | 否 | 二级商户标识 支付给二级商户时必填。 |
subOrders.[].payeeInfo | Object | 是 | 收款方的平台帐户信息 |
subOrders.[].payeeInfo.targetType | String | 是 | 帐户类型 由调用方根据分账方身份类型定义,例如:COMPANY,PARTNER,CHANNEL等 |
subOrders.[].payeeInfo.targetId | String | 是 | targetType下的帐户标识 |
subOrders.[].payeeInfo.targetName | String | 是 | 帐户名 |
subOrders.[].description | String | 是 | 商品描述 |
subOrders.[].timeExpire | String | 否 | 订单失效时间 |
subOrders.[].profitShareTargets | Object[] | 是 | 指定本次订单的分账方 |
subOrders.[].profitShareTargets.[].description | String | 是 | 分账的原因描述,分账账单中需要体现 最长80个字符 |
subOrders.[].profitShareTargets.[].amount | Number | 是 | 分账金额 仅当本次订单的分账金额与分账方配置不一致时提供 |
subOrders.[].profitShareTargets.[].manualSplit | Boolean | 否 | 是否手动分账 默认为false |
subOrders.[].profitShareTargets.[].manualSplitPayType | Number | 否 | 手动分账的支付类型 0 - 平台从订单收款方收账,再转给分账接收方,到达账期分账时将产生2笔线下支付; 1 - 订单收款方直接支付给分账接收方; 2 - 订单收款方直接支付给收分账接收方,且标记为已支付; 3 - 平台直接支付给收分账接收方,例如平台垫付优惠券成本等状况; 默认为0 |
subOrders.[].profitShareTargets.[].remark | String | 否 | 详细备注信息 与description不同,description用于提交到微信平台,remark用于保存详细的业务备注 |
subOrders.[].profitShareTargets.[].accountingDate | String | 否 | 记账时间 用作与第三方对账时,与其会计期间匹配。 |
subOrders.[].profitShareTargets.[].targetType | String | 是 | 帐户类型 由调用方根据分账方身份类型定义,例如:COMPANY,PARTNER,CHANNEL等 |
subOrders.[].profitShareTargets.[].targetId | String | 是 | targetType下的帐户标识 |
subOrders.[].profitShareTargets.[].targetName | String | 否 | 帐户名 |
subOrders.[].goodsTag | String | 否 | 订单优惠标记 |
subOrders.[].amount | Object | 是 | 支付金额信息 |
subOrders.[].amount.total | Number | 是 | 支付金额,单位为分 |
subOrders.[].amount.currency | String | 是 | 标价币种,符合ISO 4217标准的三位字母代码 CNY:人民币,境内商户号仅支持人民币 |
subOrders.[].detail | Object | 否 | 优惠功能 |
subOrders.[].detail.costPrice | Number | 否 | 订单原价 1、商户侧一张小票订单可能被分多次支付,订单原价用于记录整张小票的交易金额。 2、当订单原价与支付金额不相等,则不享受优惠。 3、该字段主要用于防止同一张小票分多次支付,以享受多次优惠的情况,正常支付订单不必上传此参数。 |
subOrders.[].detail.invoiceId | String | 否 | 商家小票ID |
subOrders.[].detail.goodsDetail | Object[] | 否 | 单品列表信息 条目个数限制:【1,6000】 |
subOrders.[].detail.goodsDetail.[].merchantGoodsId | String | 否 | 商户侧商品编码 由半角的大小写字母、数字、中划线、下划线中的一种或几种组成。 |
subOrders.[].detail.goodsDetail.[].wechatpayGoodsId | String | 否 | 微信支付商品编码 微信支付定义的统一商品编号(没有可不传) |
subOrders.[].detail.goodsDetail.[].goodsName | String | 否 | 商品的实际名称 |
subOrders.[].detail.goodsDetail.[].quantity | Number | 否 | 用户购买的数量 |
subOrders.[].detail.goodsDetail.[].unitPrice | Number | 否 | 商品单价 单位为:分。如果商户有优惠,需传输商户优惠后的单价(例如:用户对一笔100元的订单使用了商场发的纸质优惠券100-50,则活动商品的单价应为原单价-50) |
subOrders.[].discounts | Object[] | 否 | 订单使用的折扣信息 |
subOrders.[].discounts.[].id | String | 否 | 折扣标识,如优惠券id |
subOrders.[].discounts.[].type | String | 否 | 折扣类型,例如"coupon" |
subOrders.[].discounts.[].name | String | 否 | 折扣名称,如折扣券名称 |
subOrders.[].discounts.[].amount | Number | 是 | 折扣金额,单位:分 |
subOrders.[].discounts.[].cost | Number | 否 | 折扣券购买价格,单位:分 |
subOrders.[].discounts.[].refund | Number | 否 | 该折扣项涉及的退款金额,单位:分 |
subOrders.[].discounts.[].payer | Object | 是 | 折扣出资方 |
subOrders.[].discounts.[].payer.targetType | String | 是 | 帐户类型 由调用方根据分账方身份类型定义,例如:COMPANY,PARTNER,CHANNEL等 |
subOrders.[].discounts.[].payer.targetId | String | 是 | targetType下的帐户标识 |
subOrders.[].discounts.[].payer.targetName | String | 否 | 帐户名 |
subOrders.[].discounts.[].extra | Object | 否 | 其他扩展属性 |
subOrders.[].extra | Object | 否 | 扩展信息,下游应用可以传递关联业务数据以便据此进行汇总统计 |
contextData | Object | 否 | 支付订单上下文信息,这些信息会在支付回调中被传递 |
supportFapiao | Boolean | 否 | 电子发票入口开放标识 传入true时,支付成功消息和支付详情页将出现开票入口。 需要在微信支付商户平台或微信公众平台开通电子发票功能,传此字段才可生效。 |
prepayId | String | 否 | 针对同一个订单重复支付时,提交之前返回的prepayId |
sceneInfo | Object | 否 | 支付场景描述 |
sceneInfo.payerClientIp | String | 否 | 用户的客户端IP 支持IPv4和IPv6两种格式的IP地址。 |
sceneInfo.deviceId | String | 否 | 商户端设备号(门店号或收银设备ID) |
sceneInfo.storeInfo | Object | 否 | 商户门店信息 |
sceneInfo.storeInfo.id | String | 否 | 商户侧门店编号 |
sceneInfo.storeInfo.name | String | 否 | 商户侧门店名称 |
sceneInfo.storeInfo.areaCode | String | 否 | 地区编码,详细请见省市区编号对照表。 |
sceneInfo.storeInfo.address | String | 否 | 详细的商户门店地址 |
isCredit | Boolean | 否 | 是否记账(月结)账户 |
返回
返回签名参数,可据此唤起客 户端微信支付
{
"appId" : "wx810cb7d9ed95780e",
"timeStamp" : "1685924758",
"nonceStr" : "llYpto4FlE8eN9s5VbVzkat13KusS19w",
"prepayId" : "wx050825585......7bc013a97740000",
"signType" : "RSA",
"paySign" : "OckAX6PZADgr7wOkxYg......duYgxfre8lCoB5LjEy5WQ0NxiA==",
"package" : "prepay_id=wx050825585......7bc013a97740000"
}
返回属性
| 名称 | 类型 | 说明 |
|---|---|---|
appId | String | 支付相关appId |
timeStamp | String | 时间戳 |
nonceStr | String | 随机字符串 |
prepayId | String | 平台返回prepayId |
package_ | String | 订单详情扩展字符串 |
signType | String | 签名方式 |
paySign | String | 签名 |