摘要:微信支付訂單查詢頁面初始化日志寫的太差,請見諒遇到問題了搜索群老司機(jī)邪會群號擼主正是群主大大。
PC端微信掃碼支付
博主寫這破玩意兒的時候花了大概快兩天時間才整體的弄懂邏輯,考慮了一下~還是把所有代碼都放出來給大家~抱著開源大無私的精神!誰叫我擅長拍黃片呢?同時也感謝我剛?cè)胄袝r候那些無私幫過我的程序員們!
首先還是先給大家上效果圖吧(樣式我也會一并給大家的,漂亮吧?騷年們!)!
各位騷年們~請不要著急往下看代碼,先給大家解釋怎么獲取到的二維碼
上面的這圖,用到了Jquery,Layer這兩個js,大家請自己下載一下(鏈接自己點(diǎn)文字就行)。
整個流程簡紹:點(diǎn)擊支付后調(diào)用layer彈出窗口->ajax獲取支付的二維碼->輪詢支付狀態(tài)!
補(bǔ)充!不要當(dāng)心輪詢占用服務(wù)器資源的問題~因?yàn)榧偃缤瑫r有上萬人等著支付的話,我相信你公司不會缺服務(wù)器這點(diǎn)小錢了!所以放心用吧!另外~按照我的邏輯來說應(yīng)該是非常安全。請大家耐心看下去,雖然代碼拿去就能用!但還是希望授之以漁!
ok!下面正式開始了喲!~大家注意仔細(xì)閱讀代碼。
第一步 首先把官方的微信demo下載下來進(jìn)行配置部署
給大家個傳送門-> PHP微信支付demo下載
拿到文件后解壓,解壓后把文件夾改名為payment(也可以隨意改,但是博主覺得這樣規(guī)范點(diǎn)!)而后上傳至項(xiàng)目的根目錄,各位大佬不知道什么是根目錄就請看這(/).其實(shí)我是逗你們的。 而后進(jìn)入微信的商戶后臺,設(shè)置api的key注意看下圖(網(wǎng)上隨意找的~丑了點(diǎn),將就吧!)設(shè)置完后,下載證書文件。而后把證書解壓出來!放到微信支付demo里面,也就是上一步上傳服務(wù)器的demo文件夾中!下面是詳細(xì)步驟:
設(shè)置密鑰(如圖)
下載證書,得到壓縮文件夾,解壓后上傳到payment中的cert中!(如圖,圖上有路徑)
在此順便給logs文件夾(支付日志)一個寫入的權(quán)限
修改微信支付demo中的配置文件WxPay.Config.php(如圖:路徑)
//只用修改第25、26、27、28行(示例) const APPID = "wx2a3f1e5246886123"; //微信公眾號的APPID const MCHID = "1300778123"; //微信商戶號 const KEY = "619fd0f3f9c64550964bbe5b94dba123"; //微信商戶密鑰(上面步驟中設(shè)置的那個) const APPSECRET = "5c8289b72600936f813ec1939e68f123"; //微信公眾號的APPSECRET
第一步分的配置咋們就完成了,請各位大佬繼續(xù)跟著小的往下走!
第二部 調(diào)整前段代碼 大部分都是JS,不懂JS得直接略過吧,否則看著難受!
對于點(diǎn)擊后彈出支付的這一塊邏輯,擼主的思路是:點(diǎn)擊支付按鈕->執(zhí)行Ajax獲取到二維碼展示在頁面->開始執(zhí)行輪詢獲取支付狀態(tài);(擼主雖然JS很菜,但是每一條代碼后面都會注釋給大家,比我菜的可以看一下)
創(chuàng)建獲取二維碼的文件 getPayQrcode.php
]*?srcs*=s*("|")(.*?)1[^>]*?/?s*>/i",$data,$matches); preg_match("/||(.*)||/",$matches[0],$aac); // 構(gòu)造返回信息 $obj["status"] = "success"; $obj["code"] = $aac[1]; // 此值為返回交易碼【用來確認(rèn)訂單支付狀態(tài)的】 $obj["price"] = $goodsPrice; $obj["msg"] = "/payment/example/".$matches["2"]; // 請求返回的二維碼 return json_encode($obj);// 返回json // 獲取二維碼的文件已經(jīng)ok!繼續(xù)下一步
設(shè)置微信支付demo中的掃碼支付文件 payment/example/native.php
//在大概19行找到該代碼 $notify = new NativePay(); 并在下方添加獲取商品名字和商品價格的代碼 // 接收get過來的商品價格和名稱 $goodsPrice = $_GET["goodsPrice"]; $goodsName = $_GET["goodsName"]; //下面修改從第32號開始的一大堆$input開頭的 $input = new WxPayUnifiedOrder(); $input->SetBody($goodsName);//商品名稱 $input->SetAttach("大姨媽商城");//自己設(shè)置 $num = WxPayConfig::MCHID.date("YmdHis");//訂單號 $input->SetOut_trade_no($num); $input->SetTotal_fee($goodsPrice*100);//注意!!!!!!!!!由于是以分為單位結(jié)算,所以一定要記得商品價格*100;別到時候下崗了來怪?jǐn)]主 $input->SetTime_start(date("YmdHis")); $input->SetTime_expire(date("YmdHis", time() + 600)); $input->SetGoods_tag($goodsName);//下面的這些參數(shù)大家自己看一下文檔吧!意義都不大,擼主腎虛,要早點(diǎn)寫完早點(diǎn)睡! $input->SetNotify_url("/payment/example/notify.php"); $input->SetTrade_type("NATIVE"); $input->SetProduct_id("123456789"); $result = $notify->GetPayUrl($input); //print_r($result);//最終的信息,大家可以打印了進(jìn)行調(diào)試 $url2 = $result["code_url"]; // ok!整個文件的PHP代碼就完畢了!在這以下的html代碼全部把它干掉,把擼主準(zhǔn)備的這段貼上去 這段代碼不做什么解釋了,也是用于查詢訂單狀態(tài)的輪詢,調(diào)試用的~!下面還會用到一次,講的很詳細(xì)微信支付樣例 掃描支付模式二
0
微信支付demo訂單查詢文件 payment/example/orderquery.php
header("Access-Control-Allow-Origin:*"); // 因?yàn)閿]主的支付實(shí)在另外一臺服務(wù)器上,所以給了一個域頭 ini_set("date.timezone","Asia/Shanghai");// 設(shè)置一下時區(qū) error_reporting(E_ERROR); // 關(guān)閉報(bào)錯 require_once "../lib/WxPay.Api.php"; require_once "log.php"; //初始化日志 $logHandler= new CLogFileHandler("./logs/".date("Y-m-d").".log"); $log = Log::Init($logHandler, 15); function printf_info($data) { foreach($data as $key=>$value){ echo "$key : $value
"; } } // 一下兩個if的判斷均為判斷訂單的狀態(tài),這里擼主建議去微信官網(wǎng)進(jìn)行查閱,下面有傳送門送你過去 if(isset($_REQUEST["transaction_id"]) && $_REQUEST["transaction_id"] != ""){ $transaction_id = $_REQUEST["transaction_id"]; $input = new WxPayOrderQuery(); $input->SetTransaction_id($transaction_id); //printf_info(WxPayApi::orderQuery($input)); $result=WxPayApi::orderQuery($input); echo $result["trade_state"]; exit(); } if(isset($_REQUEST["out_trade_no"]) && $_REQUEST["out_trade_no"] != ""){ $out_trade_no = $_REQUEST["out_trade_no"]; $input = new WxPayOrderQuery(); $input->SetOut_trade_no($out_trade_no); //printf_info(WxPayApi::orderQuery($input)); $result=WxPayApi::orderQuery($input); $status["code"] = $result["trade_state"]; $status["openid"] = $result["openid"]; $status["total_fee"] = $result["total_fee"]; $status["transaction_id"] = $result["transaction_id"]; $status["time"] = $result["time_end"]; //print_r($result); print_r(json_encode($status)); exit(); }
傳送門 微信返回錯誤代碼解釋
點(diǎn)擊支付按鈕的代碼
// 前段代碼 樣式用大家自己的就行,不用照抄// JS代碼 js代碼中嵌入的樣式,無需修改!和效果圖一樣的! //接入微信掃碼支付 function GetPay() { // 用ajax獲取到支付的二維碼 var payQrcode = ""; var payPrice = ""; var payOrderCode = ""; // 執(zhí)行Ajax請求 $.get("/getPayQrcode.php",{"goodsId":"商品的ID"},function(ret){ var obj = JSON.parse(ret) // 把字符串進(jìn)行轉(zhuǎn)換 // 判斷返回?cái)?shù)據(jù)是否正常(由于請求一般不會出問題,所以在獲取二維碼的getPayQrcode.php文件沒有寫返回fail) if (obj.status == "success") { payQrcode = "http://www.baidu.com"+obj.msg;//二維碼鏈接 payPrice = obj.price; //商品價格 payOrderCode = obj.code; //交易碼 //執(zhí)行l(wèi)ayer彈層 layer.open({ type: 1, skin: "layui-layer-demo", //樣式類名,隨意! closeBtn: 0, //不顯示關(guān)閉按鈕 title:false, //關(guān)閉title部分 anim: 2, area: ["300px", "450px"], //層的寬高 shadeClose: true, //開啟遮罩關(guān)閉 content: "立即購買X"+""+"
請打開微信 掃碼進(jìn)行支付 支付金額:"+payPrice+" 元"+"
請打開微信 掃碼進(jìn)行支付 支付金額:"+payPrice+" 元微信支付樣例 掃描支付模式二
0微信支付demo 訂單查詢頁面
$value){ echo "$key : $value
"; } } if(isset($_REQUEST["transaction_id"]) && $_REQUEST["transaction_id"] != ""){ $transaction_id = $_REQUEST["transaction_id"]; $input = new WxPayOrderQuery(); $input->SetTransaction_id($transaction_id); //printf_info(WxPayApi::orderQuery($input)); $result=WxPayApi::orderQuery($input); echo $result["trade_state"]; exit(); } if(isset($_REQUEST["out_trade_no"]) && $_REQUEST["out_trade_no"] != ""){ $out_trade_no = $_REQUEST["out_trade_no"]; $input = new WxPayOrderQuery(); $input->SetOut_trade_no($out_trade_no); //printf_info(WxPayApi::orderQuery($input)); $result=WxPayApi::orderQuery($input); $status["code"] = $result["trade_state"]; $status["openid"] = $result["openid"]; $status["total_fee"] = $result["total_fee"]; $status["transaction_id"] = $result["transaction_id"]; $status["time"] = $result["time_end"]; //print_r($result); print_r(json_encode($status)); exit(); } ?>寫的太差,請見諒;遇到問題了!~搜索QQ群:phpcode【老司機(jī)邪會】群號:202692399 擼主正是群主大大。美女進(jìn)來享受擼主親自一對一貼身手把手指導(dǎo)!Wishes everybody to be happy everyday!
ok,bye!擼主要給客戶繼續(xù)寫東西了!~否則明天揭不開鍋了!文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/22488.html
摘要:微信掃碼登錄近期做一個端微信掃碼登錄的需求,微信掃碼有兩種方式,一種是新開一個二維碼頁面,另一種是內(nèi)嵌入產(chǎn)品網(wǎng)頁。幸運(yùn)的是,微信留了一個給我們自定義樣式的機(jī)會,在之前實(shí)例化一個二維碼的時候,實(shí)例對象中屬性,允許設(shè)置樣式。 PC微信掃碼登錄 近期做一個PC端微信掃碼登錄的需求,微信掃碼有兩種方式,一種是新開一個二維碼頁面,另一種是內(nèi)嵌入產(chǎn)品網(wǎng)頁。本次以內(nèi)嵌二維碼為例,具體怎樣在頁面中顯示...
摘要:微信掃碼登錄近期做一個端微信掃碼登錄的需求,微信掃碼有兩種方式,一種是新開一個二維碼頁面,另一種是內(nèi)嵌入產(chǎn)品網(wǎng)頁。幸運(yùn)的是,微信留了一個給我們自定義樣式的機(jī)會,在之前實(shí)例化一個二維碼的時候,實(shí)例對象中屬性,允許設(shè)置樣式。 PC微信掃碼登錄 近期做一個PC端微信掃碼登錄的需求,微信掃碼有兩種方式,一種是新開一個二維碼頁面,另一種是內(nèi)嵌入產(chǎn)品網(wǎng)頁。本次以內(nèi)嵌二維碼為例,具體怎樣在頁面中顯示...
摘要:相關(guān)資料博客微信第三方登錄接口開發(fā)端微信掃碼登錄文檔移動端網(wǎng)頁微信公眾平臺授權(quán)登錄微信開放平臺登錄與微信公眾平臺授權(quán)登錄區(qū)別在哪微信登錄接口幾個問題微信登錄的和區(qū)別百分號編碼在線轉(zhuǎn)換第三方登錄 微信登錄接口開發(fā)須知 APP登錄接口 PC網(wǎng)站登錄接口 微信移動網(wǎng)頁登錄接口(又稱微信公眾號授權(quán)登錄) 移動端非微信自帶瀏覽不支持微信登錄 微信移動網(wǎng)頁登錄接口(又稱微信公眾號授權(quán)登錄) ...
閱讀 1725·2021-09-22 10:02
閱讀 1946·2021-09-02 15:40
閱讀 2848·2019-08-30 15:55
閱讀 2258·2019-08-30 15:44
閱讀 3603·2019-08-30 13:18
閱讀 3234·2019-08-30 11:00
閱讀 1959·2019-08-29 16:57
閱讀 573·2019-08-29 16:41