91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于TP5框架php如何實現的支付寶網頁支付功能

發布時間:2020-08-03 09:14:01 來源:億速云 閱讀:164 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關基于TP5框架php如何實現的支付寶網頁支付功能,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

本文實例講述了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 "驗證失敗";
}


看完上述內容,你們對基于TP5框架php如何實現的支付寶網頁支付功能有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邹平县| 海伦市| 咸宁市| 宁陵县| 且末县| 慈溪市| 郯城县| 丰原市| 买车| 大埔区| 阳高县| 大同县| 鄂伦春自治旗| 新郑市| 浙江省| 拜泉县| 金秀| 马山县| 开化县| 辛集市| 德令哈市| 荣成市| 屏东市| 青州市| 扎囊县| 南靖县| 天柱县| 原平市| 德安县| 资讯| 衡水市| 朝阳市| 桐乡市| 云阳县| 金塔县| 屯门区| 华亭县| 库尔勒市| 阿图什市| 永寿县| 崇阳县|