H5商城支付接入指南

微信/支付宝H5支付配置、域名与合规要点

H5商城的支付接入比封闭形态复杂,原因只有一个:同一套页面会在不同的浏览器环境里被打开,而每个环境能用的支付方式不同。用户可能从微信群点进来(微信内置浏览器)、从短信点进来(iOS Safari)、从信息流广告点进来(各家App的内置浏览器)。因此H5商城的后端必须实现「按环境分支」的统一下单逻辑,前端要能正确识别当前环境。本文按环境拆解需要申请什么、配置什么、怎么联调,并给出一张能挡掉大部分上线故障的域名配置核对表。

一、按环境区分的三种支付方式

用户所在环境 使用的支付方式 openid来源 关键配置
微信内置浏览器(微信内打开H5) 微信JSAPI支付(网页版) OAuth2网页授权 公众号网页授权域名、商户平台JSAPI支付授权目录
普通手机浏览器(Safari、Chrome等) 微信H5支付(会拉起微信客户端) 不需要openid 商户平台H5支付授权域名、场景信息(网站URL与名称)
普通手机浏览器或支付宝内 支付宝手机网站支付 不需要openid 支付宝开放平台应用、签约手机网站支付、应用网关与回调地址

后端应设计成一个统一下单接口,由前端上报当前环境(或后端按User-Agent判断),再选择对应的下单类型。三种方式的订单在数据库里应共用同一张订单表与同一套状态机,只在支付流水上记录通道差异,否则对账和退款会变得很难处理。

二、微信侧接入步骤

2.1 商户号申请与主体一致性

先申请微信支付商户号,需要营业执照、法人身份证、对公账户与经营类目证明,审核一般3-10个工作日;部分类目(食品、医疗器械、图书音像等)需补充行业许可,会再增加1-2周。这里有一条硬性要求必须提前确认:商户号主体、公众号主体、域名备案主体必须是同一家公司,任何一处不一致都会在关联或报备环节被退回,而这种问题往往要重新走一遍资质流程,代价很大。

2.2 微信内打开时:JSAPI支付

流程是:用户在微信内打开H5页面 → 后端引导走OAuth2网页授权(静默授权即可获取openid)→ 拿到openid后调统一下单接口,指定JSAPI类型 → 后端返回支付参数(含二次签名)→ 前端通过微信内置的JS桥调起收银台 → 用户付款 → 微信异步回调通知后端。

需要配置两处域名,位置不同、很容易漏掉其中之一:①公众号后台的「网页授权域名」,不配就拿不到openid;②商户平台的「JSAPI支付授权目录」,需要填到实际发起支付的页面所在目录,注意路径大小写与末尾斜杠。由于不在封闭容器内,H5还要自己处理登录态保持(授权后的会话怎么存)、支付完成后的回跳页面、以及支付中断(用户点了取消或切走了App)时订单状态如何收敛。

2.3 微信外打开时:H5支付

流程是:用户在Safari等浏览器提交订单 → 后端调统一下单指定H5支付类型,并传入场景信息(网站URL与名称)→ 接口返回一个支付中间页地址 → 前端跳转过去,系统会拉起微信客户端完成付款 → 付款后按配置的回跳地址返回商城。

要点有三个:①H5支付需要在商户平台单独开通并配置授权域名,未开通时调用会直接报错;②拉起微信客户端的过程受各浏览器策略影响,需要在真机上逐个浏览器验证,并准备好「未安装微信」或「拉起失败」时的兜底提示;③由于跳出了浏览器,回来后的订单状态要以后端查询结果为准,不能依赖前端回跳参数判断是否付款成功。

三、支付宝手机网站支付

在支付宝开放平台创建应用并签约「手机网站支付」,配置应用网关、回调地址与密钥(推荐使用应用公钥证书模式)。前端通过表单提交或SDK调起,会跳转到支付宝收银台或拉起支付宝App,付款后按配置回跳。服务端需要处理的部分与微信同构:异步通知的接收与验签、幂等处理、主动查询订单、退款与对账。

微信外场景不宜只接微信支付:相当一部分用户更习惯支付宝,只提供微信H5支付会丢掉订单。建议在普通浏览器同时给出微信H5支付与支付宝手机网站支付,并按当前环境给出默认推荐(微信内默认JSAPI,其他浏览器把两个选项都展示出来),把选择权留给用户而不是强行跳转。

四、上线前的域名配置核对表

「开发完成但支付调不通」是H5项目最集中的一类卡点,多数原因在配置而非代码。建议在联调前把下面这张表打印出来,逐项对照实际生产域名打勾:

另外强调一点:测试环境与生产环境必须使用不同的回调地址。共用回调是很隐蔽的一类故障源——测试下的单把生产订单改了状态,或者反过来,排查时非常耗时。

五、安全与合规要点

六、多入口下的账号统一

同一个用户很可能今天从短信在Safari里下单、明天从微信群点进来用JSAPI支付、以后又在小程序里买。如果每个入口各自建账号,会直接导致三个后果:会员等级和积分对不上、优惠券在一个入口领了另一个入口用不了、客服查不到用户的历史订单。

解决办法是在设计阶段就定好跨端唯一键。可行的方案是以手机号作为主账号标识(在下单或注册环节引导完成手机号验证),同时把微信侧的UnionID、支付宝侧的用户标识作为绑定关系存储,一个主账号下可挂多个第三方身份。这样无论用户从哪个入口进来,落到的都是同一个会员。相应地,订单查询与退款入口在所有端都要能看到全部订单,否则客服工单量会明显上升。

七、上线验证与常见故障排查

上线当天的验证顺序建议是:先在微信内用真实小额金额下一笔单走完支付,再在Safari里下一笔走H5支付,再下一笔用支付宝,然后把这三笔全部实际退款一遍,最后核对商户后台的对账单与自己系统的流水是否一致。三条通道都验证过、退款也通过,才算支付真正可用。

几类高频故障的定位方向:调起时报「商家参数格式有误」或类似提示,通常是支付授权目录或H5支付域名与当前页面不匹配;拿不到openid,检查网页授权域名配置与授权回调地址;支付成功但订单状态没变,检查异步通知地址是否可从公网访问、验签是否通过、是否被测试环境抢先处理;微信外拉不起客户端,先确认H5支付是否已开通,再逐个浏览器真机验证。

核心要点

八、下一步怎么推进

准备接入支付前,先确认三件事能省掉大量返工:主体资质是否统一(营业执照、公众号、域名备案是否同一家公司)、经营类目是否需要额外许可(决定商户审核时长)、生产域名是否已确定并完成备案(所有支付配置都依赖它)。整体排期与各阶段交付物见H5商城开发周期与流程,支付费率与短信等持续成本见H5商城后期维护成本,其他高频疑问见H5商城开发常见问题FAQ,也可以通过页面右下角的客服微信索取这份域名核对表的电子版。

联系我们

客服热线

+86 139-2520-6166

邮箱地址

service@kandiantong.com

公司地址

深圳市南山区粤海街道高新区社区高新南七道201号深港产学研基地W903

0/500 字符
看店通客服微信

扫码添加客服微信

微信号:tarshee