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


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读取ASP设定的COOKIE
Nov 24 Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
Sep 17 Javascript
JS判断两个时间大小的示例代码
Jan 28 Javascript
javascript基于HTML5 canvas制作画箭头组件
Jun 25 Javascript
javascript实现获取cookie过期时间的变通方法
Aug 14 Javascript
jQuery不使用插件及swf实现无刷新文件上传
Dec 08 Javascript
jQuery实现tag便签去重效果的方法
Jan 20 Javascript
jQuery的css() 方法使用指南
May 03 Javascript
分分钟玩转Vue.js组件
Oct 25 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
Dec 02 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
May 03 Javascript
vue-resource + json-server模拟数据的方法
Nov 02 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的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
PHP 在5.1.* 和5.2.*之间 PDO数据库操作中的不同之处小结
2012/03/07 PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
2014/11/19 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
自动更新作用
2006/10/08 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
javascript中HTMLDOM操作详解
2014/12/11 Javascript
jquery中EasyUI使用技巧小结
2015/02/10 Javascript
javascript实现连续赋值
2015/08/10 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
JavaScript面向对象精要(下部)
2017/09/12 Javascript
原生JS实现多个小球碰撞反弹效果示例
2018/01/31 Javascript
如何更好的编写js async函数
2018/05/13 Javascript
Node.js的进程管理的深入理解
2019/01/09 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
Selenium的使用详解
2018/10/19 Python
Window环境下Scrapy开发环境搭建
2018/11/18 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
python脚本定时发送邮件
2020/12/22 Python
想学画画?python满足你!
2020/12/24 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
旅游与酒店管理的自我评价分享
2013/11/03 职场文书
函授本科自我鉴定
2014/02/04 职场文书
校园安全标语
2014/06/07 职场文书
集体生日活动方案
2014/08/18 职场文书
2014年妇产科工作总结
2014/12/08 职场文书
体育教师个人工作总结
2015/02/09 职场文书