微信小程序进行微信支付的步骤昂述


Posted in Javascript onDecember 01, 2016

最近开发微信小程序进入到支付阶段,一直以来从事App开发,所以支付流程还是熟记于心的。但是微信小程序的支付就有点奇怪了,应用的创建是在公众号里,但是文档的介绍却在公众号中无法找到直接入口,甚是不解,而且小程序的师傅到底是属于公众号支付范畴还是app支付范畴也成疑问。下面是小程序支付文档的入口(嵌套在小程序api中):

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index=1

小程序支付步骤:

1,预支付

2,根据预支付数据+签名——>发起支付

3,支付回调

下面对这3个步骤进行简单描述:

1,预支付。该接口通过前端提交需支付的信息(订单号、价格等)给开发者服务器,开发者服务器在提交到微信,而后返回真正前端需要进行支付的一些信息;eg:

开发者服务器的预支付接口:

https://()htm?total_fee=100&cid=6001&orderCodes=2016120119
{
"sign":"A2****************A6",
"timestamp":"14****************68",
"package":"Sign=WXPay",
"partnerId":"14****************02",
"appid":"wx****************ab",
"nonceStr":"9f****************37",
"prepayId":"wx****************54"
}

2,发起支付(需要注意的是发起支付是不需要上传appid,

但是签名paySign需要appid ,而且放在第一个)

wx.requestPayment({ 
nonceStr: res.data.nonceStr, 
package: "prepay_id="+res.data.prepayId, 
signType: 'MD5', 
timeStamp: res.data.timestamp, 
paySign: sign,//<strong><span style="color:#ff0000;">五个字段参与签名(区分大小写):appId,nonceStr,package,signType,timeStamp(需要注意的是,这5个参数签名排序的顺序按照ASCII字典序排序)</span></strong> 
success: function(res){ 
console.log("支付成功"); 
}, 
fail: function() { 
}, 
complete: function() { 
} 
})

生成签名sign

https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index=1&t=20161122

微信小程序MD5加密工具下载地址:https://code.csdn.net/snippets/2019875/master/download

var MD5Util = require('../../../utils/md5.js');
var sign = ''; 
//<strong><span style="color:#ff0000;">顺序按照ASCII字典序排序</span></strong> 
var signA = "appId="+app.appId+"&nonceStr="+res.data.nonceStr+"&package=prepay_id="+res.data.prepayId+"&signType=MD5&timeStamp="+res.data.timestamp; 
var signB = signA+"&key="+app.key; 
sign = MD5Util.MD5(signB).toUpperCase();

生成签名上面是我的代码,不是很清晰, 下面列出来官方文档的详细描述:

假设传送的参数如下:

appid: wxd930ea5d5a258f4f(需要注意的是appid 在wx.requestPayment({})发起支付是不上传,但是签名时需要)
mch_id: 10000100
device_info: 1000
body: test
nonce_str: ibuaiVcKdpRxkhJA

第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:

stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA";

第二步:拼接API密钥:

stringSignTemp="stringA&key=192006250b4c09247ec02edce69f6a2d"
sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7"

此时的sign 用于wx.requestPayment 上传参数paySign。

最终得到最终发送的数据:

<xml> 
<appid>wxd930ea5d5a258f4f</appid> 
<mch_id>10000100</mch_id> 
<device_info>1000<device_info> 
<body>test</body> 
<nonce_str>ibuaiVcKdpRxkhJA</nonce_str> 
<sign>9A0A8659F005D6984697E2CA0A9CF3B7</sign> 
<xml>

以上所述是小编给大家介绍的微信小程序进行微信支付的步骤,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JQuery 无废话系列教程(一) jquery入门 [推荐]
Jun 23 Javascript
jquery下操作HTML控件的实现代码
Jan 12 Javascript
jquery构造器的实现代码小结
May 16 Javascript
最简单的js图片切换效果实现代码
Sep 24 Javascript
Javascript控制input输入时间格式的方法
Jan 28 Javascript
js控制网页前进和后退的方法
Jun 08 Javascript
jQuery操作cookie
Aug 08 Javascript
纯css下拉菜单 无需js
Aug 15 Javascript
将form表单通过ajax实现无刷新提交的简单实例
Oct 12 Javascript
js代码实现下拉菜单【推荐】
Dec 15 Javascript
解读vue生成的文件目录结构及说明
Nov 27 Javascript
layui禁用侧边导航栏点击事件的解决方法
Sep 25 Javascript
第一次接触神奇的前端框架vue.js
Dec 01 #Javascript
bootstrapValidator自定验证方法写法
Dec 01 #Javascript
jQuery生成假加载动画效果
Dec 01 #Javascript
解析AngularJS中get请求URL出现的跨域问题
Dec 01 #Javascript
浅谈js键盘事件全面控制
Dec 01 #Javascript
jstree的简单实例
Dec 01 #Javascript
Vue.JS入门教程之事件监听
Dec 01 #Javascript
You might like
德生PL990的分析评价
2021/03/02 无线电
php实现图片缩放功能类
2013/12/18 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
javascript 删除数组元素和清空数组的简单方法
2017/02/24 Javascript
jQuery设置图片等比例缩小的方法
2017/04/29 jQuery
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
在vue中获取dom元素内容的方法
2017/07/10 Javascript
BootStrap入门学习第一篇
2017/08/28 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
js实现弹窗猜数字游戏
2020/11/26 Javascript
使用python Django做网页
2013/11/04 Python
python实现ip查询示例
2014/03/26 Python
为什么Python中没有&quot;a++&quot;这种写法
2018/11/27 Python
python分数表示方式和写法
2019/06/26 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
2019/08/05 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
Python 文件数据读写的具体实现
2020/01/24 Python
Python利用Xpath选择器爬取京东网商品信息
2020/06/01 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
2020/06/23 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
委托与事件是什么关系?为什么要使用委托
2014/04/18 面试题
家长给老师的道歉信
2014/01/13 职场文书
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
节约用水的口号
2014/06/20 职场文书
乡镇务虚会发言材料
2014/10/20 职场文书
关于国庆节的广播稿
2015/08/19 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL