抖音小程序申请支付宝 App 支付时应选择什么产品?
明确结论
如果接入方案要求商户自行开通支付宝支付能力,并在抖音客户端内唤起支付宝完成付款,应选择支付宝的 App 支付 产品。对应接口通常是:
alipay.trade.app.pay
不要因为业务运行在“抖音小程序”中,就选择支付宝的“小程序支付”。支付宝小程序支付用于支付宝客户端内的支付宝小程序,与抖音小程序的运行环境不同。
如果接入的是抖音开放平台提供的担保支付或平台统一支付能力,支付通道由抖音侧管理,商户一般不需要自行调用 alipay.trade.app.pay。具体选择应以抖音开放平台当前提供的支付接入方案和商户进件要求为准。
为什么选择 App 支付
支付宝产品类型取决于支付链路中的调用方式,与业务页面叫“小程序”还是“网页”无关。
常见的支付链路是:
- 用户在抖音小程序内提交订单。
- 商户服务端创建支付宝 App 支付订单。
- 服务端返回支付宝订单字符串。
- 抖音客户端或平台提供的支付接口唤起支付宝。
- 支付宝通过异步通知,将支付结果发送到商户服务端。
在这条链路中,支付宝提供的是移动端 App 支付能力,因此应选择“App 支付”。
其他几种产品通常不适用于这个场景:
- 支付宝小程序支付:用于支付宝小程序内部付款。
- 手机网站支付:主要用于移动浏览器中的 H5 收银台。
- 电脑网站支付:用于桌面浏览器网页支付。
- 当面付:主要用于扫码支付。
申请和接入步骤
1. 先确认抖音侧采用哪种支付模式
先在抖音开放平台后台确认小程序开通了哪种支付能力:
- 如果使用抖音担保支付或平台统一收银台,按抖音平台的进件和签约流程办理。
- 如果文档明确要求商户提供支付宝 App 支付能力,再前往支付宝开放平台申请“App 支付”。
这两种模式的下单接口、签名方式、回调地址和结算流程可能完全不同,不能混用。
2. 在支付宝开放平台创建应用
创建适用于移动端支付的支付宝应用,并申请开通 App 支付 产品。按照平台要求完成以下事项:
- 企业或个体工商户认证
- 应用资料填写
- App 支付产品签约
- RSA2 密钥配置
- 支付回调地址配置
- 应用审核或上线
支付宝开放平台可能调整产品名称和后台入口,申请时以页面当前显示的内容为准。
3. 在服务端创建支付订单
支付请求必须由服务端生成并签名。不要将支付宝应用私钥放入抖音小程序代码。
核心接口参数示例:
{
"method": "alipay.trade.app.pay",
"charset": "utf-8",
"sign_type": "RSA2",
"timestamp": "2026-09-09 12:00:00",
"version": "1.0",
"notify_url": "https://example.com/payment/alipay/notify",
"biz_content": {
"out_trade_no": "ORDER_20260909_0001",
"total_amount": "99.00",
"subject": "商品订单",
"product_code": "QUICK_MSECURITY_PAY"
}
}
参数处理需要注意:
out_trade_no必须是商户侧的唯一订单号。total_amount应由服务端根据订单计算,不能直接采用客户端提交的金额。- App 支付中的
product_code通常为QUICK_MSECURITY_PAY。 - 请求参数需要使用商户应用私钥进行 RSA2 签名。
服务端生成支付订单字符串后,再将其交给抖音侧规定的支付调用接口。客户端接口名称和参数必须以当前版本的抖音开放平台文档为准,不能直接套用支付宝小程序的 my.tradePay。
4. 处理支付宝异步通知
服务端收到异步通知后,应先验签,再核对订单信息:
async function handleAlipayNotify(params) {
const signatureValid = verifyAlipaySignature(params);
if (!signatureValid) {
throw new Error("Invalid Alipay signature");
}
const order = await findOrder(params.out_trade_no);
if (!order) {
throw new Error("Order not found");
}
if (order.amount !== params.total_amount) {
throw new Error("Payment amount mismatch");
}
if (params.trade_status === "TRADE_SUCCESS") {
await markOrderPaidOnce(order.id, params.trade_no);
}
return "success";
}
verifyAlipaySignature、findOrder 和 markOrderPaidOnce 都是示意函数,需要结合实际项目实现。验签时使用支付宝公钥还是支付宝公钥证书,取决于应用采用的密钥模式。
注意事项
- 客户端显示“支付成功”不能作为最终入账依据,应以服务端验签通过的异步通知或主动查询结果为准。
- 私钥保管、请求签名和订单金额计算都必须在服务端完成。
- 支付回调需要做幂等处理,防止重复通知造成重复发货。
- 收到通知后,还应核对
app_id、商户订单号、支付金额和交易状态。 - 抖音担保支付与商户直连支付宝 App 支付是两套不同的方案,不能混用下单接口和回调逻辑。
- 如果抖音平台要求填写支付宝产品类型,并且接入文档明确写明“支付宝 App 支付”,通常选择 App 支付。如果后台只有担保支付进件入口,则按平台流程开通,无须自行申请其他支付宝产品。
备注:内容仅供参考。
