PAYATHON 2026

支付宝小程序线上商城申请支付签约是否必须提供店铺信息?

支付阿杰

明确结论

没有实体门店,也可以开通支付宝小程序线上商城或申请支付签约。

申请时出现的“店铺信息”,通常用于核验实际经营场景,并不一定只指线下实体门店。纯线上商城可以根据页面提供的类型,填写小程序名称、线上店铺链接、经营内容,并提交商品页面截图等材料。

最终能否完成签约,还要看商户主体、经营类目、营业执照经营范围、所售商品以及当前页面的审核规则。如果页面明确要求提供实体门店材料,又没有“线上店铺”“小程序”等选项,应先检查是否选错了支付产品或经营场景,不要虚构门店信息。

为什么会要求填写店铺信息

支付签约审核主要确认三个问题:在哪里经营、销售什么、由谁收款。这里的“店铺”可能是:

  • 支付宝小程序商城
  • 已上线的网页商城
  • App 内的线上商城
  • 电商平台店铺
  • 线下实体门店

如果小程序还没有正式发布,审核页面可能要求提供测试页面、商品截图、服务说明,或其他能够证明真实经营场景的材料。

如果申请入口只提供线下门店地址、门头照片等字段,可能有以下原因:

  1. 选择了面向线下经营场景的支付产品。
  2. 商户行业或经营类目选择不准确。
  3. 当前申请的特殊类目需要额外资质。
  4. 商城页面还不完整,无法证明线上经营场景。
  5. 支付宝开放平台当时对该类目有特定的审核要求。

具体字段和材料要求可能发生调整,应以签约后台显示的内容和审核反馈为准。

建议的申请步骤

1. 准备合适的商户主体

通常需要使用与实际经营者一致的主体申请,例如企业、个体工商户或平台允许的其他主体类型。

申请前应核对:

  • 支付宝商家账号的主体
  • 小程序主体
  • 营业执照主体
  • 支付签约主体
  • 实际收款和结算主体

如果这些主体不一致,可能需要补充授权关系或其他证明材料。

2. 选择线上经营场景

申请支付能力时,优先选择与“小程序”“线上商城”或类似线上交易场景对应的产品入口。

不要因为页面出现“店铺信息”,就填写并不存在的实体门店。如果系统允许选择经营场景类型,应选择线上店铺,并提交真实、可访问的经营页面。

3. 完善小程序商城

提交审核前,商城至少应清楚展示以下内容:

  • 商户名称和联系方式
  • 商品或服务的真实内容
  • 商品价格
  • 下单流程
  • 退款或售后规则
  • 用户协议和隐私政策
  • 禁止销售或限制销售商品的管控说明

即使小程序还未正式上线,也应尽量提供完整的测试版本和页面截图。不要只提交空白首页或静态演示页面。

4. 提交线上店铺材料

实际所需材料以申请页面为准。一般可以提前准备:

  • 小程序名称、App ID 和页面路径
  • 商城首页截图
  • 商品详情页截图
  • 购物车及订单确认页截图
  • 营业执照
  • 行业相关许可证
  • 客服联系方式
  • 售后及退款规则
  • 测试账号或体验方式

如果字段名称是“店铺地址”,先确认是否可以填写小程序链接、应用标识或线上经营地址。字段含义不清楚时,可通过开放平台工单或商家客服确认,以免提交错误材料。

5. 根据审核反馈补充材料

审核未通过时,应根据具体的驳回原因补充材料,不要反复提交相同信息。例如:

  • “经营场景不完整”:补充可用的商品、订单和售后页面。
  • “类目不匹配”:调整小程序类目或支付签约类目。
  • “缺少行业资质”:提交对应许可证,或停止经营相关商品。
  • “无法核验店铺”:提供体验路径、测试账号和页面截图。
  • “主体不一致”:补充授权证明,或改用一致的主体申请。

支付接入示例

支付签约通过后,通常由服务端创建支付宝交易,再由小程序端调起收银台。订单金额、商户订单号和商品信息必须由服务端生成并校验,不能直接信任客户端提交的数据。

以下代码只展示典型的调用结构。实际接口权限、SDK 方法名和返回字段,应以接入时使用的支付宝开放平台文档及 SDK 版本为准。

服务端创建交易

AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();

JSONObject bizContent = new JSONObject();
bizContent.put("out_trade_no", "ORDER_202609130001");
bizContent.put("total_amount", "99.00");
bizContent.put("subject", "商城订单");
bizContent.put("buyer_id", buyerId);

request.setBizContent(bizContent.toJSONString());

AlipayTradeCreateResponse response = alipayClient.execute(request);

if (!response.isSuccess()) {
    throw new IllegalStateException(
        response.getCode() + ": " + response.getSubMsg()
    );
}

String tradeNo = response.getTradeNo();

其中:

  • out_trade_no 应是商户系统内唯一的订单号。
  • total_amount 必须以服务端保存的订单金额为准。
  • buyer_id 应通过合规的支付宝用户授权流程取得。
  • 服务端不能只根据接口的同步返回结果,将订单标记为支付成功。

小程序端调起支付

服务端创建交易并返回交易号后,小程序端可以调起支付:

my.tradePay({
  tradeNO: tradeNo,
  success: (result) => {
    console.log('支付调用完成', result);

    // 不要只根据客户端回调修改订单状态。
    // 应再次请求服务端查询最终支付结果。
    refreshOrderStatus();
  },
  fail: (error) => {
    console.error('支付调用失败', error);
  }
});

客户端的成功回调只表示调用流程已经返回。最终是否支付成功,应由服务端结合异步通知或主动查询结果来判断。

服务端处理支付通知

@PostMapping("/alipay/notify")
public String handleNotify(HttpServletRequest request) {
    Map<String, String> params = extractAlipayParams(request);

    boolean verified = AlipaySignature.rsaCheckV1(
        params,
        alipayPublicKey,
        "UTF-8",
        "RSA2"
    );

    if (!verified) {
        return "failure";
    }

    String appId = params.get("app_id");
    String outTradeNo = params.get("out_trade_no");
    String tradeStatus = params.get("trade_status");
    String totalAmount = params.get("total_amount");

    // 还应校验 app_id、商户身份、订单金额、订单状态等信息。
    // 更新订单时必须保证幂等,防止重复通知造成重复入账。
    updateOrderIfPaid(outTradeNo, tradeStatus, totalAmount, appId);

    return "success";
}

extractAlipayParams 和 updateOrderIfPaid 需要由业务侧自行实现。验签、公钥配置及通知参数的处理方式,应以当前 SDK 文档为准。

注意事项

不要伪造实体门店

没有实体门店,就应按线上经营场景如实申请。虚构地址、门头照片或经营信息,可能导致审核失败,也可能影响后续支付权限。

签约通过不代表所有商品都能销售

部分行业需要许可证、备案证明或其他专项资质。开通支付能力后,所售商品仍须符合平台规则和相关法律要求。

保持经营内容一致

营业执照经营范围、小程序类目、支付签约类目和实际销售的商品应尽量一致。如果签约时申报普通零售,实际经营的却是需要特殊资质的商品,可能触发审核或风控。

支付结果必须由服务端确认

不要只依赖 my.tradePay 的客户端回调发货。服务端至少需要完成以下校验:

  • 通知签名是否合法
  • app_id 是否属于当前应用
  • 商户订单号是否存在
  • 支付金额是否与订单一致
  • 订单是否已经处理
  • 交易状态是否满足业务要求

以实际申请页面为准

支付宝开放平台的产品入口、材料字段和审核规则可能变化。如果当前页面确实强制要求实体门店材料,应先核对申请的支付产品和经营类目。仍无法解决时,可将申请页面截图、商户主体类型、小程序 App ID 和驳回原因提交给支付宝开放平台客服或工单渠道确认。

备注:内容仅供参考。