浙里办H5应用申请支付宝APP支付能力时资料如何填写?
结论
通常应提交以下几类主体的真实资料:
- 商户主体:H5 应用的实际运营方、收款方,或承担交易责任的单位。
- 应用资料:该 H5 应用在“浙里办”开放平台登记的信息,包括实际业务场景、服务名称和访问地址。
- 结算资料:实际接收支付宝结算款项的商户资料。
不要直接填写“浙里办”的主体、App 包名、应用截图或其他资料。只有在浙里办明确要求接入其统一支付宝应用,并提供了可用的支付宝 app_id、商户签约关系及配套资料时,才能按其要求填写。
简单来说:谁运营业务、谁收款、谁承担交易责任,就以谁的主体申请支付能力。浙里办通常只是 H5 的运行载体。
为什么要这样填写
这里涉及三个不同的概念:
-
业务应用
也就是运行在浙里办中的 H5 应用。 -
支付宝开放平台应用
服务端通过该应用的app_id调用支付宝接口,生成订单参数。 -
签约和收款主体
负责交易、退款、投诉和资金结算的单位。
浙里办的 JSAPI 只是调用宿主客户端能力的入口,并不表示交易主体是浙里办。即使支付宝最终由浙里办客户端唤起,订单中的商户身份、签名和异步通知仍来自你的支付宝开放平台应用。
未经授权使用浙里办的资料,可能导致:
- 应用主体与实际经营主体不一致;
- 无法证明你有权使用浙里办 App 的包名或品牌资料;
- 支付能力审核被驳回;
- 后续签名、结算、退款或投诉责任无法对应;
app_id使用错误,导致订单验签或支付调用失败。
申请资料如何填写
支付宝开放平台可能会调整具体字段名称,但填写时可以遵循下面的原则。
商户主体信息
填写 H5 应用实际运营单位的企业或机构资料,包括:
- 单位名称;
- 统一社会信用代码;
- 法定代表人或负责人信息;
- 营业执照或事业单位相关证件;
- 实际经营范围;
- 商户联系人;
- 结算账户。
如果 H5 应用由公共服务机构建设、技术公司开发,实际收款又由另一家单位完成,应先确定谁是支付宝签约商户。系统由某家公司开发,并不意味着应当使用开发公司的主体申请。
应用和业务场景
应用名称、业务说明和截图应如实反映该 H5 在浙里办中的使用场景,例如:
- H5 服务的正式名称;
- 服务入口在浙里办中的位置;
- 商品或服务内容;
- 下单页面;
- 金额确认页面;
- 支付按钮和支付流程;
- 支付完成页面;
- 用户协议、退款规则和客服入口。
业务说明可以这样写:
本应用为部署在浙里办客户端内的 H5 服务。用户在 H5 页面确认订单后,由业务服务端创建支付宝订单并返回订单参数,再通过浙里办提供的 JSAPI 唤起支付宝支付。交易收款、退款及用户服务由本单位负责。
除非确实有相应授权或合作关系,否则不要将应用描述为由浙里办直接运营。
App 包名等客户端资料
这部分最容易产生疑问。
H5 应用通常没有独立的 Android 包名或 iOS Bundle ID,实际宿主是浙里办客户端。遇到这种情况,不要自行将浙里办的包名、Bundle ID、下载地址或版权资料填成自己的资料。
建议依次确认:
- 查看浙里办接入文档,确认是否提供了支付宝 APP 支付能力的专用申请流程。
- 确认支付使用的是自有支付宝
app_id,还是浙里办提供的统一支付应用。 - 如果申请页面强制要求填写 App 包名、Bundle ID 或应用商店地址,应向浙里办技术支持和支付宝开放平台确认该场景的认证方式。
- 按照平台提供的授权材料或专用入口填写,不要猜测,也不要提交虚假信息。
如果支付宝只允许独立原生 App 申请 APP 支付能力,而浙里办又不能提供宿主授权资料,就可能无法通过普通 APP 支付流程申请。此时需要双方确认是否应改用网页支付、生活号支付、小程序支付,或浙里办统一支付能力。
推荐的确认步骤
正式提交前,至少确认以下事项:
- 服务端调用支付接口时使用谁的支付宝
app_id; - 该
app_id的认证主体是谁; - 支付款项最终结算到谁的账户;
- 浙里办 JSAPI 接收的是完整
orderString,还是订单号、支付链接等其他参数; - 是否需要配置支付宝公钥、应用公钥和异步通知地址;
- 宿主 App 信息由谁提供;
- 浙里办是否有针对 APP 支付的授权证明或报备流程。
前三项必须保持一致,或者存在支付宝认可的商户代运营、服务商关系。
服务端生成 APP 支付订单示例
下面使用支付宝 Java SDK 展示常见的 alipay.trade.app.pay 调用方式。具体 SDK 版本、密钥模式和参数应以当前支付宝开放平台文档及浙里办接入文档为准。
AlipayClient alipayClient = new DefaultAlipayClient(
"https://openapi.alipay.com/gateway.do",
appId,
merchantPrivateKey,
"json",
"UTF-8",
alipayPublicKey,
"RSA2"
);
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
request.setNotifyUrl("https://example.com/api/alipay/notify");
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setOutTradeNo("ORDER_202609090001");
model.setSubject("业务服务订单");
model.setTotalAmount("10.00");
model.setProductCode("QUICK_MSECURITY_PAY");
request.setBizModel(model);
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
if (!response.isSuccess()) {
throw new IllegalStateException(
"创建支付宝订单失败:" + response.getSubCode() + " " + response.getSubMsg()
);
}
// 将原始 orderString 返回给 H5,不要进行二次拆分或重新拼接。
String orderString = response.getBody();
服务端可以向 H5 返回:
{
"orderString": "app_id=...&biz_content=...&sign=..."
}
H5 再按照浙里办文档规定的 JSAPI 调用方式,将 orderString 交给宿主客户端。问题中没有提供具体的 JSAPI 名称和参数结构,因此不能直接假定接口名。典型逻辑如下:
const response = await fetch("/api/payment/alipay/app-order", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
orderId: "ORDER_202609090001"
})
});
const { orderString } = await response.json();
// 此处必须替换为浙里办文档规定的真实 JSAPI。
await invokeZlbAlipayPay({
orderString
});
支付结果处理
客户端返回“支付成功”只能用于改善页面体验,不能作为发货、开通服务或更新订单状态的唯一依据。
服务端应接收支付宝异步通知,并完成以下处理:
- 验证支付宝签名;
- 核对
app_id; - 核对
out_trade_no; - 核对订单金额;
- 核对收款商户身份;
- 判断
trade_status; - 以幂等方式更新订单状态;
- 按接口要求返回通知处理结果。
不要信任 H5 传回的金额,也不要在前端保存应用私钥。订单金额、商户订单号和签名都必须由服务端生成。
注意事项
- 不要填写浙里办的主体资料,除非已经获得明确授权,并采用其统一支付方案。
- 不要擅自使用浙里办客户端的包名、Bundle ID、Logo 或应用商店链接。
- H5 运营主体与收款主体不一致时,应先确认是否需要服务商模式、代运营授权或其他商户关系。
- 沙箱环境和生产环境的
app_id、密钥、网关配置不能混用。 orderString通常应原样传递,不要自行进行 URL 解码、参数重排或重新拼接。- 支付能力的审核要求可能调整。遇到必须填写宿主 App 信息的字段时,应同时向浙里办技术支持和支付宝开放平台说明具体场景,并以双方当前的审核要求为准。
备注:内容仅供参考。
