当前位置: 首页 > news >正文

H5页面的几种 支付方式

1)微信 H5 支付(trade_type=MWEB)
  • 场景:微信外浏览器(Safari、Chrome、系统浏览器、QQ 浏览器等)打开的网页微信支付
  • 流程:网页下单→跳微信中间页→唤起微信 APP 付款→返回商户页微信支付
  • 关键:需备案域名、商户平台开通 “H5 支付” 并配置域名白名单微信支付
  • 注意:公众号内网页不能用这个,公众号内要用 JSAPI 支付
2)支付宝 H5 支付(官方叫 “手机网站支付”)
  • 场景:手机浏览器网页,同微信 H5
  • 流程:网页下单→跳支付宝中间页→唤起支付宝 APP;没装 APP 则引导下载或网页收银台
  • 关键:开放平台开通 “手机网站支付”,配置备案域名与回调地址

3) JSAPI 支付(公众号 H5 支付)

适用场景

  • 微信内置浏览器、公众号、服务号网页
  • 特点
  • 必须引入微信 JS-SDK,也就是这个文件:
  • <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
  • 必须微信授权登录openid
  • WeixinJSBridge.invokewx.chooseWXPay弹窗支付
  • 交易类型:trade_type=JSAPI
  • 只能在微信里用

一,微信支付

微信内两种 H5 支付的区别:

WeixinJSBridge.invoke(无 config 版)

特点:

  • 不用引入微信 jssdk
  • 不用 wx.config
  • 不用签名、不用传 url、不用配置 js 安全域名
  • 纯靠微信内核自带的能力
  • 只支持:支付
  • 最稳定、最简单、坑最少

需要 wx.config 的版本:wx.chooseWXPay

特点:

  • 必须引入 jssdk
  • 必须 wx.config 签名
  • 必须传当前 url
  • 必须配置 js 接口安全域名
  • 支持:支付 + 分享 + 扫一扫 + 定位等所有功能

wx.config({

debug: false,

appId: '你的appid',

timestamp: '后端给的',

nonceStr: '后端给的',

signature: '后端给的',

// 支付必须加这个,虽然JS-SDK列表里不显示

jsApiList: ['chooseWXPay']

});

wx.ready(function () {

wx.chooseWXPay({

timestamp: '', nonceStr: '',

package: 'prepay_id=xxx',

signType: 'RSA',

paySign: '',

success() {},

cancel() {},

fail() {}

});

});

wx.checkJsApi

微信官方文档明确写了:支付接口不支持 checkJsApi 判断; 只能检测非支付类接口,例如:

wx.checkJsApi({

jsApiList: ['scanQRCode', 'getLocation', 'chooseImage'],

success: function (res) {

console.log(res.checkResult);

}

});

二,H5支付

1、H5 支付 前置必备条件

  • 微信商户平台开通H5 支付权限
  • 商户平台配置H5 支付域名业务域名
  • 有:商户号、API 密钥、商户证书(部分接口用)
  • 网页是已备案域名,不能 IP、不能localhost

2、完整标准流程(从头到尾)

1. 用户操作

用户手机浏览器 / 微信外扫码 → 打开你的 H5 支付页面

2. 前端页面
  1. 输入金额 / 选择商品
  2. 前端把金额、订单号传给后端接口

3. 后端核心步骤(关键)

步骤 1:接收前端参数,生成唯一商户订单号

步骤 2:调用微信【统一下单接口】

请求微信接口地址:

plaintext

https://api.mch.weixin.qq.com/pay/unifiedorder

必传参数:

  • appid(公众号 / 应用 APPID)
  • mch_id 商户号
  • nonce_str 随机字符串
  • body 订单描述
  • out_trade_no 你自己的订单号
  • total_fee 支付金额
  • spbill_create_ip 用户真实 IP
  • trade_type = MWEB(固定 H5 支付类型)
  • scene_info必传,H5 必须传这个固定场景参数
  • notify_url 微信异步回调地址(支付结果异步推给你)
  • return_url 支付完成跳转回你的页面地址

重点:trade_type 填MWEB才是 H5 支付

步骤 3:微信统一下单返回

返回关键字段:

  • mweb_url微信 H5 支付中间跳转地址

步骤 4:后端把mweb_url返回给前端

4. 前端拿到 mweb_url

直接页面跳转

js

location.href = res.data.mweb_url;

浏览器会自动跳转到微信官方支付中间页

5. 用户端操作

跳转后唤起微信 → 输入密码 / 指纹 / 面容 完成付款

6. 支付后自动回流

用户支付成功 / 取消 / 关闭微信会自动跳回你后端配置的return_url页面

7. 前端回流页面处理

在 return_url 结果页:

  • 主动请求后端接口查询订单状态
  • 展示:支付成功、支付失败、已取消

