微信支付如何实现内置浏览器的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 相关文章推荐
jQuery boxy弹出层插件中文演示及使用讲解
Feb 24 Javascript
jQuery中get()方法用法实例
Dec 27 Javascript
浅谈javascript事件取消和阻止冒泡
May 26 Javascript
js倒计时简单实现方法
Dec 17 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
Jul 07 Javascript
微信小程序 登陆流程详细介绍
Jan 17 Javascript
shiro授权的实现原理
Sep 21 Javascript
JavaScript中arguments和this对象用法分析
Aug 08 Javascript
详解jQuery中的easyui
Sep 02 jQuery
微信小程序时间控件picker view使用详解
Dec 28 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
Apr 20 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
Jul 24 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
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
简单概括PHP的字符串中单引号与双引号的区别
2016/05/07 PHP
php 常用的系统函数
2017/02/07 PHP
javascript删除option选项的多种方法总结
2013/11/22 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
2015/09/12 Javascript
BootStrap响应式导航条实例介绍
2016/05/06 Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
2016/11/04 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
小程序自定义导航栏兼容适配所有机型(附完整案例)
2020/04/26 Javascript
JavaScript中条件语句的优化技巧总结
2020/12/04 Javascript
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
python中的字典详细介绍
2014/09/18 Python
python类继承用法实例分析
2015/05/27 Python
python搭建微信公众平台
2016/02/09 Python
Python for Informatics 第11章之正则表达式(四)
2016/04/21 Python
使用python 爬虫抓站的一些技巧总结
2018/01/10 Python
在Mac下使用python实现简单的目录树展示方法
2018/11/01 Python
selenium+python自动化测试环境搭建步骤
2019/06/03 Python
python3 requests库文件上传与下载实现详解
2019/08/22 Python
python中time库的实例使用方法
2019/10/31 Python
浅谈Python3中print函数的换行
2020/08/05 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
Charlotte Tilbury英国官网:英国彩妆品牌
2017/05/26 全球购物
J2EE中常用的名词进行解释
2015/11/09 面试题
小学教师办公室制度
2014/02/03 职场文书
大学生个人求职口试自我评价
2014/02/16 职场文书
文明礼仪标语
2014/06/13 职场文书
红领巾心向党演讲稿
2014/09/10 职场文书
法人代表授权委托书范文
2014/09/10 职场文书
2015年统战工作总结
2015/05/19 职场文书
干部考核工作总结
2015/08/12 职场文书
聘任协议书(挂靠)
2015/09/21 职场文书
Redis模仿手机验证码发送的实现示例
2021/11/02 Redis