微信小程序支付功能开发,小程序实现微信支付功

2021-01-01
来源:

微信小程序是最佳的获利工具。为了实现小程序的实现,有必要开发微信的支付功能。那么微信小程序的开发如何实现微信的支付功能?

微信小程序付款功能开发文档如下:

小程序端,保留大多数控制台版本


/* 微信支付 */   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 + '&notify_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()

除Github上的MD5代码外,将使用几种方法:

微信小程序开发支付


/* 时间戳产生函数   */ 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("")   return _tmp[0] } module.exports = {   createTimeStamp: createTimeStamp,   randomString: randomString,   getXMLNodeValue: getXMLNodeValue }

在服务器端获取openid的PHP代码


//获取用户openid function 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();

以上是小程序实现微信付款的开发文档。有关更多小程序开发文档,请关注网站。

HiShop 小程序工具提供了多种类型的商城/商店小程序生产,可视化编辑和5个步骤,可在一秒钟内上线。通过拖动并拼接模块布局小程序商城页面,您所看到的就是所得到的,并且仅用艺术品即可制作出精美的商城。有关更多小程序,请查看:小程序商店

小程序开店小程序赚钱

分享