h5页面 如何进行微信支付呢?

欢喜 Java经验 发布时间:2025-04-30 09:23:19 阅读数:15848 1
下文笔者讲述H5页面中进行微信支付的方法及示例分享,如下所示

H5生成微信支付的实现思路

1.提前在微信中进行相应的申请操作
2.后端生成预支付单
3.跳转至微信支付中间页

==============注意事项======================
 ✅ 注意事项
- 确保域名已在微信商户平台正确配置
- 所有签名操作必须在后端完成,避免密钥暴露
- 微信支付只支持在微信内置浏览器中打开页面调起支付

1.前提条件

- 拥有微信商户号,并且申请开通了 H5 支付权限。
- 配置好支付域名(确保当前页面网址符合微信白名单)。
- 获取用户的 OpenID(如果需要)。

2.后端生成预支付订单

前端无法直接调起微信支付,需后端通过微信统一下单接口生成预支付交易单:
- 请求地址:`https://api.mch.weixin.qq.com/pay/unifiedorder`
- 参数包括:商品描述、订单号、金额、回调地址、支付类型等。
- 微信返回 `prepay_id` 等信息用于前端唤起支付。

> 注意:签名字段 `sign` 必须由后端生成,不能泄露私钥。

3.前端跳转到微信支付中间页(适用于 H5)

  后端将微信返回的数据组装成如下格式返回给前端:
	 {
	  "appId": "wx8888888888888888",
	  "timestamp": "1609436768",
	  "nonceStr": "5K8264ILTKCH16CQ2502SI8ZNMTM67VS",
	  "package": "prepay_id=wx26160922228953ac8efd8d5b88888888",
	  "signType": "MD5",
	  "paySign": "C380BEC2BFD727A4CE60FED1213676F6"
	}

前端使用 `WeixinJSBridge` 调用微信支付组件

function onBridgeReady(data) {
  WeixinJSBridge.invoke(
    'getBrandWCPayRequest', {
      "appId": data.appId,     // 公众号ID
      "timestamp": data.timestamp, // 时间戳
      "nonceStr": data.nonceStr,   // 随机字符串
      "package": data.package,     // 预支付交易包
      "signType": data.signType,   // 签名方式
      "paySign": data.paySign      // 签名值
    },
    function(res) {
      if (res.err_msg === "get_brand_wcpay_request:ok") {
        alert("支付成功");
      } else if (res.err_msg === "get_brand_wcpay_request:cancel") {
        alert("用户取消支付");
      } else {
        alert("支付失败:" + res.err_msg);
      }
    }
  );
}

// 调用支付前需要判断是否微信环境
if (typeof WeixinJSBridge === "undefined") {
  document.addEventlistener('WeixinJSBridgeReady', function() {
    onBridgeReady(data); // data为后端传来的支付参数
  }, false);
} else {
  onBridgeReady(data);
}

4.支付结果回调处理

   微信支付完成后会异步通知商户服务器(后台配置的 notify_url)。
   商户服务器应验证签名并返回 `success` 给微信,防止重复通知。
   可以通过轮询或 WebSocket 主动更新前端支付状态。
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202504/17459762358455.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者