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


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的获取浏览器窗口大小的代码
Mar 28 Javascript
jquery判断RadioButtonList和RadioButton中是否有选中项示例
Sep 29 Javascript
探讨js中的双感叹号判断
Nov 11 Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
Nov 21 Javascript
针对初学者的jQuery入门指南
Aug 15 Javascript
JavaScript的Number对象的toString()方法
Dec 18 Javascript
Node.js操作mysql数据库增删改查
Mar 30 Javascript
Easyui Treegrid改变默认图标的方法
Apr 29 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
Sep 21 Javascript
React如何避免重渲染
Apr 10 Javascript
实用Javascript调试技巧分享(小结)
Jun 18 Javascript
js 判断当前时间是否处于某个一个时间段内
Sep 19 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
php+mysql查询实现无限下级分类树输出示例
2016/10/03 PHP
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
jquery利用ajax调用后台方法实例
2013/08/23 Javascript
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
2014/05/04 Javascript
web 前端常用组件之Layer弹出层组件
2016/09/22 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
jQuery实现优雅的弹窗效果(6)
2017/02/08 Javascript
jquery ztree实现右键收藏功能
2017/11/20 jQuery
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
Python使用matplotlib实现在坐标系中画一个矩形的方法
2015/05/20 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
pandas取出重复数据的方法
2019/07/04 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
如何在python中实现线性回归
2020/08/10 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
html5音频_动力节点Java学院整理
2018/08/22 HTML / CSS
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
通往英国高街的商店橱窗:Down Your High Street
2020/07/19 全球购物
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
护士毕业生自我鉴定
2014/02/08 职场文书
酒店总经理岗位职责
2014/03/17 职场文书
组工干部演讲稿
2014/09/02 职场文书
出纳工作检讨书
2014/10/18 职场文书
工作试用期自我评价
2015/03/10 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
星际争霸 Light vs Action 一场把教主看到鬼畜的比赛
2022/04/01 星际争霸
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python