本文实例讲述了JS通过调用微信API实现微信支付功能的方法。分享给大家供大家参考,具体如下:

最近在做微信公众号开发,在微信支付上遇到一些问题,困惑了3天,今天终于搞定。期间要感谢一些大神的帮助,趁热下面分享一下我的经验。
在实现微信支付之前,需要到微信开发平台认证,这些认证和配置信息我就不多说了,这里主要从代码层面实现支付。
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId" : "wx2421b1c4370ec43b", //公众号名称,由商户传入
"timeStamp":" 1395712654", //时间戳,自1970年以来的秒数
"nonceStr" : "e61463f8efa94090b1f366cccfbbb444", //随机串
"package" : "prepay_id=u802345jgfjsdfgsdg888", //统一订单号
"signType" : "MD5", //微信签名方式:
"paySign" : "70EA570631E4BB79628FBCA90534C63FF7FADD89" //支付签名
},
function(res){
alert(res.err_msg);
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();
}
上面的JS代码是官方文档上贴出来的,官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7。
下面对JS中的几个参数做主要的讲解:
在开发过程中,有4个非常重要的参数:一个是appid,AppSecret,apikey和商户号。上面js中的appID就是其中之一。timeStamp是一个时间戳,10位数,nonceStr是随机数,32位以内,这里最重要的两个参数,也是最容易出错的就是package和paySign了。我一一说来。先说package,这里需要用到prepay_id,这个参数是微信生成的订单号,需要我们调用统一订单接口来获取。官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1。可以从文档看到,要获取prepay_id,需要很多参数,这里面有一个非常重要的参数就是签名。注意:这里的签名和JS中的支付签名和不同的。 签名的算法文档里有,我只是强调两点。一个是参数的顺序,一定一定要按照ASCII从小到大拼接,二是apikey一定不能错,这个apikey在哪里呢?登入商户平台就可以设置了。
拼接好签名需要的字符串后,进行MD5加密就可以得到签名了。然后把签名和前面所有的参数组合成xml格式的字符串,调用给的接口URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder就可以返回一个xml结果,解析出其中的prepay_id,这样这个参数就成功获取到了。
下面再说JS中的最后一个参数PaySign:支付签名。支付签名的算法也是一样,把JS中的其他5个参数按照顺序拼接,加上apikey,MD5加密,ok。
签名的算法都是一样的,只是参数值不同而已。这里需要注意一点。在支付签名的时候,用到随机数nonceStr,时间戳timeStamp,而签名时使用的这两个参数和JS中的这两个参数的值要是一样的,是同一个随机数,同一个时间戳。为什么呢?虽然文档没说,但是我的理解是:支付签名是通过随机数和时间戳来生成的,然后在支付的时候,把随机数,时间戳,支付签名一起发送过去,那么在微信进行验证的时候,也会根基js中的随机数和时间戳生成签名和你发送的支付签名进行比较,如果你在js中重新获取新的随机数、时间戳,那么算出来的签名和你发送的签名就会不一样,就会报错:签名失败。
到此,代码层面的注意点就这些,当然,还有其他的一些注意点。比如其中有用的openid,这个参数也是需要调用接口获取到的,还有支付授权的目录是否配置正确。
最后一句总结:仔细看文档,最后问别人,可以找微信支付相关的群,里面很多大神的,我之前就是遇到一个问题纠结了2天没解决,(有时候光看文档也不行),
然后怒加了8个微信开发的群,最终在高人的指点下终于搞出来了。再次表示感谢。程序员是一个热爱分享的群体,他们非常乐意把自己知道的东西分享出去。所以不懂的时候,多问问。
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
# JS
# 微信API
# 微信支付
# 微信JSSDK调用微信扫一扫功能的方法
# 微信分享调用jssdk实例
# JS 调用微信扫一扫功能
# 微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
# javascript使用call调用微信API
# nodejs调取微信收货地址的方法
# 随机数
# 文档
# 是一个
# 商户
# 就会
# 就可以
# 和你
# 这两个
# 大神
# 非常重要
# 几个
# 我就
# 来了
# 也会
# 相关内容
# 一句
# 将在
# 说了
# 我一
# 最重要
相关文章:
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
Bpmn 2.0的XML文件怎么画流程图
如何在阿里云通过域名搭建网站?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
如何在景安云服务器上绑定域名并配置虚拟主机?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
如何在七牛云存储上搭建网站并设置自定义域名?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
如何高效利用亚马逊云主机搭建企业网站?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
高防服务器如何保障网站安全无虞?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
如何高效配置IIS服务器搭建网站?
建站之星ASP如何实现CMS高效搭建与安全管理?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
定制建站如何定义?其核心优势是什么?
个人网站制作流程图片大全,个人网站如何注销?
如何在Golang中使用replace替换模块_指定本地或远程路径
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
建站之星后台管理如何实现高效配置?
制作电商网页,电商供应链怎么做?
广平建站公司哪家专业可靠?如何选择?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
建站主机如何安装配置?新手必看操作指南
零基础网站服务器架设实战:轻量应用与域名解析配置指南
表情包在线制作网站免费,表情包怎么弄?
北京制作网站的公司,北京铁路集团官方网站?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
建站之星各版本价格是多少?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
小程序网站制作需要准备什么资料,如何制作小程序?
韩国服务器如何优化跨境访问实现高效连接?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
C#怎么创建控制台应用 C# Console App项目创建方法
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
小型网站制作HTML,*游戏网站怎么搭建?
建站之星×万网:智能建站系统+自助建站平台一键生成
建站之星微信建站一键生成小程序+多端营销系统
非常酷的网站设计制作软件,酷培ai教育官方网站?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
湖北网站制作公司有哪些,湖北清能集团官网?
制作营销网站公司,淘特是干什么用的?
*请认真填写需求信息,我们会在24小时内与您取得联系。