h5使用js拉起微信支付
近期,业务需求对接了微信支付,做个总结。web网页想要拉起微信支付,有两种方法: H5下单支付 , JSAPI支付 。首先纯前端做不了微信支付,必须配合后端才能通过微信的下单请求。接下来说说这两种方法的区别。
H5微信下单支付
这种支付方式是用户在浏览器端打开网页,通过下单等操作,与后端交互,后端向微信端下单获取到 支付链接地址 。然后返回给前端,前端通过打开这个链接地址跳转到微信APP,进行支付后返回到浏览器端。
下单流程图(来自微信官方)

- 电脑端做扫码支付
由于,前端下单后,后端获取到微信的支付链接地址。发送给前端,前端可以通过qrcode第三方库来转换成二维码在前端显示。这里以vue2.x版本项目为例。
- 安装依赖
# 以你的项目文件夹 打开 cmd 命令
npm i qrcode -D #安装依赖
- 使用
<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是唯一的)。
- 通过调用微信浏览器内置的API拉起支付
// 判断是否在微信浏览器内
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拉起微信支付的更多相关文章
- H5使用codovar插件实现微信支付(微信APP支付模式,前端)
H5打包的app实现微信支付及支付宝支付,本章主要详解微信支付,支付宝支付请查看另一篇“H5使用codovar插件实现支付宝支付(支付宝APP支付模式,前端)” ps:本文只试用H5开发的,微信 AP ...
- 两种js方法发起微信支付:WeixinJSBridge,wx.chooseWXPay区别
原文链接:https://www.2cto.com/weixin/201507/412752.html 1.为什么会有两种JS方法可以发起微信支付? 当你登陆微信公众号之后,左边有两个菜单栏,一个是微 ...
- 【微信H5支付】微信公众号里H5网页点击调取微信支付
最近在公众号里开发了下单支付H5网页,需要在H5里调用微信支付界面.开发思路和代码整理如下: todo...
- .NET Core之微信支付之公众号、H5支付篇
前言 本篇主要记录微信支付中公众号及H5支付全过程. 准备篇 公众号或者服务号(并开通微信支付功能).商户平台中开通JSAPI支付.H5支付. 配置篇 公众号或者服务号中 -------开发----- ...
- 浅析微信支付:微信支付简单介绍(小程序、公众号、App、H5)
本文是[浅析微信支付]系列文章的第二篇,主要讲解一下普通商户接入的支付方式以及其中的不同之处. 上篇文章讲了本系列的大纲,没有看过的朋友们可以看一下. 浅析微信支付:前篇大纲 微信支付是集成在微信客户 ...
- 微信小程序web-view(webview) 嵌套H5页面 唤起微信支付的实现方案
场景:小程序页面有一个web-view组件,组件嵌套的H5页面,要唤起微信支付. 先讲一下我的项目,首先我是自己开发的一个H5触屏版的商城系统,里面含有购物车,订单支付等功能.然后刚开始,我们公众号里 ...
- 微信支付 第三篇 微信调用H5页面进行支付
上一篇讲到拿到了 预支付交易标识 wx251xxxxxxxxxxxxxxxxxxxxxxxxxxxxx078700 第四步,是时候微信内H5调起支付了! 先准备网页端接口请求参数列表 微信文档中已经明 ...
- 微信支付之扫码支付、公众号支付、H5支付、小程序支付相关业务流程分析总结
前言 很久以来,一直想写一篇微信支付有关的总结文档:一方面是总结自己的一些心得,另一方面也可以帮助别人,但是因种种原因未能完全理解透彻微信支付的几大支付方式,今天有幸做一些总结上的文章,也趁此机会,将 ...
- 怎样调通微信支付及微信发货通知接口(Js API)
怎样调通微信支付及微信发货通知接口(Js API) 微信支付提供了一个支付測试页面,微信支付正式使用须要測通支付.发货通知接口 .告警接口.维权接口.告警接口.维权接口非常easy.支付界面调通也相对 ...
- [5] 微信公众号开发 - 微信支付功能开发(网页JSAPI调用)
1.微信支付的流程 如下三张手机截图,我们在微信网页端看到的支付,表面上看到的是 "点击支付按钮 - 弹出支付框 - 支付成功后出现提示页面",实际上的核心处理过程是: 点击支付按 ...
随机推荐
- neo4j配置文件neo4j.conf详解
一.dbms配置 dbms.default_database=neo4j 目录路径 dbms.directories.data=datadbms.directories.plugins=plugins ...
- Akima算法
测量数据的内插已有各种方法,如线性内插.多项式内插.样条函数插值等,但这里的Akima插值法具有独特的优点. 线性内插只顾及其附近两点的影响. 多项式内插时,低阶多项式由于参数较少,内插精度很低,而使 ...
- ETSI GS MEC 013,UE 位置 API
目录 文章目录 目录 版本 功能理解 Relation with OMA APIs Relation with OMA API for Zonal Presence Relation with OMA ...
- OpenNESS & OpenVINO Demo 部署
目录 文章目录 目录 部署架构 部署 Edge Controller 基础配置 配置 Proxy 配置防火墙 Install necessary package Install MySQL Insta ...
- C# 如何获取本机IP
百度搜索的方案 如果你去百度C#如何获取本机IP,那么大概率的你会得到以下的几段代码,第一种就是这样: string name = Dns.GetHostName(); IPAddress[] ipa ...
- Prompt提示词助力AI写作
AI以极高的效率和还可以的输出质量,得到了许多写作人的青睐,Prompt作为AI写作的核心,通过简短的提示来引导AI生成文本,让写作新手也能轻松自如. 1. 看不下去的行业乱状 让人不禁遗憾的是,国外 ...
- Chrome:用uBlacklist屏蔽CSDN搜索结果
CSDN现在广告满天飞,且很多博客需要先关注才能复制,非常令人无语.如果每次用Google搜索的时候都要加上"-csdn"选项,就非常麻烦.有没有更方便的办法呢?我们可以利用Chr ...
- 大数据之Hadoop中HDFS的故障排除
NameNode故障处理 1)需求 NameNode进程挂了并且存储的数据也丢失了 2)故障模拟 (1)kill -9 NameNode进程 kill -9 19886 (2)删除NameNode储存 ...
- wpf – 如何在UIElement.Margin上为绑定设置FallbackValue?
<Border BorderBrush="#cccccc" BorderThickness="1" Margin="{Binding PushM ...
- .Net6 MiNiApi +EFCore6.0高B格操作的WebApi
编辑器的选择项目运行雏形EFCore6.0的使用实体创建![在这里插入图片描述](https://img-blog.csdnimg.cn/abe224cea341434c9299e9643dbcd9e ...