微信小程序支付功能如何实现
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了微信小程序支付功能如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序支付功能如何实现文章都会有所收获,下面我们一起来看看吧。微信小程序支付
千家信息网最后更新 2026年11月03日微信小程序支付功能如何实现
这篇文章主要介绍了微信小程序支付功能如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序支付功能如何实现文章都会有所收获,下面我们一起来看看吧。
微信小程序支付功能开发文档如下:
小程序端,保留大部分的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安全错误
数据库的锁怎样保障安全
百单网互联网科技有限公司
科技平台互联网
科技互联网公司装修
重庆互联网络科技
互联网金融 科技金融
天下捷融互联网科技
互联网科技的未来发展
中国互联网金融科技基金
互联网科技大会案例
滨湖区互联网智能科技产品供应
山东吉时兔互联网科技有限公司
哈尔滨新华互联网科技学院
阿里巴巴算科技企业还是互联网
江阴互联网智能科技产品进口
南博望互联网科技有限公司
从那以后互联网科技有限公司
东营紫格互联网科技
山东大美朱楼互联网科技有限公司
数字互联网科技有限公司
颐高云石互联网科技
互联网科技产业
互联网科技公司华为
互联网与科技发展
互联网络科技有限公司
互联网金融与金融科技
北京互联网科技公司
互联网科技logo
互联网养老 桔豆科技
互联网教育科技公司vipkid
互联网科技中介