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


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 相关文章推荐
javascript GUID生成器实现代码
Oct 31 Javascript
JQuery入门—编写一个简单的JQuery应用案例
Jan 03 Javascript
window.showModalDialog()返回值的学习心得总结
Jan 07 Javascript
jQuery中prepend()方法使用详解
Aug 11 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
Jul 27 Javascript
JavaScript实现的微信二维码图片生成器的示例
Oct 26 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
Jan 23 Javascript
原生js实现打字动画游戏
Feb 04 Javascript
利用jqprint插件打印页面内容的实现方法
Jan 09 Javascript
浅谈Node 调试工具入门教程
Mar 20 Javascript
了解javascript中变量及函数的提升
May 27 Javascript
JQuery发送ajax请求时中文乱码问题解决
Nov 14 jQuery
第一次接触神奇的前端框架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
PHP新手上路(十)
2006/10/09 PHP
跟我学Laravel之请求(Request)的生命周期
2014/10/15 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
求得div 下 img的src地址的js代码
2007/02/28 Javascript
js 浮动层菜单收藏
2009/01/16 Javascript
锋利的jQuery 要点归纳(二) jQuery中的DOM操作(下)
2010/03/23 Javascript
jQuery 滑动方法slideDown向下滑动元素
2014/01/16 Javascript
纯js写的分页表格数据为json串
2014/02/18 Javascript
SeaJS 与 RequireJS 的差异对比
2014/12/08 Javascript
js将滚动条滚动到指定位置的简单实现方法
2016/06/25 Javascript
js 自带的 map() 方法全面了解
2016/08/16 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
javascript将list转换成树状结构的实例
2017/09/08 Javascript
实现jquery放大镜的两种方法
2018/02/22 jQuery
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
简述:我为什么选择Python而不是Matlab和R语言
2017/11/14 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
python安装及变量名介绍详解
2020/12/12 Python
HTML5输入框下拉菜单功能的示例代码
2020/09/08 HTML / CSS
意大利专业化妆品品牌:KIKO MILANO
2017/02/01 全球购物
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
最新自我评价范文
2013/11/16 职场文书
会计职业生涯规划范文
2014/01/04 职场文书
励志演讲稿200字
2014/08/21 职场文书
杭州黄龙洞导游词
2015/02/10 职场文书
2015年秋季小班开学寄语
2015/05/27 职场文书
《中彩那天》教学反思
2016/02/24 职场文书
廉洁自律承诺书2016
2016/03/25 职场文书
Vue提供的三种调试方式你知道吗
2022/01/18 Vue.js
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android