8. 后端异步回调(最核心、以这个为准)

微信会主动请求你配置的notify_url

  • 携带真实支付结果、订单号、金额
  • 后端验签、校验金额、订单号
  • 校验通过 →修改订单状态、发货、充值、开通权限
  • 给微信返回固定 xml 格式成功响应

3、H5 支付 关键特点(必记)

  1. 前端不能实时拿到支付结果跳转到 mweb_url 后页面离开,JS 暂停,没法即时回调
  2. 只能靠两个方式拿结果:
    • 回流 return_url 前端查状态(给用户看)
    • 后端 notify_url 异步回调(业务真正入账)
  3. 不需要微信授权、不需要 openid和公众号静默授权完全没关系,H5 支付不用 openid
  4. 只能在外浏览器用,微信内置浏览器不要用 H5,要用 JSAPI

三,支付宝支付

支付宝内置浏览器里,普通 H5 扫码支付「不用授权、不用 user_id」,直接可以支付;只有你要「拿到用户信息 / 登录」时才需要授权。

1)使用场景:用户用支付宝 “扫一扫” 扫你的码(H5 链接)

  • 二维码内容:你的 H5 页面地址(https://xxx.com/pay)
  • 用户扫码 →支付宝内置浏览器打开你的页面
  • 你在页面里放一个 “去支付宝付款” 按钮 → 后端生成alipay.trade.wap.pay(手机网站支付)的表单 / 链接 → 前端跳转
  • 跳到支付宝收银台 →直接输密码 / 指纹付款
  • 全程不需要授权、不需要 alipay_user_id、不需要拿到用户信息

$.ajax({

url: "你的后端接口地址",

type: 'POST',

dataType: 'json',

data: data,

success: function(res){

if(res.code === 200 && res.data){

//若后端返回form表单字符串

let alipayFormHtml = res.data;

function submitAlipayForm(formStr) {

// 插入到页面

document.getElementById('payBox').innerHTML = formStr;

// 自动提交表单

setTimeout(() => {

document.forms[0].submit();

}, 100);

}

submitAlipayForm(alipayFormHtml);

//如果返回的是url地址则直接跳转到该地址即可

}else{

alert(res.msg || '创建订单失败');

}

},

error: function(){

alert('网络请求失败');

}

});

http://www.jsqmd.com/news/786023/

相关文章:

  • AI驱动PDE逆问题求解:从物理约束到工程设计的范式革新
  • 微深节能 龙门吊行车定位及控制系统 格雷母线
  • x.com 提示:启用 JavaScript 或切换浏览器,禁用隐私扩展程序以正常使用
  • DownKyi哔哩下载姬:B站视频下载完整教程与使用指南
  • 南宁家长真实评价:用了3年家教总动员,最看重的不是价格而是这两点 - 教育快讯速递
  • 敢于冲刷那些虚浮的“人设”
  • 2026漏洞挖掘实战指南:从零基础到独立挖到第一个漏洞,拿下第一桶金!
  • 生成式AI与LLM恶意应用:深度伪造与社会操纵的防御实战
  • [极客大挑战 2019]Havefun
  • T1-Super-AI:构建多智能体协作框架,从原理到实战
  • 基于SVR与特征选择的系外行星半径预测:从数据清洗到模型调优实战
  • 机器学习项目成功基石:数据就绪度评估与可视化分析实战指南
  • CANN/pypto设置立方体切片形状
  • 收藏!AI浪潮下,大龄程序员如何逆袭,掌握未来核心竞争力!
  • 梁耀烽:苦难也有童话 十亿分之一的奇迹
  • OpenClaw Client:构建现代化AI Agent Web控制台的完整指南
  • 互联网大厂 Java 求职面试:从电商场景到微服务架构的深度探讨
  • RAG(检索增强生成)原理详解
  • 网络安全零基础自学 CTF 完整路线,打通 CTF 到护网进阶之路
  • 南宁初中数学差找什么家教?南宁家教总动员学科匹配与试听指南 - 教育快讯速递
  • 可解释AI(XAI)技术解析:从原理到行业落地实践
  • Ubuntu22-04上安装配置NVIDIA-RTX3090显卡驱动
  • 2026届学术党必备的六大AI辅助写作工具推荐榜单
  • 怎么从视频里快速提取文字?2026年这5款可以提取视频中文字的软件对比
  • 华为CANN opbase算子开发API列表
  • 初次接触大模型API的新手从注册到发出第一个请求的全指南
  • ESP固件烧录终极指南:15分钟掌握esptool核心技巧
  • 在Taotoken控制台查看与分析API用量数据的实践
  • C语言Json库 —— cJson
  • CANN/GE运行时执行系统——从OM文件到硅片计算的桥梁