开放平台选择支付产品时没有“app支付”选项是什么原因?
结论
支付产品列表里没有“APP 支付”,通常不代表该产品已被取消。更常见的情况是,当前应用类型、账号资质或签约状态不符合展示条件。
首先检查应用类型。开放平台会根据应用类型筛选可绑定的产品。只有面向原生 Android 或 iOS 客户端的“移动应用”,才会显示或允许接入“APP 支付”。如果创建的是网页应用、小程序或生活号等其他类型,通常看不到这个选项。
可能的原因
1. 应用类型不正确
“APP 支付”供原生移动客户端使用。以下应用类型通常不会显示该选项:
- 网页应用
- 支付宝小程序
- 生活号
- 第三方应用
- 其他不支持 APP 支付的应用类型
应用创建后,一般不能直接更改所属类型。如果类型不符合要求,需要重新创建移动应用。
2. 商家账号不符合签约条件
APP 支付需要签约并接受审核。出现以下情况时,账号可能无法查看或申请该产品:
- 尚未完成企业或个体工商户认证
- 账号主体不在产品支持范围内
- 经营类目不支持 APP 支付
- 账号存在风控、处罚或签约限制
- 当前登录的是开发者账号,实际签约主体属于另一个商家账号
支付宝可能调整具体准入条件,请以后台显示的准入说明和审核结果为准。
3. 产品签约入口有所调整
开放平台后台可能只提供应用管理,支付产品的签约入口则位于支付宝商家平台或产品中心。在部分情况下,需要先由应用所属的商家主体签约 APP 支付,通过审核后再关联应用,无法在创建应用时直接绑定。
后台界面可能随平台升级而变化。找不到入口时,可以依次检查:
- 开放平台应用详情中的“产品绑定”或“能力管理”。
- 商家平台中的“产品中心”或“已签约产品”。
- 当前登录的账号是否为应用所属主体的管理员账号。
4. 使用第三方应用代商家调用
服务商使用的第三方应用,与商家自研移动应用显示的产品列表不同。这类应用不能按照普通移动应用的方式直接绑定 APP 支付,需要采用服务商代调用或商家授权模式接入。
处理步骤
第一步:确认应用类型
进入 open.alipay.com,打开对应应用,查看应用类型和应用场景。
如果需要在 Android 或 iOS 客户端内唤起支付宝完成付款,应创建“移动应用”。如果现有应用是小程序或网页应用,需要重新创建正确类型的应用。修改应用名称或上传安装包并不能改变应用类型。
第二步:确认应用主体
检查以下主体是否一致:
- 开放平台账号的认证主体
- 应用所属主体
- APP 支付签约主体
- 收款支付宝账号主体
主体不一致时,产品可能不会显示,后续的审核、授权或收款配置也可能无法完成。
第三步:检查签约状态
在商家平台或开放平台产品中心搜索“APP 支付”,查看产品处于哪种状态:
- 未签约
- 审核中
- 已签约
- 已失效
- 暂停使用
如果同一主体已经签约该产品,还要确认当前应用是否已与其关联。
第四步:查看准入提示
如果页面显示“暂不支持申请”“当前账号不可签约”等提示,请按照页面要求补充营业执照、经营类目和 APP 信息等材料。
如果页面中完全没有 APP 支付入口,可以向支付宝开放平台客服提交以下信息,请客服核查:
- 应用
app_id - 应用类型
- 账号认证主体
- 经营类目
- 产品列表页面截图
不要公开应用私钥、支付宝公钥或商户账号密码。
接入代码示例
完成 APP 支付签约并成功绑定应用后,才能调用 alipay.trade.app.pay。以下是支付宝 Java SDK 的典型调用结构。具体类名和初始化方式请以实际使用的 SDK 文档为准:
AlipayClient alipayClient = new DefaultAlipayClient(
"https://openapi.alipay.com/gateway.do",
APP_ID,
APP_PRIVATE_KEY,
"json",
"UTF-8",
ALIPAY_PUBLIC_KEY,
"RSA2"
);
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setOutTradeNo("ORDER_202609130001");
model.setTotalAmount("99.00");
model.setSubject("订单支付");
model.setProductCode("QUICK_MSECURITY_PAY");
request.setBizModel(model);
request.setNotifyUrl("https://example.com/alipay/notify");
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
if (response.isSuccess()) {
String orderString = response.getBody();
// 将 orderString 返回给 Android 或 iOS 客户端,
// 再由客户端支付宝 SDK 发起支付。
} else {
throw new IllegalStateException(
response.getCode() + ": " + response.getSubMsg()
);
}
服务端生成订单参数后,需要将完整的 orderString 原样返回客户端。签名必须由服务端完成,不能将 APP_PRIVATE_KEY 放进 Android 或 iOS 安装包。
注意事项
- “APP 支付”与“手机网站支付”是两个不同的产品。H5 页面跳转支付通常使用手机网站支付,原生客户端调用支付宝 SDK 时才使用 APP 支付。
- 产品是否出现在列表中,与代码或 SDK 是否已经安装无关。应先排查应用类型、账号资质和产品签约状态。
- 沙箱环境可用于接口联调,但不能代替正式环境的产品签约和应用审核。
- 不能只根据客户端回调判断支付结果,应以服务端异步通知或主动查询结果为准。
- 收到异步通知后必须验签,并核对
app_id、out_trade_no、total_amount、seller_id等字段。 - 支付宝可能调整后台入口和产品准入规则。如果应用确实是移动应用,主体资质也完整,但列表中仍没有该产品,请以后台实时提示或支付宝开放平台客服的核查结果为准。
备注:内容仅供参考。
