近期,业务需求对接了微信支付,做个总结。web网页想要拉起微信支付,有两种方法: H5下单支付 , JSAPI支付 。首先纯前端做不了微信支付,必须配合后端才能通过微信的下单请求。接下来说说这两种方法的区别。

H5微信下单支付

这种支付方式是用户在浏览器端打开网页,通过下单等操作,与后端交互,后端向微信端下单获取到 支付链接地址 。然后返回给前端,前端通过打开这个链接地址跳转到微信APP,进行支付后返回到浏览器端。

  • 电脑端做扫码支付

由于,前端下单后,后端获取到微信的支付链接地址。发送给前端,前端可以通过qrcode第三方库来转换成二维码在前端显示。这里以vue2.x版本项目为例。

  1. 安装依赖
# 以你的项目文件夹 打开 cmd 命令
npm i qrcode -D #安装依赖
  1. 使用
<template>
<div class="qrcode">
<img :src="payImg" alt="支付二维码" />
</div>
</template>
<script>
import QRCode from "qrcode";
export default {
data(){
return {
payImg: null,
}
},
methods:{
getUrlSrc(words) {
return new Promise((res, rej) => {
var QRCodeOpts = {
errorCorrectionLevel: "H",
type: "image/jpeg",
quality: 0.8,
width: 400,
margin: 1,
};
QRCode.toDataURL(words, QRCodeOpts, function (err, url) {
if (err) {
console.log(err);
return rej(err);
}
res(url);
});
});
},
},
mounted(){
// 调用方法 生成二维码图片
this.getUrlSrc("https://weixin.....")
.then(url => {
// 显示到img元素上
this.payImg = url
})
.catch(err => {
// 报错了。。。
alert(err)
})
}
}
</script>
  • 注意事项

此方法支付不能在微信内访问页面拉起支付。必须在 外部浏览器 跳转 微信返回的支付地址 才能打开。(否则会提示:请从微信外打开订单,进行支付)。

JSAPI下单支付

这种支付方式适用 微信公众号 ,或 微信内置浏览器 内打开的网页来拉起微信支付。通过与后端交互,后端获取到微信下单所需要的参数(openid至关重要)返回给前端,前端通过此参数直接调用微信的JSAPI,就可以拉取支付了。

  • 网页需要获取code下单发送给后端。

推荐使用 静默授权 获取到 code 后发送给后端,后端通过微信接口获取到微信用户的 openid获取code方法。先要获取到code,然后把这个code发送给后端,后端去通过微信的接口获取到openid(微信用户的openid是唯一的)。

// 判断是否在微信浏览器内
if (/MicroMessenger/i.test(window.navigator.userAgent)) {
WeixinJSBridge.invoke('getBrandWCPayRequest', {
// 此参数需要通过后端发送到前端 不推荐前端生成
"appId": "wx2421b1c4370ec43b", //公众号ID,由商户传入
"timeStamp": "1395712654", //时间戳,自1970年以来的秒数
"nonceStr": "e61463f8efa94090b1f366cccfbbb444", //随机串
"package": "prepay_id=up_wx21201855730335ac86f8c43d1889123400",
"signType": "RSA", //微信签名方式:
"paySign": "...." //微信签名
},
function(res) {
// get_brand_wcpay_request:cancel 支付过程中用户取消
// get_brand_wcpay_request:fail 支付失败
if (res.err_msg == "get_brand_wcpay_request:ok") {
// 使用以上方式判断前端返回,微信团队郑重提示:
//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
}
});
}
  • 注意

微信公众号需要在设置 网页授权域名jsAPI域名 为你的网站地址,否则会出现地址验证失败。

h5使用js拉起微信支付的更多相关文章

  1. H5使用codovar插件实现微信支付(微信APP支付模式,前端)

    H5打包的app实现微信支付及支付宝支付,本章主要详解微信支付,支付宝支付请查看另一篇“H5使用codovar插件实现支付宝支付(支付宝APP支付模式,前端)” ps:本文只试用H5开发的,微信 AP ...

  2. 两种js方法发起微信支付:WeixinJSBridge,wx.chooseWXPay区别

    原文链接:https://www.2cto.com/weixin/201507/412752.html 1.为什么会有两种JS方法可以发起微信支付? 当你登陆微信公众号之后,左边有两个菜单栏,一个是微 ...

  3. 【微信H5支付】微信公众号里H5网页点击调取微信支付

    最近在公众号里开发了下单支付H5网页,需要在H5里调用微信支付界面.开发思路和代码整理如下: todo...

  4. .NET Core之微信支付之公众号、H5支付篇

    前言 本篇主要记录微信支付中公众号及H5支付全过程. 准备篇 公众号或者服务号(并开通微信支付功能).商户平台中开通JSAPI支付.H5支付. 配置篇 公众号或者服务号中 -------开发----- ...

  5. 浅析微信支付:微信支付简单介绍(小程序、公众号、App、H5)

    本文是[浅析微信支付]系列文章的第二篇,主要讲解一下普通商户接入的支付方式以及其中的不同之处. 上篇文章讲了本系列的大纲,没有看过的朋友们可以看一下. 浅析微信支付:前篇大纲 微信支付是集成在微信客户 ...

  6. 微信小程序web-view(webview) 嵌套H5页面 唤起微信支付的实现方案

    场景:小程序页面有一个web-view组件,组件嵌套的H5页面,要唤起微信支付. 先讲一下我的项目,首先我是自己开发的一个H5触屏版的商城系统,里面含有购物车,订单支付等功能.然后刚开始,我们公众号里 ...

  7. 微信支付 第三篇 微信调用H5页面进行支付

    上一篇讲到拿到了 预支付交易标识 wx251xxxxxxxxxxxxxxxxxxxxxxxxxxxxx078700 第四步,是时候微信内H5调起支付了! 先准备网页端接口请求参数列表 微信文档中已经明 ...

  8. 微信支付之扫码支付、公众号支付、H5支付、小程序支付相关业务流程分析总结

    前言 很久以来,一直想写一篇微信支付有关的总结文档:一方面是总结自己的一些心得,另一方面也可以帮助别人,但是因种种原因未能完全理解透彻微信支付的几大支付方式,今天有幸做一些总结上的文章,也趁此机会,将 ...

  9. 怎样调通微信支付及微信发货通知接口(Js API)

    怎样调通微信支付及微信发货通知接口(Js API) 微信支付提供了一个支付測试页面,微信支付正式使用须要測通支付.发货通知接口 .告警接口.维权接口.告警接口.维权接口非常easy.支付界面调通也相对 ...

  10. [5] 微信公众号开发 - 微信支付功能开发(网页JSAPI调用)

    1.微信支付的流程 如下三张手机截图,我们在微信网页端看到的支付,表面上看到的是 "点击支付按钮 - 弹出支付框 - 支付成功后出现提示页面",实际上的核心处理过程是: 点击支付按 ...

随机推荐

  1. RMBG1.4服务器部署指南

    近期,一家AIGC公司BRIA开源了一个出圈的模型:RMBG-1.4,它可以实现高质量地一键去除图片中的背景.下面是一些具体的例子,可以看到这个模型可以实现非常精细的"抠图". R ...

  2. .NET周刊【5月第2期 2024-05-12】

    国内文章 C#在工业数字孪生中的开发路线实践 https://mp.weixin.qq.com/s/b_Pjt2oii0Xa_sZp_9wYWg 这篇文章探讨了C#在工业数字孪生技术中的应用,介绍了三 ...

  3. winform 绘图控件 chart 实时曲线图

    官方教程:http:////files.cnblogs.com/files/HelloQLQ/Winform图表.rar 更多参考:https://blog.csdn.net/boxuming/art ...

  4. conda错误 创建新环境conda create -n TF117 python=3.5时报错 An unexpected error has occurred. Conda has prepared the above report.

    创建新环境conda create -n TF117 python=3.5时报错 An unexpected error has occurred. Conda has prepared the ab ...

  5. uniapp 上拉加载下拉刷新

    page.json中配置"enablePullDownRefresh": true //单个页面修改刷新按钮的颜色 "app-plus": { "ti ...

  6. jquery浏览器的上卷高度 节点的创建和写入 节点的删除

    // js 的兼容语法         // let scrollT = document.documentElement.scrollTop || document.body.scrollTop; ...

  7. 算法学习笔记(30):Kruskal 重构树

    Kruskal 重构树 这是一种用于处理与最大/最小边权相关的一个数据结构. 其与 kruskal 做最小生成树的过程是类似的,我们考虑其过程: 按边权排序,利用并查集维护连通性,进行合并. 如果我们 ...

  8. INFINI Labs 产品更新 | Easysearch 1.7.1发布

    INFINI Labs 产品又更新啦~,包括 Console,Gateway,Agent 1.23.0 和 Easysearch 1.7.1.此次版本重点修复历史遗留 Bug .网友们提的一些需求等. ...

  9. vs code 中开发 .net5 mvc

    asp.net core mvc ------------ 安装vscode-solution-explorer,C# 2个扩展.遇到yes就点yes. 新建一个文件夹:D:\repos\Net5Mv ...

  10. 在线SQL格式化工具推荐

    在线SQL格式化工具,一键美化.整理您的SQL代码,支持多种数据库语法格式化.有效提升代码可读性,方便团队协作与快速定位问题,是开发人员必备的SQL编程助手,让复杂查询更清晰,更易于维护. 在线SQL ...