微信小程序支付功能如何实现
发表于:2025-11-18 作者:千家信息网编辑
千家信息网最后更新 2025年11月18日,这篇文章主要介绍了微信小程序支付功能如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序支付功能如何实现文章都会有所收获,下面我们一起来看看吧。微信小程序支付
千家信息网最后更新 2025年11月18日微信小程序支付功能如何实现
这篇文章主要介绍了微信小程序支付功能如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序支付功能如何实现文章都会有所收获,下面我们一起来看看吧。
微信小程序支付功能开发文档如下:
小程序端,保留大部分的console的版本
/* 微信支付 */ goWxPay: function () { var that = this; //登陆获取code wx.login({ success: function (res) { console.log("获取login code",res.code); //获取openid that.getOpenId(res.code); } }); }, /* 获取openId */ getOpenId: function (code) { var that = this; wx.request({ url: "https://****?code=" + code, //服务器端的请求地址,域名已加入小程序request白名单 method: 'GET', success: function (res) { console.log("获取openid", res); that.unitedPayRequest(res.data.openid); }, fail: function () { console.log("获取openid 失败", res); }, complete: function () { console.log("获取openid 完毕", res); } }); },//getOpenId() /*统一支付接口*/ unitedPayRequest: function(openid){ var that=this; //统一支付签名 var appid = '';//appid必填 var body = '';//商品名必填 var mch_id = '';//商户号必填 var nonce_str = util.randomString();//随机字符串,不长于32位。 var notify_url = '';//通知地址必填 var total_fee = parseInt(0.01 * 100); //价格,这是一分钱 var trade_type = "JSAPI"; var key = ''; //商户key必填,在商户后台获得 var out_trade_no = '';//自定义订单号必填 var unifiedPayment = 'appid=' + appid + '&body=' + body + '&mch_id=' + mch_id + '&nonce_str=' + nonce_str + '¬ify_url=' + notify_url + '&openid=' + openid + '&out_trade_no=' + out_trade_no + '&total_fee=' + total_fee + '™_type=' + trade_type + '&key=' + key; console.log("unifiedPayment", unifiedPayment); var sign = md5.md5(unifiedPayment).toUpperCase(); console.log("签名md5", sign); //封装统一支付xml参数 var formData = ""; formData += "" + appid + " "; formData += "" + body + ""; formData += "" + mch_id + " "; formData += "" + nonce_str + " "; formData += "" + notify_url + " "; formData += "" + openid + " "; formData += "" + that.data.ordernum + " "; formData += "" + total_fee + " "; formData += "" + trade_type + " "; formData += "" + sign + " "; formData += " "; console.log("formData", formData); //统一支付 wx.request({ url: 'https://api.mch.weixin.qq.com/pay/unifiedorder', //别忘了把api.mch.weixin.qq.com域名加入小程序request白名单,这个目前可以加 method: 'POST', head: 'application/x-www-form-urlencoded', data: formData, //设置请求的 header success: function (res) { console.log("返回商户", res.data); var result_code = util.getXMLNodeValue('result_code', res.data.toString("utf-8")); var resultCode = result_code.split('[')[2].split(']')[0]; if (resultCode == 'FAIL') { var err_code_des = util.getXMLNodeValue('err_code_des', res.data.toString("utf-8")); var errDes = err_code_des.split('[')[2].split(']')[0]; wx.showToast({ title: errDes, icon: 'none', duration: 3000 }) } else { //发起支付 var prepay_id = util.getXMLNodeValue('prepay_id', res.data.toString("utf-8")); var tmp = prepay_id.split('['); var tmp1 = tmp[2].split(']'); //签名 var key = '';//商户key必填,在商户后台获得 var appId = '';//appid必填 var timeStamp = util.createTimeStamp(); var nonceStr = util.randomString(); var stringSignTemp = "appId=" + appId + "&nonceStr=" + nonceStr + "&package=prepay_id=" + tmp1[0] + "&signType=MD5&timeStamp=" + timeStamp + "&key=" + key; console.log("签名字符串", stringSignTemp); var sign = md5.md5(stringSignTemp).toUpperCase(); console.log("签名", sign); var param = { "timeStamp": timeStamp, "package": 'prepay_id=' + tmp1[0], "paySign": sign, "signType": "MD5", "nonceStr": nonceStr } console.log("param小程序支付接口参数", param); that.processPay(param); } }, }) },//unitedPayRequest() /* 小程序支付 */ processPay: function (param) { wx.requestPayment({ timeStamp: param.timeStamp, nonceStr: param.nonceStr, package: param.package, signType: param.signType, paySign: param.paySign, success: function (res) { // success console.log("wx.requestPayment返回信息",res); wx.showModal({ title: '支付成功', content: '您将在"微信支付"官方号中收到支付凭证', showCancel: false, success: function (res) { if (res.confirm) { } else if (res.cancel) { } } }) }, fail: function () { console.log("支付失败"); }, complete: function () { console.log("支付完成(成功或失败都为完成)"); } }) }//processPay()几个要用到的方法,除了MD5用从Github上找的代码,其他如下:
/* 时间戳产生函数 */function createTimeStamp() { return parseInt(new Date().getTime() / 1000) + ''}/* 随机数 */function randomString() { var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'; //默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1 var maxPos = chars.length; var pwd = ''; for (var i = 0; i < 32; i++) { pwd += chars.charAt(Math.floor(Math.random() * maxPos)); } return pwd;}/* 获取XML节点信息 */function getXMLNodeValue(node_name, xml) { var tmp = xml.split("<" + node_name + ">") var _tmp = tmp[1].split("" + node_name + ">") return _tmp[0]}module.exports = { createTimeStamp: createTimeStamp, randomString: randomString, getXMLNodeValue: getXMLNodeValue}在服务端获取openid的PHP代码
//获取用户openidfunction getPortData($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 0); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $r = curl_exec($ch); //$r = json_decode($r); if($error=curl_error($ch)){ die($error); } curl_close($ch); return $r;} function getopenid(){ $code = $_GET["code"]; if(empty($code)) return array('status'=>0,'info'=>'缺少js_code'); $appid = '';//必填 $appsecret = '';//必填 $url = "https://api.weixin.qq.com/sns/jscode2session?appid=".$appid."&secret=".$appsecret."&js_code=".$code."&grant_type=authorization_code"; $result = getPortData($url); //var_dump($result); echo $result;}getopenid();关于"微信小程序支付功能如何实现"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"微信小程序支付功能如何实现"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
支付
程序
商户
功能
统一
字符
知识
utf-8
成功
代码
信息
内容
参数
名单
后台
地址
域名
字符串
接口
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
浙江水性软件开发价格走势
天津龙池网络技术有限公司
杨浦区微型软件开发服务厂家直销
网络安全行为
石景山区网络软件开发质量保障
家里装无限网络安全吗
简要论述网络安全管理趋势
数据库 复杂条件查询
华为服务器带外管理口是哪个
丹纳赫 软件开发待遇
网络安全促进
网络安全怎么防控
国家电网上海市网络安全工程
我的世界服务器怎么获得领地
intel 服务器架构
30多岁还能学软件开发吗
多人服务器怎么玩
网络安全的毕业设计题目
ipc分类数据库
邦赢网络技术有限公司
芜湖应用软件开发
计算机网络技术 培训总结
网络安全促进
互联网保险科技公司倒闭公司
网络安全公益短片视频
服务器系统激活失败会不会关机
登录啊网络安全大赛
服务器机柜维修项目报价
2017软件开发公司数据
公众号形式的数据库