這篇文章主要介紹PHP如何實現(xiàn)微信APP支付功能,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、余干ssl等。為超過千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的余干網(wǎng)站制作公司本文實例講述了PHP實現(xiàn)的微信APP支付功能。分享給大家供大家參考,具體如下:
1.進行支付請求 他給的DEMO 用的時候有時候會報錯
1)我遇到的情況 把 WxPay.Api.php這個文件的 postXmlCurl 這個 方法里
// curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE); // curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//嚴格校驗 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
這兩行的嚴格驗證給注掉
2)有時候還會報終端IP錯誤 我的修改方案是 要么寫死 要么注掉 他不是必填參數(shù)
3)有時候還會報寫入 日志文件 包含錯誤 把他的相對路徑改成絕對路徑就好了
4)以下就是APP請求參數(shù)
require_once "./payment/wxpay/php/lib/WxPay.Api.php"; require_once "./payment/wxpay/php/example/WxPay.NativePay.php"; $notify = new \NativePay(); $input = new \WxPayUnifiedOrder(); $input->SetBody("購買訂單"); $input->SetOut_trade_no($order_data['order_number']); $input->SetTotal_fee($zongMoney*100); $input->SetNonce_str($this->createNoncestr()); $input->SetNotify_url(config('u_wx_notify_url')); $input->SetTrade_type('APP'); $input->SetProduct_id(rand(10000,99999)); $result = $notify->GetPayUrl($input); //我還遇到了 $result 返回值為空 也不報錯 // 然后我發(fā)現(xiàn)是因為我用的請求方法為 GetPayUrl() // 這個方法是掃碼支付請求的方法 方法里有個判斷 $input->GetTrade_type() == "NATIVE" //這個NATIVE 是掃碼支付的類型 // 我就在這個方法里的if判斷又加了一個if判斷 $input->GetTrade_type() == "APP" //如果他等于APP的時候就讓他再次發(fā)下請求 這樣就可以得到參數(shù)了 $prepay_id = $result["prepay_id"]; //他所范圍的參數(shù)最重要的為 prepay_id 需要再進行參數(shù)加密 進入 getOrder()進行加密 $response = $this->getOrder($prepay_id); // correctStatus 此函數(shù)是我自定義的 跟APP對接的 json 數(shù)據(jù) 根據(jù)自己的實際情況 定義 $json = correctStatus($response); //最后輸出給 APP 就好了 echo $json;
//執(zhí)行第二次簽名,才能返回給客戶端使用 public function getOrder($prepayId){ $pay=\think\Db::name('pay_type')->where(['pay_id'=>2])->field('pay_json')->find(); $wx=json_decode($pay['pay_json'],true); $data["appid"] = $wx['web_appid']; //createNoncestr 獲取隨機字符串 他寫的demo里有方法 不過你也可以自定義 $data["noncestr"] = $this->createNoncestr(); $data["package"] = "Sign=WXPay"; $data["partnerid"] = $wx['web_mch_id']; $data["prepayid"] = $prepayId; $data["timestamp"] = time(); // 加密方法 getSign() 同樣的 在他的demo 里也有方法 這些方法都再 WxPay.Data.php 這個文件里 $s = $this->getSign($data,$wx['web_key']); $data["sign"] = $s; return $data; }
//那些 appid key 什么的參數(shù)配置 我是直接在他的 WxPay.Config.php這個文件里寫了個構(gòu)造方法 直接賦值 private $appid; private $mch_id; private $key; private $appsecret; public function __construct() { $pay=\think\Db::name('pay_type')->where(['pay_id'=>2])->field('pay_json')->find(); $wx=json_decode($pay['pay_json'],true); $this->appid=$wx['web_appid']; $this->mch_id=$wx['web_mch_id']; $this->key=$wx['web_key']; $this->appsecret=$wx['web_appsecret']; }
2.微信回調(diào)地址的處理
//因為我 在WxPay.Config.php文件里已經(jīng)賦值給了 appid 所以 這邊 new 一下 就會獲取所有的配置參數(shù) require_once "./payment/wxpay/php/lib/WxPay.Api.php"; require_once './payment/wxpay/php/lib/WxPay.Notify.php'; require_once './payment/wxpay/php/lib/WxPay.Data.php'; require_once "./payment/wxpay/php/example/WxPay.Config.php"; $config = new \WxPayConfig(); $notify = new \WxPayNotify(); $notify->Handle($config, false); //存儲微信的回調(diào) $objData = $GLOBALS['HTTP_RAW_POST_DATA']; //自定義日志 函數(shù) log_result("【接收到的notify通知】:\n".$objData."\n"); $data=\WxPayResults::Init($config,$objData); // $data = $objData->GetValues(); //TODO 1、進行參數(shù)校驗 if(!array_key_exists("return_code", $data) || (array_key_exists("return_code", $data) && $data['return_code'] != "SUCCESS")) { //TODO失敗,不是支付成功的通知 //如果有需要可以做失敗時候的一些清理處理,并且做一些監(jiān)控 $msg = "異常異常"; log_result("【接收到的notify通知】:\n".$msg."\n"); return false; } if(!array_key_exists("transaction_id", $data)){ $msg = "輸入?yún)?shù)不正確"; log_result("【接收到的notify通知】:\n".$msg."\n"); return false; } //這里可以多一步 參數(shù) 具體情況 自己定 //TODO 2、處理業(yè)務(wù)邏輯
以上是“PHP如何實現(xiàn)微信APP支付功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)頁名稱:PHP如何實現(xiàn)微信APP支付功能-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://bm7419.com/article38/dicjpp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、動態(tài)網(wǎng)站、微信小程序、關(guān)鍵詞優(yōu)化、定制網(wǎng)站、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容