站長資訊網
        最全最豐富的資訊網站

        了解php實現的支付寶網頁支付功能【基于TP5框架】

        了解php實現的支付寶網頁支付功能【基于TP5框架】

        本文實例講述了php實現的支付寶網頁支付功能。分享給大家供大家參考,具體如下:

        1.提交支付請求

        require_once './payment/zfb/pagepay/service/AlipayTradeService.php'; require_once './payment/zfb/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php'; $payInfo=Db::name('pay_type')->where(['pay_id'=>1])->find(); $zfb=json_decode($payInfo['pay_json'],true); $config=[   'app_id'=>$zfb['app_id'],   'merchant_private_key'=>$zfb['merchant_private_key'],   'notify_url'=>config('z_notify_url'),   'return_url'=>config('z_return_url'),   'charset'=>config('charset'),   'sign_type'=>config('sign_type'),   'gatewayUrl'=>config('gatewayUrl'),   'alipay_public_key'=>$zfb['alipay_public_key'] ]; //商品訂單號 $out_trade_no=$orderData['order_number']; //訂單名稱,必填 $subject='充值訂單'; //付款金額 $total_amount=$money; //商品描述 $body = $out_trade_no . '-' . $this->agent_id.'-'.$money; $payRequestBuilder = new AlipayTradePagePayContentBuilder(); $payRequestBuilder->setBody($body); $payRequestBuilder->setSubject($subject); $payRequestBuilder->setTotalAmount($total_amount); $payRequestBuilder->setOutTradeNo($out_trade_no); $aop = new AlipayTradeService($config); $response = $aop->pagePay($payRequestBuilder,$config['return_url'],$config['notify_url']); echo $response;

        2.異步回調支付寶參數認證

        $pay=Db::name('pay_type')->where(['pay_id'=>1])->find();   $zfb=json_decode($pay['pay_json'],true);   $config = [     'app_id' => $zfb['app_id'],     'merchant_private_key' => $zfb['merchant_private_key'],     'notify_url' => config('z_notify_url'),     'return_url' => config('z_return_url'),     'charset' => config('charset'),     'sign_type' => config('sign_type'),     'gatewayUrl' => config('gatewayUrl'),     'alipay_public_key' => $zfb['alipay_public_key']   ];   $arr=$_POST;   $alipaySevice = new AlipayTradeService($config);   $alipaySevice->writeLog(var_export($_POST,true));   $result = $alipaySevice->check($arr);   /* 實際驗證過程建議商戶添加以下校驗。   1、商戶需要驗證該通知數據中的out_trade_no是否為商戶系統中創建的訂單號,   2、判斷total_amount是否確實為該訂單的實際金額(即商戶訂單創建時的金額),   3、校驗通知中的seller_id(或者seller_email) 是否為out_trade_no這筆單據的對應的操作方   (有的時候,一個商戶可能有多個seller_id/seller_email)   4、驗證app_id是否為該商戶本身。   */   if($result) {//驗證成功     ////////////////////////////////////////////////////////////////////////////////     //請在這里加上商戶的業務邏輯程序代     //——請根據您的業務邏輯來編寫程序(以下代碼僅作參考)——     //獲取支付寶的通知返回參數,可參考技術文檔中服務器異步通知參數列表     //商戶訂單號     $out_trade_no = $_POST['out_trade_no'];     //支付寶交易號     $trade_no = $_POST['trade_no'];     //交易狀態     $trade_status = $_POST['trade_status'];     //交易金額     $total_amount = $_POST['total_amount'];     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";   } }

        3.同步回調頁面跳轉處理 同步只是做一個跳轉處理 不要寫任何數據處理

        $pay=Db::name('pay_type')->where(['pay_id'=>1])->find(); $zfb=json_decode($pay['pay_json'],true); $config = [   'app_id' => $zfb['app_id'],   'merchant_private_key' => $zfb['merchant_private_key'],   'notify_url' => config('z_notify_url'),   'return_url' => config('z_return_url'),   'charset' => config('charset'),   'sign_type' => config('sign_type'),   'gatewayUrl' => config('gatewayUrl'),   'alipay_public_key' => $zfb['alipay_public_key'] ]; $arr=$_GET; $alipaySevice = new AlipayTradeService($config); $result = $alipaySevice->check($arr); /* 實際驗證過程建議商戶添加以下校驗。 1、商戶需要驗證該通知數據中的out_trade_no是否為商戶系統中創建的訂單號, 2、判斷total_amount是否確實為該訂單的實際金額(即商戶訂單創建時的金額), 3、校驗通知中的seller_id(或者seller_email) 是否為out_trade_no這筆單據的對應的操作方 (有的時候,一個商戶可能有多個seller_id/seller_email) 4、驗證app_id是否為該商戶本身。 */ if($result) {//驗證成功   ///////////////////////////////////////////////////////////////////////////////   //請在這里加上商戶的業務邏輯程序代碼   //——請根據您的業務邏輯來編寫程序(以下代碼僅作參考)——   //獲取支付寶的通知返回參數,可參考技術文檔中頁面跳轉同步通知參數列表   //商戶訂單號   $out_trade_no = htmlspecialchars($_GET['out_trade_no']);   //支付寶交易號   $trade_no = htmlspecialchars($_GET['trade_no']);   $this->success("支付成功",url('Index/index'));   //——請根據您的業務邏輯來編寫程序(以上代碼僅作參考)——   /////////////////////////////////////////////////////////////////////////// } else {   //驗證失敗   echo "驗證失敗"; }

        相關學習推薦:PHP編程從入門到精通

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 欧美日韩人妻精品一区二区在线 | 99精品国产成人一区二区| 久久久久久亚洲精品无码| 国内精品久久久久久野外| 亚洲国产精品无码成人片久久| 国产精品久操视频| 久久99精品综合国产首页| 久久国产精品无码一区二区三区| 蜜臀久久99精品久久久久久| 91精品视频观看| 久久精品无码一区二区三区| 国产精品无码午夜福利| 亚洲精品国产精品乱码在线观看| 欧美精品丝袜久久久中文字幕 | 久久久久无码精品国产app| 久久国产乱子精品免费女| 国产精品免费看久久久 | 欧美国产亚洲精品高清不卡| 国产麻豆精品一区二区三区v视界 国产麻豆一精品一AV一免费 | 国产精品成人无码久久久久久 | 综合在线视频精品专区| 无码精品第一页| 久久久久国产精品麻豆AR影院 | 92国产精品午夜福利| 四虎成人精品永久免费AV| 亚洲精品成人区在线观看| 午夜精品久久影院蜜桃 | 久久e热在这里只有国产中文精品99| 中国精品videossex中国高清| 国产原创精品视频| 99re6在线视频精品免费| 国产成人精品电影在线观看| 久久国产乱子伦免费精品| 精品无码日韩一区二区三区不卡| 亚洲精品无码av人在线观看| 中文国产成人精品久久亚洲精品AⅤ无码精品| 久久精品国产只有精品66| 精品久久久久久国产牛牛app| 国产香蕉国产精品偷在线| 久久国产精品国语对白| 色婷婷噜噜久久国产精品12p|