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


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 相关文章推荐
js 屏蔽鼠标右键脚本附破解方法
Dec 03 Javascript
JS和Jquery获取和修改label的值的示例代码
Jan 15 Javascript
Node.js和PHP根据ip获取地理位置的方法
Mar 14 Javascript
jquery动态改变form属性提交表单
Jun 03 Javascript
简单总结JavaScript中的String字符串类型
May 26 Javascript
全面解析Javascript无限添加QQ好友原理
Jun 15 Javascript
vue获取DOM元素并设置属性的两种实现方法
Sep 30 Javascript
three.js中文文档学习之创建场景
Nov 20 Javascript
微信web端后退强制刷新功能的实现代码
Mar 04 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
May 28 Javascript
es6函数之尾递归用法实例分析
Apr 25 Javascript
深入了解Vue3模板编译原理
Nov 19 Vue.js
第一次接触神奇的前端框架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
新安装的MySQL数据库需要注意的安全知识
2008/07/30 PHP
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
合并table相同单元格的jquery插件分享(很精简)
2011/06/20 Javascript
用jquery模仿的a的title属性(兼容ie6/7)
2013/01/21 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
2014/10/17 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
css如何让浮动元素水平居中
2015/08/07 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
使用JS 插件qrcode.js生成二维码功能
2017/02/20 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
Angular ElementRef简介及其使用
2018/10/01 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
2018/12/20 Javascript
Nodejs模块的调用操作实例分析
2018/12/25 NodeJs
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
2019/08/22 Javascript
Javascript Dom元素获取和添加详解
2019/09/24 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
详解微信小程序动画Animation执行过程
2020/09/23 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
python通过ftplib登录到ftp服务器的方法
2015/05/08 Python
Python创建模块及模块导入的方法
2015/05/27 Python
对python中Matplotlib的坐标轴的坐标区间的设定实例讲解
2018/05/25 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
2019/04/26 Python
python字符串中匹配数字的正则表达式
2019/07/03 Python
python求质数列表的例子
2019/11/24 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
工商企业管理应届生求职信
2013/11/03 职场文书
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
安全检查验收制度
2014/01/12 职场文书
信访工作汇报材料
2014/10/27 职场文书
五年级学生期末评语
2014/12/26 职场文书
2016党员干部反腐倡廉心得体会
2016/01/13 职场文书
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python