数娱景旅场景开发接入
概述

订阅消息
设置接收消息的应用网关地址
订阅消息接口
消息接口英文名 | 消息接口中文名 | 作用 |
---|---|---|
alipay.open.mini.order.changed | 订单结果通知 | 同步订单的状态变更结果。 |
alipay.open.mini.order.settle.notify | 结算消息通知 | 同步订单在履约账期结束后,资金结算到商家余额户的结果。 |
前端接入
判断订单创建环境
示例代码
Page({
checkBeforeAddOrder() {
if (my.canIUse('checkBeforeAddOrder')) {
my.checkBeforeAddOrder({
success({ requireOrder }) { console.log(requireOrder) },
fail({ error, errorMessage }) {},
complete() {},
})
}
}
});
出参
英文名称 | 类型 | 描述 |
---|---|---|
requireOrder | enum | 是否需要创建交易组件订单,生成order_id 传入支付单。1:需要0:不需要 |
sourceId | String | 跟踪ID,需要获取之后创建业务订单时传入 |
sceneId | String | 公域收费场景值 |
引入前置优惠组件
声明组件
{
"plugins": {
"tradePay": {
"version": "*", // 目前只支持设置 * ,自动选择版本
"provider": "2021003178648009" // 组件Id,固定不变
},
"usingComponents": {
"discount-card": "plugin://tradePay/discountCard"
}
}
}
在页面中初始化获取实例
1.
2.
3.
实例方法
方 法名 | 描述 |
---|---|
getDiscountInfo | 获取优惠信息。详情可查看 前置优惠组件接入。 |
展示前置优惠
<view>
<discount-card />
</view>
<view>
<discount-card style="" class="" />
</view>
获取优惠信息
page({
onLoad() {
payInst.getDiscountInfo({
success: (res) => {
my.alert({ content: res });
},
error: ({errorMsg}) => {
my.alert({ content: errorMsg });
}
})
}
})
本地测试验证
<discount-card forceShow="true"/>
forceShow=true
强制展示来调整组件的样式、位置。服务端接入
业务流转状态说明

接口调用流程

