yii2下使用支付寶


最近入坑了yii2 感覺是個很強大的框架。使用yii做支付寶的移動支付的時候出了點問題,記錄下來避免以后忘記了。

使用的是支付寶立即到賬的功能,網上很多集成好的接口我就不重復了,找不到的話github上有。說一下下載下來后需要修改的地方。

 

下載下來的應該是這些文件。我這里使用的是yii2的基礎框架,首先把解壓好的文件夾放在網站根目錄下。

首先打開alipaypay.php

這兩個地方要對應的修改成app\yii2_alipay 和 app\yii2_alipay\Alipaysubmit

也就是把frontend\替換成app

其余文件也是這樣就不贅述了

修改后市這樣的

此外要注意AlipayCore.php中

這里也要修改成

這里就是我之前一直沒有成功的原因。

之后就只用修改alipaypay.php即可

這里是你自己在支付寶開放平台申請的,填上即可。

這里是你對應的同步回掉和異步回掉地址,注意一定是要公網可以訪問,不能有參數和localhost,因此建議把路徑替換成index.php/order/return這樣

網上我學習的教程帶有?r=這樣的形式,我沒驗證過是否可以

查看支付寶文檔可以知道,異步回掉是保證成功的,因此可以單獨只寫異步回掉,也可以把異步回掉同步回掉均寫一遍。

這個函數是傳遞一些支付寶必要的參數,具體可以查看文檔,這里我也不贅述了,各位可以根據自己的需要修改。以上是支付寶類需要修改的地方,各位可以根據自己的實際情況進行修改。

接下來就是寫自己的action方法了

首先,支付寶的異步回掉需要關掉csrf,如果有進行了登錄驗證最好關掉登錄驗證

上圖就是關閉csrf的方法

關閉登錄驗證可以直接使用access

      $total = 0.01;//round($total,2);
         $order_id = 123123123;//訂單號,必須唯一
         $gift_name = "租賃書籍"; $money = $total; $body = "租賃書籍"; $show_url = 'lcoalhost'; $alipay = new AlipayPay(); $html = $alipay->requestPay($order_id, $gift_name, $money, $body, $show_url);
      echo $html;

注意訂單號必須唯一,不然后一個訂單會直接顯示已經付過款,其余參數可以查詢手冊

異步回掉

$alipay = new AlipayPay();$verify_result = $alipay->verifyNotify();
        if ($verify_result) {//驗證成功
            //商戶訂單號
            $out_trade_no = Yii::$app->request->post('out_trade_no');
            //交易狀態
            $trade_status = Yii::$app->request->post('trade_status');
            if($trade_status == 'TRADE_FINISHED'||$trade_status == 'TRADE_SUCCESS') 
            {
                //自己的處理代碼
            }
            
            //返回狀態
            return "success";
        } else {
            //驗證失敗
            return "fail";
        }

同步回掉

//判斷結果,跳轉到不同頁面
         $alipay = new AlipayPay();$result = $alipay->verifyReturn();

        if ($result) {
            $success = $_GET['trade_status'];
            $out_trade_no = $_GET['out_trade_no'];
            if ($success == 'TRADE_SUCCESS'||$success == 'TRADE_FINISHED') {
                //自己的代碼
            } else {
                echo 'no';
            }
        }
        else {
            echo 'fail';
        }

這個回掉挺簡單的,主要是用來處理付款成功后的一些,例如修改付款狀態啊什么的,主要是異步起作用,同步因為各種原因可能會出問題。

以上應該是全部的要點了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM