日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

PHP實現(xiàn)微信小程序在線支付功能(代碼實例)

瀏覽:199日期:2022-06-02 11:23:32

小程序訪問地址:payfee.php 如果使用TP框架處理后臺的話,寫成方法即可

include ’WeixinPay.php’;$appid=’’; //小程序appid$openid= $_POST[’id’];$mch_id=’’; //微信支付商戶支付號$key=’’; //Api密鑰$out_trade_no = $mch_id. time();$total_fee = $_POST[’fee’];if (empty($total_fee)) { //押金 $body = '充值押金'; $total_fee = floatval(99*100);} else { $body = '充值余額'; $total_fee = floatval($total_fee*100); }$weixinpay = new WeixinPay($appid,$openid,$mch_id,$key,$out_trade_no,$body,$total_fee);$return=$weixinpay->pay();echo json_encode($return);

WeixinPay.php微信小程序支付類 所有微信小程序需要的參數(shù)都已經(jīng)寫入

/* * 小程序微信支付 */class WeixinPay { protected $appid; protected $mch_id; protected $key; protected $openid; protected $out_trade_no; protected $body; protected $total_fee; function __construct($appid, $openid, $mch_id, $key,$out_trade_no,$body,$total_fee) { $this->appid = $appid; $this->openid = $openid; $this->mch_id = $mch_id; $this->key = $key; $this->out_trade_no = $out_trade_no; $this->body = $body; $this->total_fee = $total_fee; } public function pay() { //統(tǒng)一下單接口 $return = $this->weixinapp(); return $return; } //統(tǒng)一下單接口 private function unifiedorder() { $url = ’https://api.mch.weixin.qq.com/pay/unifiedorder’; $parameters = array( ’appid’ => $this->appid, //小程序ID ’mch_id’ => $this->mch_id, //商戶號 ’nonce_str’ => $this->createNoncestr(), //隨機字符串// ’body’ => ’test’, //商品描述 ’body’ => $this->body,// ’out_trade_no’ => ’2018013106125348’, //商戶訂單號 ’out_trade_no’=> $this->out_trade_no,// ’total_fee’ => floatval(0.01 * 100), //總金額 單位 分 ’total_fee’ => $this->total_fee, ’spbill_create_ip’ => $_SERVER[’REMOTE_ADDR’], //終端IP // ’spbill_create_ip’ => ’192.168.0.161’, //終端IP ’notify_url’ => ’https://www.weixin.qq.com/wxpay/notify.php’, //通知地址 確保外網(wǎng)能正常訪問 ’openid’ => $this->openid, //用戶id ’trade_type’ => ’JSAPI’//交易類型 ); //統(tǒng)一下單簽名 $parameters[’sign’] = $this->getSign($parameters); $xmlData = $this->arrayToXml($parameters); $return = $this->xmlToArray($this->postXmlCurl($xmlData, $url, 60)); return $return; } private static function postXmlCurl($xml, $url, $second = 30) { $ch = curl_init(); //設(shè)置超時 curl_setopt($ch, CURLOPT_TIMEOUT, $second); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //嚴(yán)格校驗 //設(shè)置header curl_setopt($ch, CURLOPT_HEADER, FALSE); //要求結(jié)果為字符串且輸出到屏幕上 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); //post提交方式 curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); curl_setopt($ch, CURLOPT_TIMEOUT, 40); set_time_limit(0); //運行curl $data = curl_exec($ch); //返回結(jié)果 if ($data) { curl_close($ch); return $data; } else { $error = curl_errno($ch); curl_close($ch); throw new WxPayException('curl出錯,錯誤碼:$error'); } } //數(shù)組轉(zhuǎn)換成xml private function arrayToXml($arr) { $xml = '<xml>'; foreach ($arr as $key => $val) { if (is_array($val)) {$xml .= '<' . $key . '>' . arrayToXml($val) . '</' . $key . '>'; } else {$xml .= '<' . $key . '>' . $val . '</' . $key . '>'; } } $xml .= '</xml>'; return $xml; } //xml轉(zhuǎn)換成數(shù)組 private function xmlToArray($xml) { //禁止引用外部xml實體 libxml_disable_entity_loader(true); $xmlstring = simplexml_load_string($xml, ’SimpleXMLElement’, LIBXML_NOCDATA); $val = json_decode(json_encode($xmlstring), true); return $val; } //微信小程序接口 private function weixinapp() { //統(tǒng)一下單接口 $unifiedorder = $this->unifiedorder();// print_r($unifiedorder); $parameters = array( ’appId’ => $this->appid, //小程序ID ’timeStamp’ => ’’ . time() . ’’, //時間戳 ’nonceStr’ => $this->createNoncestr(), //隨機串 ’package’ => ’prepay_id=’ . $unifiedorder[’prepay_id’], //數(shù)據(jù)包 ’signType’ => ’MD5’//簽名方式 ); //簽名 $parameters[’paySign’] = $this->getSign($parameters); return $parameters; } //作用:產(chǎn)生隨機字符串,不長于32位 private function createNoncestr($length = 32) { $chars = 'abcdefghijklmnopqrstuvwxyz0123456789'; $str = ''; for ($i = 0; $i < $length; $i++) { $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); } return $str; } //作用:生成簽名 private function getSign($Obj) { foreach ($Obj as $k => $v) { $Parameters[$k] = $v; } //簽名步驟一:按字典序排序參數(shù) ksort($Parameters); $String = $this->formatBizQueryParaMap($Parameters, false); //簽名步驟二:在string后加入KEY $String = $String . '&key=' . $this->key; //簽名步驟三:MD5加密 $String = md5($String); //簽名步驟四:所有字符轉(zhuǎn)為大寫 $result_ = strtoupper($String); return $result_; } ///作用:格式化參數(shù),簽名過程需要使用 private function formatBizQueryParaMap($paraMap, $urlencode) { $buff = ''; ksort($paraMap); foreach ($paraMap as $k => $v) { if ($urlencode) {$v = urlencode($v); } $buff .= $k . '=' . $v . '&'; } $reqPar = ’’; if (strlen($buff) > 0) { $reqPar = substr($buff, 0, strlen($buff) - 1); } return $reqPar; }}

小程序頁面請求處理:

wx.request({ url: ’https://yourhost.com/wxpay/payfee.php’,//改成你自己的鏈接 data:{ id: app.globalData.openid,//獲取用戶openid fee:100 //商品價格 }, header: { ’Content-Type’: ’application/x-www-form-urlencoded’ }, method: ’POST’, success: function (res) { console.log(res.data); console.log(’調(diào)起支付’); wx.requestPayment({ ’timeStamp’: res.data.timeStamp, ’nonceStr’: res.data.nonceStr, ’package’: res.data.package, ’signType’: ’MD5’, ’paySign’: res.data.paySign, ’success’: function (res) { console.log(’success’); wx.showToast({ title: ’支付成功’, icon: ’success’, duration: 3000 }); }, ’fail’: function (res) { console.log(res); }, ’complete’: function (res) { console.log(’complete’); } }); }, fail: function (res) { console.log(res.data) } });

回調(diào)URL:notify.php

$postXml = $GLOBALS['HTTP_RAW_POST_DATA']; //接收微信參數(shù) // 接受不到參數(shù)可以使用file_get_contents('php://input'); PHP高版本中$GLOBALS好像已經(jīng)被廢棄了if (empty($postXml)) { return false;} //將xml格式轉(zhuǎn)換成數(shù)組function xmlToArray($xml) { //禁止引用外部xml實體 libxml_disable_entity_loader(true); $xmlstring = simplexml_load_string($xml, ’SimpleXMLElement’, LIBXML_NOCDATA); $val = json_decode(json_encode($xmlstring), true); return $val;}$attr = xmlToArray($postXml);$total_fee = $attr[’total_fee’];$open_id = $attr[’openid’];$out_trade_no = $attr[’out_trade_no’];$time = $attr[’time_end’];

So:在微信的異步通知后,也需要給微信服務(wù)器,返回一個信息,只不過微信的所有數(shù)據(jù)格式都是xml的,所以我們在返回一個數(shù)據(jù)給微信即可。

echo exit(’<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>’);

總結(jié)

到此這篇關(guān)于PHP微信小程序在線支付功能的文章就介紹到這了,更多相關(guān)php 微信小程序在線支付內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: 微信
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
免费视频久久| 国产欧美久久一区二区三区| 国产精品99一区二区三| 精品一区二区三区免费看| 国产亚洲一卡2卡3卡4卡新区| 日韩超碰人人爽人人做人人添| 日本不卡视频一二三区| 中文在线不卡| 亚洲香蕉久久| 日韩va欧美va亚洲va久久| 亚洲精品在线a| 青青伊人久久| 欧美91在线|欧美| 动漫av一区| 日韩精品免费一区二区三区| 激情自拍一区| 在线国产精品一区| 欧美伊人久久| 国产精品99久久久久久董美香| 久久精品二区亚洲w码 | av亚洲免费| 香蕉成人av| 午夜欧美精品| 日韩制服丝袜先锋影音| 亚洲精品人人| 欧美国产免费| 久久国产小视频| 香蕉久久夜色精品国产| 日本成人在线不卡视频| 精品久久一区| 欧美日韩中文一区二区| 老色鬼久久亚洲一区二区| 欧美日韩精品一区二区三区在线观看| 国产极品嫩模在线观看91精品| 高清不卡亚洲| 免费在线看一区| 日本不卡视频在线观看| 欧美激情视频一区二区三区免费| 蜜臀久久精品| 首页亚洲欧美制服丝腿| 国产精品一区二区中文字幕| 欧美日韩国产v| 蜜桃一区二区三区在线观看| 国产精品免费大片| 日韩一区电影| 亚洲精品中文字幕99999| 国产成人免费精品| 欧美日韩国产综合网| 国产欧美日韩在线一区二区 | 国产一区导航| 国产毛片久久久| 91看片一区| 中文字幕日本一区二区| 国产中文字幕一区二区三区| 图片区亚洲欧美小说区| **爰片久久毛片| 日韩免费看片| 日产欧产美韩系列久久99| 美女久久精品| 国产精品91一区二区三区| 91精品在线免费视频| 日韩在线视频精品| 婷婷久久免费视频| 成人在线免费观看91| 在线看片一区| 日韩激情一区| 欧美日韩99| 精品一区在线| 久久不见久久见国语| 久久成人精品| 亚洲精品福利电影| 青青草精品视频| 狠狠久久婷婷| 日本久久精品| 中文字幕日韩亚洲| 久久国产小视频| 老牛国内精品亚洲成av人片| 综合激情网...| 九九精品调教| 国产精品videossex久久发布 | 国产成人精品一区二区三区在线| 在线精品国产亚洲| 1000部精品久久久久久久久| 精品视频一区二区三区四区五区| 在线精品视频一区| 91久久久精品国产| 高清日韩欧美| 国产精品成人**免费视频 | 麻豆久久精品| 日韩一区电影| 美女高潮久久久| 日本视频中文字幕一区二区三区| 国产亚洲福利| 国产综合亚洲精品一区二| 成人在线视频区| 欧美国产精品| 欧美视频久久| 日韩在线黄色| 久久高清国产| 国产精品av久久久久久麻豆网| а√天堂8资源中文在线| 国产毛片精品| 青青草91视频| 日韩精选在线| 免费国产亚洲视频| 99pao成人国产永久免费视频 | 婷婷亚洲五月| 久久精品国产68国产精品亚洲| 精品国产鲁一鲁****| 97精品久久| 亚洲精品成人一区| 综合亚洲色图| 爽好多水快深点欧美视频| 五月天久久网站| 国精品一区二区三区| 久久国产成人午夜av影院宅| 日韩免费福利视频| 欧美激情亚洲| 免费在线欧美黄色| 你懂的国产精品永久在线| 国产免费av一区二区三区| 91嫩草精品| 国产欧美日韩视频在线 | 国产一区二区精品福利地址| 久久久久伊人| 国产一区二区三区四区五区| 精品国产乱码久久久| 久久字幕精品一区| 久久这里只有精品一区二区| 精品伊人久久| 麻豆一区二区三区| 精品高清久久| 水蜜桃久久夜色精品一区| 日韩中文首页| 91精品啪在线观看国产18| 日韩精品免费一区二区三区| 亚洲手机在线| 国产毛片久久| 日韩一二三区在线观看| 国产日韩欧美中文在线| 国产精品激情电影| 国产成人久久精品一区二区三区| 樱桃视频成人在线观看| 久久精品青草| 欧美女激情福利| 亚洲一区网站| 免费在线观看一区二区三区| 日本中文字幕一区二区| 国产精品1区在线| 中文字幕在线视频久| 欧美/亚洲一区| 亚洲精品动态| 成人午夜在线| 午夜久久黄色| 青青草伊人久久| 动漫av一区| 一区二区自拍| 日本成人在线视频网站| 久久影院一区二区三区| 欧美日韩精品免费观看视完整| 久久一级电影| 蜜臀av一区二区在线免费观看| 日韩激情综合| 亚洲国产成人二区| 国产精品日韩| 国产精品毛片aⅴ一区二区三区| 97在线精品| 香蕉视频成人在线观看| 国产精品一区二区三区四区在线观看| 久久影院午夜精品| 日韩专区欧美专区| 麻豆中文一区二区| 在线国产一区| 99国产一区| 好看的亚洲午夜视频在线| 91精品国产福利在线观看麻豆| 日本中文字幕不卡| 亚洲伊人精品酒店| 日韩av一区二| 免费人成在线不卡| 日韩大片在线| 日韩av三区| 蜜桃视频欧美| 欧美一区成人| 午夜久久av| 久久xxxx| 不卡av一区二区| 亚洲网站视频| 久久不见久久见中文字幕免费| 国产亚洲观看| 美女高潮久久久| 久久久9色精品国产一区二区三区| 国产一区日韩| 精品久久99| 国产成人调教视频在线观看| 人人精品亚洲| 亚洲综合电影一区二区三区| 伊人影院久久| 日本91福利区| 国产精品伊人|