创单
创建商家侧订单
示例代码
my.request({
url: '商家服务端地址',//须在小程序开发设置中加httpRequest域白名单
method: 'POST',
data: {//data里的key、value是开发者自定义的
from: '支付宝',
order: 'XXXXX',//订单信息
},
dataType: 'json',
success: function(res) {
my.alert({content: 'success'});
},
fail: function(res) {
my.alert({content: 'fail'});
},
complete: function(res) {
my.hideLoading();
my.alert({content: 'complete'});
}
});
创建业务订单
示例代码
{
"biz_content": {
"out_order_id": "1686310238345",
"source_id":"MjA4ODMwMjg0ODI0MjA2NXwyMDIxMDA0MTc2NjAwMDEwfDE2ODY3MzAxOTc5MDB8dHJ1ZXxWQUxJRA==",
"title": "虚拟商品订单标题",
"buyer_id": "2088302848242065",
"merchant_biz_type": "VIRTUAL_RECHARGE",+// 虚拟商品的订单类型
"path": "/pages/index/index?orderId=10190608609185",
"order_detail": {
"item_infos": [{
"out_item_id":"asdasdasd111",+// 商品库上需要有对应的的商品库
"out_sku_id":"asdasdasd111",
"item_cnt":"1",
"sale_price":0.2,
"body":"测试商品",
"show_url":""
}],
"extend_params": {
},
"price_info": {
"order_price": 0.2
}
},
"delivery_detail":{
"delivery_type":"VIRTUAL"
}
}
} {
"biz_content": {
"out_order_id": "1686310238345",
"source_id":"MjA4ODMwMjg0ODI0MjA2NXwyMDIxMDA0MTc2NjAwMDEwfDE2ODY3MzAxOTc5MDB8dHJ1ZXxWQUxJRA==",
"title": "虚拟商品订单标题",
"buyer_id": "2088302848242065",
"merchant_biz_type": "VIRTUAL_RECHARGE",+// 虚拟商品的订单类型
"path": "/pages/index/index?orderId=10190608609185",
"order_detail": {
"item_infos": [{
"out_item_id":"asdasdasd111",+// 商品库上需要有对应的的商品库
"out_sku_id":"asdasdasd111",
"item_cnt":"1",
"sale_price":0.2,
"body":"测试商品",
"show_url":""
}],
"extend_params": {
},
"price_info": {
"order_price": 0.2
}
},
"delivery_detail":{
"delivery_type":"VIRTUAL"
}
}
}
重要入参说明
英文名称 | 类型 | 描述 |
---|---|---|
out_order_id | String | 商家外部订单号。 需要和 alipay.trade.create(统一收单交易创建接口)中的 out_trade_no 保持一致 |
title | String | 商品的标题/交易标题/订单标题/订单关键字等。 不可使用特殊字符,如 /,=,& 等。 |
total_price | String | 必填,订单总金额,单位为元,精确到小数点后两位,取值范围 [0.01,100000000]。 |
buyer_id | String | 小程序支付必填,付款用户的支付宝 user_id,获取详情可查看 用户授权文档。 |
seller_id | String | 卖家支付宝用户ID。可登录 账户中心 > 主账号信息 > 账号 ID 获取。 |
merchant_biz_type | String | 订单类型,决定后续履约节点中的参数校验规则,必填。数娱景旅场景固定为VIRTUAL_RECHARGE |
path | String | 商家小程序对应的订单详情页路径地址 value。仅需传入小程序页面路径即可。同一笔订单的链接必须与第一次传入的地址相同,且需是小程序内部页面路径,例如:/pages/index/index?orderId=10190608609185。 |
order_detail.item_infos.out_sku_id | String | 商家商品 sku_id,若是提报到商品库的商品,order_detail.item_infos.out_sku_id 和 order_detail.item_infos.out_item_id 必传。 |
order_detail.item_infos.out_item_id | String | 商家商品 ID,若是提报到商品库的商品,order_detail.item_infos.out_sku_id 和 order_detail.item_infos.out_item_id 必传。订单中的商品在商品库必须是虚拟商品类目。 |
source_id | String | 追踪 ID,公域分发场景必传,会影响主播归因、分享员归因等。通过调用 my.checkBeforeAddOrder(订单前置判断接口)返回。 |
delivery_detail.delivery_type | String | 物流类型,虚拟商品字段为 VIRTUAL |
重要出参说明
英文名称 | 描述 |
---|---|
order_id | 交易组件订单号。可以把获取到的order_id作为alipay.trade.create(统一收单交易创建接口)extend_params.trade_component_order_id的入参进行关联。 |
out_order_id | 外部商户订单号 |
创建支付单
示例代码
//实例化客户端
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.create.
AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
//SDK 已经封装掉了公共参数,这里只需要传入业务参数。
request.setBizContent( "{" +
"\"out_trade_no\": \"20171115010101001\"," +// 与out_order_id保持一致
"\"total_amount\": 0.01," +
"\"subject\": \"月卡充值\"," +
"\"buyer_id\": \"用户uid\"," +// 小程序支付场景中该参数必传
"\"op_app_id\": \"2014072300007148\"," +
"\"extend_params\": {" +
"\"trade_component_order_id\": \"2023060801502300000008810000005657\"" +// 小程序公域商品交易场景中该参数必传
"}"
try {
AlipayTradeCreateResponse response = alipayClient.execute(request);
String trade_no = response.getTradeNo();// 获取返回的tradeNO。
} catch (AlipayApiException e) {
e.printStackTrace();
}
重要入参说明
英文名称 | 类型 | 描述 |
---|---|---|
out_trade_no | String | 必填,商户订单号。需要和 alipay.open.mini.order.create(订单创建)里面的 out_order_id 保持一致。 |
product_code | String | 必填,交易组件场景只支持产品码 JSAPI_PAY。 |
subject | String | 商品的标题/交易标题/订单标题/订单关键字等。 不可使用特殊字符,如 /,=,& 等。 |
total_amount | String | 必填,订单总金额,单位为元,精确到小数点后两位,取值范围 [0.01,100000000]。 |
buyer_id | String | 小程序支付必填,付款用户的支付宝 user_id,获取详情可查看 用户授权文档。 |
seller_id | String | 卖家支付宝用户 ID。可登录 账户中心 > 主账号信息 > 账号 ID 获取。 |
notify_url | String | 接收的异步通知 http/https 路径地址。用户支付成功时,支付宝将向本地址发送异步通知。 |
out_trade_no | String | 必填,商户订单号。由商家自定义,64个字符以内,仅支持字母、数字、下划线且需保证在商户端不重复。 |
extend_params | String | extend_params.trade_component_order_id:小程序公域商品交易场景中该参数必传,即业务订单号 order_id。 |
重要出参说明
英文名称 | 描述 |
---|---|
out_trade_no | 外部商户支付单号 |
trade_no | 支付宝交易号。小程序唤起收银台时入参 tradeNO 的值。 |
支付
唤起收银台
示例代码
// .js
my.tradePay({
// 调用统一收单交易创建接口(alipay.trade.create),获得返回字段支付宝交易号trade_no
tradeNO: '201711152100110410533667792',
success: (res) => {
my.alert({
content: JSON.stringify(res),
});
},
fail: (res) => {
my.alert({
content: JSON.stringify(res),
});
}
});