TP5-支付寶支付接入-Poison

下載官方demo 放入extend下

<?php


namespace app\index\controller;
use think\Loader;
Loader::import('alipay.wappay.service.AlipayTradeService',EXTEND_PATH,'.php');
Loader::import('alipay.wappay.buildermodel.AlipayTradeWapPayContentBuilder',EXTEND_PATH,'.php');
Loader::import('alipay.config.php');
use think\Controller;

class Alipay extends Controller
{
    public function index(){
        return $this->fetch();
    }
    public function pay(){
        $config = array (
            //應用ID,您的APPID。
            'app_id' => "your app_id",
            //商戶私鑰,您的原始格式RSA私鑰
            'merchant_private_key' => "121321313",
            //異步通知地址
            'notify_url' => "324234",

            //同步跳轉
            'return_url' => "23423423",

            //編碼格式
            'charset' => "UTF-8",

            //簽名方式
            'sign_type'=>"RSA2",

            //支付寶網關
            'gatewayUrl' => "https://openapi.alipay.com/gateway.do",

            //支付寶公鑰,查看地址:https://openhome.alipay.com/platform/keyManage.htm 對應APPID下的支付寶公鑰。
            'alipay_public_key' => "23423423423",
        );
        $price = $this->request->post('price');
        //商戶訂單號,商戶網站訂單系統中唯一訂單號,必填
        $out_trade_no = rand(100000,99999999);

        //訂單名稱,必填
        $subject = '測試';

        //付款金額,必填
        $total_amount = $price;

        //商品描述,可空
        $body = '商品描述測試';
        //超時時間
        $timeout_express="1m";
        //傳入參數
        $payRequestBuilder = new \AlipayTradeWapPayContentBuilder();
        $payRequestBuilder->setBody($body);
        $payRequestBuilder->setSubject($subject);
        $payRequestBuilder->setOutTradeNo($out_trade_no);
        $payRequestBuilder->setTotalAmount($total_amount);
        $payRequestBuilder->setTimeExpress($timeout_express);

        $payResponse = new \AlipayTradeService($config);
        $result = $payResponse->wapPay($payRequestBuilder,$config['return_url'],$config['notify_url']);

        return ;
    }

}

以上填入對應的參數 即可發起支付

接下來就是支付完成後回調的部分

 /**
     * 用於支付寶回調
     */
    public function notify_url(){
        $arr=$_POST;
        $alipaySevice = new \AlipayTradeService($config);//這裏引入的配置 如果懶得引入 就自己寫一下demo中的配置
        $alipaySevice->writeLog(var_export($_POST,true));
        $result = $alipaySevice->check($arr);
        if($result) {//驗證成功
            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            //請在這裏加上商戶的業務邏輯程序代
            //——請根據您的業務邏輯來編寫程序(以下代碼僅作參考)——
            //獲取支付寶的通知返回參數,可參考技術文檔中服務器異步通知參數列表
            //商戶訂單號
            $out_trade_no = $_POST['out_trade_no'];
            //支付寶交易號
            $trade_no = $_POST['trade_no'];
            //交易狀態
            $trade_status = $_POST['trade_status'];
            if($_POST['trade_status'] == 'TRADE_FINISHED') {
                //判斷該筆訂單是否在商戶網站中已經做過處理
                //如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,並執行商戶的業務程序
                //請務必判斷請求時的total_amount與通知時獲取的total_fee爲一致的
                //如果有做過處理,不執行商戶的業務程序
                //注意:
                //退款日期超過可退款期限後(如三個月可退款),支付寶系統發送該交易狀態通知
            } elseif ($_POST['trade_status'] == 'TRADE_SUCCESS') {
                //判斷該筆訂單是否在商戶網站中已經做過處理
                //如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,並執行商戶的業務程序
                //請務必判斷請求時的total_amount與通知時獲取的total_fee爲一致的
                //如果有做過處理,不執行商戶的業務程序
                //注意:
                //付款完成後,支付寶系統發送該交易狀態通知
            }
            //——請根據您的業務邏輯來編寫程序(以上代碼僅作參考)——
            echo "success";		//請不要修改或刪除
        }else {
            //驗證失敗
            echo "fail";	//請不要修改或刪除
        }
    }

就是這麼簡單,你學會了嗎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章