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


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 相关文章推荐
制作特殊字的脚本
Jun 26 Javascript
让iframe框架网页在任何浏览器下自动伸缩
Aug 18 Javascript
javascript学习笔记(十五) js间歇调用和超时调用
Jun 20 Javascript
jquery弹出框的用法示例(一)
Aug 26 Javascript
jquery带下拉菜单和焦点图代码分享
Aug 24 Javascript
JavaScript类型系统之正则表达式
Jan 05 Javascript
jQuery获取单击节点对象的方法
Jun 02 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
Jun 12 Javascript
用Vue.js实现监听属性的变化
Nov 17 Javascript
Bootstrap列表组学习使用
Feb 09 Javascript
Node.js数据库操作之连接MySQL数据库(一)
Mar 04 Javascript
Node.js  REPL (交互式解释器)实例详解
Aug 06 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设置进度条的方法
2015/07/08 PHP
Discuz!X中SESSION机制实例详解
2015/09/23 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
JavaScript Event学习补遗 addEventSimple
2010/02/11 Javascript
js前台判断开始时间是否小于结束时间
2012/02/23 Javascript
jQuery常见开发技巧详细整理
2013/01/02 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
jQuery图片切换动画效果
2017/02/28 Javascript
jQuery插件ContextMenu自定义图标
2017/03/15 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
2017/05/02 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
关于vue单文件中引用路径的处理方法
2018/01/08 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
2018/09/14 Javascript
Element-UI踩坑之Pagination组件的使用
2018/10/29 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
Python素数检测的方法
2015/05/11 Python
python与字符编码问题
2019/05/24 Python
Django打印出在数据库中执行的语句问题
2019/07/25 Python
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
中间件分为哪几类
2012/03/14 面试题
初中学生期末评语
2014/04/24 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
2014年社区妇联工作总结
2014/12/02 职场文书
营销计划书
2015/01/17 职场文书
2015年小学总务工作总结
2015/07/21 职场文书
禁毒主题班会教案
2015/08/14 职场文书
浅谈MySQL函数
2021/10/05 MySQL