微信支付如何实现内置浏览器的H5页面支付


Posted in Javascript onSeptember 25, 2015

因为项目需要,要在H5页面中加入微信支付,所以便去尝试,只想说真的很坑,尤其调试起来不方便

这是微信的官方API文档 微信API

微信支付的准备工作

申请公众号,申请开通支付,这个很简单,自行百度
申请好之后 在微信公众平台页面的“微信支付”页面中的“开发配置”Tab上配置“支付授权目录”,“测试授权目录”,“测试白名单”
在微信公众平台页面的“开发者中心”中找到“AppID(应用ID)”和“AppSecret(应用密钥)”
在商户平台中找到微信支付分配的商户号,以及自己配置一个商户支付密钥

具体步骤

首先通过微信支付的api 获得支付用的prepay_id,这里需要用到上面提到的“AppID(应用ID)”,“AppSecret(应用密钥)”,“微信支付分配的商户号”,“商户支付密钥”以及其他的一些参数(具体参照微信开发文档)用MD5加密成签名(第一次签名)获得prepay_id后,用prepay_id和一些其他参数(具体参照微信开发文档)用MD5加密成签名(第二次签名)然后在前端通过微信内置浏览器提供的js API,WeixinJSBridge.invoke来调用微信支付的弹出页面,这里需要用到上面的第二次的签名

具体代码如下

$.get('/xxx',function(data){
 if(data && data !== ""){
  var _data = $.parseJSON(data)[0];
  if(parseInt(_data.userAgent) < 5){
  alert('您的微信版本低于5.0,无法使用微信支付!');
  return false;
  }
  WeixinJSBridge.invoke('getBrandWCPayRequest',{
  'appId': _data.appId,
  'timeStamp': _data.timeStamp,
  'nonceStr': _data.nonceStr,
  'package': 'prepay_id=' + _data.packageOne,
  '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('取消支付!');
   }
  });

 }
});

几个容易失败点需要注意

支付链接和在开发平台配置的链接不匹配

总共需要2次签名,并且所需的参数是不同的,在JS中用到的签名是第二次签名,不要混淆参数传递的不能有错

如果body中有中文需要转义其中还有一些问题没有完全解决,就是位置支付没有一个判断失效的时间,如果在微信支付的弹出层停留时间太久了,可能这个订单在我们网站上已经失效了,可在微信支付中仍然能支付成功,如果有高人知道这个问题怎么解决的,希望能告诉解决办法

Javascript 相关文章推荐
javascript制作网页图片上实现下雨效果
Feb 26 Javascript
javascript实现一个数值加法函数
Jun 26 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
Sep 17 Javascript
jquery+正则实现统一的表单验证
Sep 20 Javascript
微信小程序新增的拖动组件movable-view使用教程
May 20 Javascript
Vue中父组件向子组件通信的方法
Jul 11 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
Jan 25 jQuery
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
Jun 04 Javascript
环形加载进度条封装(Vue插件版和原生js版)
Dec 04 Javascript
Node.js设置定时任务之node-schedule模块的使用详解
Apr 28 Javascript
解决Vue @submit 提交后不刷新页面问题
Jul 18 Javascript
微信小程序tab左右滑动切换功能的实现代码
Feb 08 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
Sep 25 #Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
Sep 24 #Javascript
10个很棒的jQuery代码片段
Sep 24 #Javascript
JS模拟实现Select效果代码
Sep 24 #Javascript
JS基于面向对象实现的拖拽库实例
Sep 24 #Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
Sep 24 #Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
Sep 24 #Javascript
You might like
PHP通用分页类page.php[仿google分页]
2008/08/31 PHP
php 连接mssql数据库 初学php笔记
2010/03/01 PHP
PHP判断图片格式的七种方法小结
2013/06/03 PHP
利用PHP实现短域名互转
2013/07/05 PHP
PHP中创建和验证哈希的简单方法实探
2015/07/06 PHP
php实现网站顶踩功能的完整前端代码
2015/07/19 PHP
php实现的农历算法实例
2015/08/11 PHP
js 获取Listbox选择的值的代码
2010/04/15 Javascript
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
解决ie img标签内存泄漏的问题
2017/10/13 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
[01:07]DOTA2次级职业联赛 - Fpb战队宣传片
2014/12/01 DOTA
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
深入解析Python中的urllib2模块
2015/11/13 Python
详解Django中间件执行顺序
2018/07/16 Python
教你一步步利用python实现贪吃蛇游戏
2019/06/27 Python
python3下pygame如何实现显示中文
2020/01/11 Python
Python之Sklearn使用入门教程
2021/02/19 Python
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
财务会计毕业生自荐信
2013/11/02 职场文书
大学生毕业的自我评价分享
2014/01/02 职场文书
群众路线教育实践活动方案
2014/02/02 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
银行贷款收入证明
2014/10/17 职场文书
五好家庭事迹材料
2014/12/20 职场文书
国庆放假通知怎么写
2015/07/30 职场文书
解决goland 导入项目后import里的包报红问题
2021/05/06 Golang
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL
Docker下安装Oracle19c
2022/04/13 Servers
Python如何用re模块实现简易tokenizer
2022/05/02 Python