PAYATHON 2026

服务商支持拉起哪些支付类型,能否使用APP或H5支付?

支付小周

结论

如果这里的“服务商”指微信支付服务商模式,可用的方式并不只有付款码支付和 JSAPI 支付。满足产品开通、商户资质、应用绑定等条件后,服务商通常可以为特约商户发起以下支付:

  • JSAPI 支付
  • Native 支付,即扫码支付
  • APP 支付
  • H5 支付
  • 付款码支付

APP 和 H5 支付都可以接入,但服务商不能仅凭服务商身份直接调用。能否成功发起支付,要看服务商和特约商户是否已经开通相应产品,以及公众号、小程序、移动应用、域名等支付场景是否配置完成。

为什么有时只能使用付款码或 JSAPI

可用的支付方式由服务商模式和已开通的支付产品共同决定。服务商模式规定的是服务商代特约商户发起交易,并不会自动开通所有支付方式。

APP 或 H5 支付无法拉起,通常有以下原因:

  1. 特约商户没有开通对应的支付产品。
  2. APP 的应用信息、appid、包名等尚未完成绑定。
  3. H5 支付域名、业务场景或相关资料尚未配置完成。
  4. 请求调用了普通商户接口,没有使用服务商模式对应的合单或合作伙伴接口。
  5. 请求中的服务商商户号、特约商户号与应用标识不匹配。
  6. 前端直接调用下单接口,没有先由服务端完成签名和下单。

接入步骤

1. 确认支付场景

先根据用户实际付款环境选择支付方式:

场景建议支付方式
微信内公众号页面JSAPI 支付
微信小程序小程序支付,通常使用 JSAPI 下单能力
原生移动应用APP 支付
手机浏览器网页H5 支付
用户扫描商户二维码Native 支付
商户扫描用户付款码付款码支付

JSAPI、APP 和 H5 不能作为前端拉起方式随意替换。支付方式必须与用户所处环境、应用主体和产品权限相匹配。

2. 检查产品权限

登录微信支付商户平台,分别检查服务商和特约商户是否拥有目标支付产品的权限。产品名称、开通入口和审核条件可能随平台调整,具体以当前商户平台展示的信息为准。

还需要确认:

  • 服务商商户号可以正常使用。
  • 特约商户号状态正常。
  • 特约商户已授权服务商开展相关业务。
  • APP、公众号、小程序或 H5 域名已按要求绑定。
  • 商户经营类目与实际业务一致。

3. 使用服务商模式接口下单

微信支付 API v3 的服务商模式通常使用 /v3/pay/partner/transactions/... 下的接口,例如:

POST /v3/pay/partner/transactions/jsapi
POST /v3/pay/partner/transactions/native
POST /v3/pay/partner/transactions/app
POST /v3/pay/partner/transactions/h5

付款码支付可能采用不同的接口体系。接入时应根据当前官方文档选择对应接口,不能直接套用 JSAPI、APP 或 H5 的请求结构。

4. 服务端下单并返回拉起参数

下面是 APP 支付的示意请求。字段是否必填及其具体取值,应以当前微信支付 API 文档为准:

{
  "sp_appid": "wx_service_provider_appid",
  "sp_mchid": "1900000001",
  "sub_appid": "wx_sub_merchant_appid",
  "sub_mchid": "1900000002",
  "description": "订单商品",
  "out_trade_no": "ORDER_202609130001",
  "notify_url": "https://merchant.example.com/pay/notify",
  "amount": {
    "total": 100,
    "currency": "CNY"
  }
}

服务端调用接口时,需要按照微信支付 API v3 的规则生成请求签名,例如:

POST /v3/pay/partner/transactions/app HTTP/1.1
Host: api.mch.weixin.qq.com
Authorization: WECHATPAY2-SHA256-RSA2048 mchid="...",nonce_str="...",timestamp="...",serial_no="...",signature="..."
Content-Type: application/json
Accept: application/json

APP 下单成功后,服务端通常会获得 prepay_id,随后需要按照 APP 支付规则生成客户端调起支付所需的签名参数。私钥和签名过程必须保留在服务端,不能写入 APP。

H5 支付的请求结构中还需要包含 H5 场景信息,例如:

{
  "sp_appid": "wx_service_provider_appid",
  "sp_mchid": "1900000001",
  "sub_mchid": "1900000002",
  "description": "订单商品",
  "out_trade_no": "ORDER_202609130002",
  "notify_url": "https://merchant.example.com/pay/notify",
  "amount": {
    "total": 100,
    "currency": "CNY"
  },
  "scene_info": {
    "payer_client_ip": "203.0.113.10",
    "h5_info": {
      "type": "Wap"
    }
  }
}

下单成功后,接口通常会返回 h5_url。移动端浏览器需要跳转到该地址,才能继续完成支付。

注意事项

  • H5 支付主要用于微信外的手机浏览器。微信内网页一般应根据具体场景使用 JSAPI 支付。
  • APP 支付需要原生 APP 配合微信客户端 SDK,普通网页无法通过 APP 支付接口直接拉起。
  • sp_mchid 是服务商商户号,sub_mchid 是特约商户号,两者不能混用。
  • sp_appid、sub_appid 是否必填,取决于支付方式、应用归属和绑定关系,具体以对应接口文档为准。
  • 下单成功不代表付款成功。订单最终状态需要通过支付通知并结合查单接口确认。
  • 支付通知必须验签。如果涉及资源数据加密,还需要使用 API v3 密钥解密。
  • out_trade_no 应保持唯一。同一订单重复提交时,金额和商户信息必须保持一致。
  • 不要在客户端保存商户 API 私钥、API v3 密钥或其他服务端凭据。

如果当前账户只能看到付款码支付和 JSAPI 支付,通常不是因为服务商模式不支持 APP 或 H5,而是相应产品尚未开通、应用关系尚未绑定,或者特约商户资质不符合当前平台要求。

备注:内容仅供参考。