thinkphp 支付寶 手機網站支付 公鑰模式

 config文件配置支付寶信息

 //支付寶 支付配置
    'ALI_CONFIG' => array(
        'gatewayUrl'      => 'https://openapi.alipay.com/gateway.do',//支付寶網關(固定)
        'appId'         => 'APPID即創建應用後生成',
        'rsaPrivateKey'     => '由開發者自己生成: 請填寫開發者私鑰去頭去尾去回車,一行字符串',
        'alipayrsaPublicKey'  => '支付寶公鑰,由支付寶生成: 請填寫支付寶公鑰,一行字符串',
        'notifyUrl'       => 'http://www.xxxx.com/api.php/CallBack/orderCallBackzfb', // 支付成功通知地址
        'returnUrl'       => 'http://www.xxxx.com/index.php/Index/index1', // 支付後跳轉地址
    )

controller支付寶支付接口,前臺用form表單提交 

    /**
     * 支付寶支付
     */
    public function orderAlipay(){
        if (IS_POST){
            Vendor('Alipay.aop.AopClient');
            Vendor('Alipay.aop.request.AlipayTradeWapPayRequest');
            $order_no = $_REQUEST['order_no'];//訂單號
            $order = M("order")->where("order_no='".$order_no."'")->find();
            if($order['type'] == 1){
                $goods = M("fish")->where("id=".$order['goods_id'])->find();
            }else{
                $goods = M("product")->where("id=".$order['goods_id'])->find();
            }
            $out_trade_no = $order_no;
            $body = '支付信息';
            $subject = $goods['name'];//商品名
            $order_amount = $order['price'];//訂單加個
            $aliConfig = C('ALI_CONFIG');
            $aop = new \AopClient();
            $aop->gatewayUrl = $aliConfig['gatewayUrl'];
            $aop->appId = $aliConfig['appId'];
            $aop->rsaPrivateKey = $aliConfig['rsaPrivateKey'];
            $aop->alipayrsaPublicKey=$aliConfig['alipayrsaPublicKey'];
            $aop->apiVersion = '1.0';
            $aop->postCharset='UTF-8';
            $aop->format='json';
            $aop->signType='RSA2';
            $request = new \AlipayTradeWapPayRequest ();
            $bizContent = "{" .
                "  \"body\":\"$body.\"," .
                "  \"subject\":\"$subject\"," .
                "  \"out_trade_no\":\"$out_trade_no\"," .
                "  \"timeout_express\":\"90m\"," .
                "  \"total_amount\":$order_amount," .
                "  \"product_code\":\"QUICK_WAP_WAY\"" .
                " }";
            $request->setBizContent($bizContent);
            $request->setNotifyUrl($aliConfig['notifyUrl']);
            $request->setReturnUrl($aliConfig['returnUrl']);
            $result = $aop->pageExecute ( $request);
            echo $result;
        }else{
            echo 'sorry,非法請求失敗';
        }
    }

 回調接口

    /**
     * 支付寶回調
     */
    public function alipayCallBack(){
        Vendor('Alipay.wappay.service.AlipayTradeService');
        $arr=$_POST;
        $aliConfig = C('ALI_CONFIG');
        $alipaySevice = new \AlipayTradeService($aliConfig);
        $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爲一致的
                //如果有做過處理,不執行商戶的業務程序

                //注意:
                //退款日期超過可退款期限後(如三個月可退款),支付寶系統發送該交易狀態通知
            }
            else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
                //判斷該筆訂單是否在商戶網站中已經做過處理
                //如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,並執行商戶的業務程序
                //請務必判斷請求時的total_amount與通知時獲取的total_fee爲一致的
                //如果有做過處理,不執行商戶的業務程序
                //注意:
                //付款完成後,支付寶系統發送該交易狀態通知
            }
            //——請根據您的業務邏輯來編寫程序(以上代碼僅作參考)——

            echo "success";		//請不要修改或刪除

        }else {
            //驗證失敗
            echo "fail";	//請不要修改或刪除

        }
    }

 

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