我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么在Html5中实现微信支付

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么在Html5中实现微信支付

本篇文章为大家展示了怎么在Html5中实现微信支付,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

爬坑之路

爬坑一:单页SPA和后端路由的问题

这个我已经单独做总结:https://www.yisu.com/article/144341.htm

爬坑二:安卓大概率调起微信支付失败(引入微信的js-sdk包失败)

在微信的官方文档中:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6

有这样的一个DEMO:

function onBridgeReady(){   WeixinJSBridge.invoke(      'getBrandWCPayRequest', {         "appId":"wx2421b1c4370ec43b",     //公众号名称,由商户传入              "timeStamp":"1395712654",         //时间戳,自1970年以来的秒数              "nonceStr":"e61463f8efa94090b1f366cccfbbb444", //随机串              "package":"prepay_id=u802345jgfjsdfgsdg888",              "signType":"MD5",         //微信签名方式:              "paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名       },      function(res){      if(res.err_msg == "get_brand_wcpay_request:ok" ){      // 使用以上方式判断前端返回,微信团队郑重提示:            //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。      }    }); }if (typeof WeixinJSBridge == "undefined"){   if( document.addEventListener ){       document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);   }else if (document.attachEvent){       document.attachEvent('WeixinJSBridgeReady', onBridgeReady);        document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);   }}else{   onBridgeReady();}

在后端同事授权成功后,在活动页面页面引入这段代码,开开心心,build 提交 测试 嗯苹果没问题,安卓好像没问题,然鹅安卓有时候调不起支付,开始以为是微信版本的原因,等等其他,但是,调起成功的概率也太TM低了,10次才能调起1次,得,肯定是代码原因了。改吧。

解决思路:

开微信开发者工具,打log,最后发现在这一步时候if (typeof WeixinJSBridge == "undefined")

ios能够调起微信浏览器的js-sdk

安卓大部分都走到undefined里面去了

这里其实我也不太清楚原因。个人感觉是微信安卓的内置浏览器版本和这个 WeixinJSBridge 方法的问题。(希望有大神能够解答一下)

既然js-sdk 调不起,那就手动引入配置吧 //所以有时候偷懒反而更加麻烦,吸取教训

if (typeof WeixinJSBridge == "undefined"){    console.log( WeixinJSBridge);   if( document.addEventListener ){       document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);   }else if (document.attachEvent){       document.attachEvent('WeixinJSBridgeReady', onBridgeReady);        document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);   }}else{   onBridgeReady();}

Vue引入微信js-sdk包

npm i -S weixin-js-sdk

在需要引入的页面引入模块

import wx from 'weixin-js-sdk'

配置(参考微信官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115):

wx.config({    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。    appId: '', // 必填,公众号的唯一标识    timestamp: , // 必填,生成签名的时间戳    nonceStr: '', // 必填,生成签名的随机串    signature: '',// 必填,签名    jsApiList: [] // 必填,需要使用的JS接口列表 比如我要调用支付接口 那么就是 [chooseWXPay]});

这里timestamp是小写 s 是小写,数据类型是 int 类型

接下来既然配置成功了,那就继续看官方文档

在官方文档是这么说的,有个ready的方法,在config验证成功之后,把接口放在里面确保执行。

wx.ready(function(){    // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。});

ready里面的引入参数(注意数据类型,和后端同事好好配合- -)

wx.chooseWXPay({timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符nonceStr: '', // 支付签名随机串,不长于 32 位package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)signType: '', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'paySign: '', // 支付签名success: function (res) {// 支付成功后的回调函数}});

附上本人的demo

在ready里面使用Vue data中的数据,一不小心掉到this指向的坑,如果不加bind,wx.chooseWXPay里面的参数是拿不到从后端请求回来的数据的,这里的this并不是指向VueComponent,自然无法获取请求后我赋值给this.wx_config这个数组对象的数据。

getConfig(){            wx.config({                debug: this.wx_config.debug, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。                appId: this.wx_config.appId, // 必填,公众号的唯一标识                timestamp: this.wx_config.timestamp, // 必填,生成签名的时间戳                nonceStr: this.wx_config.nonceStr, // 必填,生成签名的随机串                signature:this.wx_config.signature,// 必填,签名                jsApiList: this.wx_config.jsApiList // 必填,需要使用的JS接口列表            });            //微信支付            wx.ready(function() {                // console.log(this.jsApiCall());                wx.chooseWXPay({                    timestamp: this.wechat_code.timestamp,                    nonceStr:this.wechat_code.nonceStr,                    package: this.wechat_code.package,                    signType: this.wechat_code.signType,                    paySign: this.wechat_code.paySign,                    success: function () {                        // 支付成功后的回调函数                        alert("支付成功");                        window.location.href = "/hd/becomevip";                    },                    cancel: function() {                        alert("支付失败");                    }                });            }.bind(this));        },

上述内容就是怎么在Html5中实现微信支付,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么在Html5中实现微信支付

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么在Html5中实现微信支付

本篇文章为大家展示了怎么在Html5中实现微信支付,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。爬坑之路爬坑一:单页SPA和后端路由的问题这个我已经单独做总结:https://www.yisu.co
2023-06-09

Android中怎么实现微信支付功能

Android中怎么实现微信支付功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1. 去微信开放平台申请微信支付服务,绑定自己的应用这里具体不多讲,但是一定要申请完成,将会得
2023-05-31

微信小程序中如何实现微信支付

微信支付是微信公众平台提供的一种在线支付服务,可以为用户提供快速、方便、安全的支付体验。而在微信小程序中实现微信支付,则可以为应用程序提供更多的功能和服务,提高用户体验和商业价值。因此,在本文中,我们将介绍如何在微信小程序中实现微信支付。
2023-08-16

如何进行vue项目中的支付功能实现(微信支付和支付宝支付)

如何进行vue项目中的支付功能实现(微信支付和支付宝支付),针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。项目中常见的支付方式 支付宝支付 微信支付 余额支付(
2023-06-22

微信小程序支付功能怎么实现

实现微信小程序支付功能,需要以下步骤:1. 首先,在微信公众平台申请开通支付功能,并获取到支付相关的配置信息,包括 appID、商户号、支付密钥等。2. 在小程序后端服务器中,处理支付相关的逻辑:生成订单、计算订单金额等。可以使用第三方支付
2023-08-16

iOS实现H5支付(微信、支付宝)原生封装

前言支付分APP支付、H5支付、扫码支付等。app支付一般在app中使用,并且需要集成相应的支付SDK,H5支付多用于网页。如果你的APP不想集成支付SDK,又想实现支付功能,你可以在项目中使用H5支付。本文主要讲述如何将H5支付封装成一个
2022-06-05

springboot中怎么对接微信支付

springboot中怎么对接微信支付,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。对接的完整流程如下首先是配置gzh.appid=公众号appidwxPay.mchId=
2023-06-20

Python3微信支付(小程序支付)V3接口的实现

本文主要介绍了Python3微信支付(小程序支付)V3接口的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-17

SpringBoot如何实现整合微信支付

这篇文章将为大家详细讲解有关SpringBoot如何实现整合微信支付,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.准备工作1.1 数据库表这里涉及微信支付一共两个表:订单表支付记录表1.2 实体类数据
2023-06-22

Thinkphp5如何实现微信扫码支付

这篇文章给大家分享的是有关Thinkphp5如何实现微信扫码支付的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Thinkphp5内核整合微信扫码支付实例完整源码,ThinkPHP框架集成微信扫码支付,压缩包内置安
2023-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录