← 返回资讯问答

公众号H5收款:微信内收银怎么搭

日照老板想在微信公众号里直接收钱,却卡在"微信内打开网页怎么调起支付"。这篇用我帮本地餐饮店搭号的实操,讲清H5收银的配置链路和几个踩过的坑。

有个做熟食外卖的日照老板找我,说他有公众号、有菜单,客人在微信里点开下单页死活调不起微信支付,只能用二维码让人截图扫,转化差一大截。我帮他走了一遍 JSAPI(公众号内收银)配置,下面是干货。

先说结论:公众号内收银核心是"JSAPI+网页授权+商户平台绑定"

  • 必须是认证服务号:订阅号开不了微信支付,得先升级认证服务号。
  • 走 JSAPI 支付:微信内网页调起支付用 JSAPI 通道,不是扫码、不是外链。
  • 拿 openid 要网页授权:客人支付前得用网页授权拿 openid,否则下单报参数错。
  • 商户平台绑公众号 AppID:两边 AppID 互绑,漏一处就调不起来。
  • 回调和证书别漏:异步通知地址要公网可达,退款还要装 API 证书(退款见第33篇)。

第一步:服务号与商户号

先确认认证服务号,在公众平台申请或关联商户号。我那客户拿订阅号硬试卡"无权限"白折腾两天,商户号下来开通 JSAPI 支付。

第二步:授权域名与 AppID 互绑

在公众号后台"功能设置"填网页授权域名并传校验文件。再去商户平台把公众号 AppID 绑定并确认。很多人只做一半,结果 openid 能拿但下单报"AppID 与商户号不匹配"。

第三步:调起支付的关键点

客人点"去支付",前端用授权链接跳微信拿 code 换 openid;后端用 openid+订单号调统一下单拿 prepay_id,签名回传前端调 `wx.chooseWXPay`。典型坑:jsapi_ticket 签名要用"当前页面 URL 去参数后",差一个问号就调不起。费率按类目,普通 0.6%(费率见第8篇)。

第四步:对账与异常

每天拉商户平台交易账单和订单系统勾,差额多在退款和未支付单。异步通知可能重发,订单状态用商户订单号做幂等,别重复发货。

常见问题

订阅号能做公众号内收银?

不能走 JSAPI。要么升级认证服务号,要么引导到外部浏览器用 H5 支付,但体验差。正经做生意建议升级。

网页授权拿不到 openid?

查授权域名填对没、校验文件能否公网访问;后端换 code 时别把 AppID 和密钥填反。

调起报"商户号与该 AppID 无绑定"?

去商户平台把公众号 AppID 绑定并确认——光在公众号侧申请不够,商户侧也要确认,两边都是"已关联"才行。

客人付了订单显示未支付?

多半异步通知没收到或没做幂等。查通知地址可达性、看平台是否已推送;收到后用商户订单号更新状态,重复通知跳过。 公众号内收银搭顺了,日照老板在微信里收钱就稳。先服务号、再互绑、再授权拿 openid、最后签名调起。需要小程序回调细节,看第229篇。