主頁(yè) > 知識(shí)庫(kù) > php實(shí)現(xiàn)的支付寶網(wǎng)頁(yè)支付功能示例【基于TP5框架】

php實(shí)現(xiàn)的支付寶網(wǎng)頁(yè)支付功能示例【基于TP5框架】

熱門(mén)標(biāo)簽:青白江地圖標(biāo)注 江蘇電商外呼系統(tǒng)運(yùn)營(yíng)商 沛縣400電話辦理 AI電話機(jī)器人OEM貼牌 銅川電話機(jī)器人價(jià)格 聊城電話外呼系統(tǒng)公司 智能電話機(jī)器人好公司門(mén)薩維 辦理重慶400電話 德陽(yáng)中江如何申請(qǐng)400開(kāi)頭電話

本文實(shí)例講述了php實(shí)現(xiàn)的支付寶網(wǎng)頁(yè)支付功能。分享給大家供大家參考,具體如下:

1.提交支付請(qǐng)求

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']
];
//商品訂單號(hào)
$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.異步回調(diào)支付寶參數(shù)認(rèn)證

$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);
  /* 實(shí)際驗(yàn)證過(guò)程建議商戶添加以下校驗(yàn)。
  1、商戶需要驗(yàn)證該通知數(shù)據(jù)中的out_trade_no是否為商戶系統(tǒng)中創(chuàng)建的訂單號(hào),
  2、判斷total_amount是否確實(shí)為該訂單的實(shí)際金額(即商戶訂單創(chuàng)建時(shí)的金額),
  3、校驗(yàn)通知中的seller_id(或者seller_email) 是否為out_trade_no這筆單據(jù)的對(duì)應(yīng)的操作方(有的時(shí)候,一個(gè)商戶可能有多個(gè)seller_id/seller_email)
  4、驗(yàn)證app_id是否為該商戶本身。
  */
  if($result) {//驗(yàn)證成功
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //請(qǐng)?jiān)谶@里加上商戶的業(yè)務(wù)邏輯程序代
    //——請(qǐng)根據(jù)您的業(yè)務(wù)邏輯來(lái)編寫(xiě)程序(以下代碼僅作參考)——
    //獲取支付寶的通知返回參數(shù),可參考技術(shù)文檔中服務(wù)器異步通知參數(shù)列表
    //商戶訂單號(hào)
    $out_trade_no = $_POST['out_trade_no'];
    //支付寶交易號(hào)
    $trade_no = $_POST['trade_no'];
    //交易狀態(tài)
    $trade_status = $_POST['trade_status'];
    //交易金額
    $total_amount = $_POST['total_amount'];
    if($_POST['trade_status'] == 'TRADE_FINISHED') {
      //判斷該筆訂單是否在商戶網(wǎng)站中已經(jīng)做過(guò)處理
      //如果沒(méi)有做過(guò)處理,根據(jù)訂單號(hào)(out_trade_no)在商戶網(wǎng)站的訂單系統(tǒng)中查到該筆訂單的詳細(xì),并執(zhí)行商戶的業(yè)務(wù)程序
      //請(qǐng)務(wù)必判斷請(qǐng)求時(shí)的total_amount與通知時(shí)獲取的total_fee為一致的
      //如果有做過(guò)處理,不執(zhí)行商戶的業(yè)務(wù)程序
      //注意:
      //退款日期超過(guò)可退款期限后(如三個(gè)月可退款),支付寶系統(tǒng)發(fā)送該交易狀態(tài)通知
    } else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
      //判斷該筆訂單是否在商戶網(wǎng)站中已經(jīng)做過(guò)處理
      //如果沒(méi)有做過(guò)處理,根據(jù)訂單號(hào)(out_trade_no)在商戶網(wǎng)站的訂單系統(tǒng)中查到該筆訂單的詳細(xì),并執(zhí)行商戶的業(yè)務(wù)程序
      //請(qǐng)務(wù)必判斷請(qǐng)求時(shí)的total_amount與通知時(shí)獲取的total_fee為一致的
      //如果有做過(guò)處理,不執(zhí)行商戶的業(yè)務(wù)程序
      //注意:
      //付款完成后,支付寶系統(tǒng)發(fā)送該交易狀態(tài)通知
      //此處應(yīng)該更新一下訂單狀態(tài),商戶自行增刪操作
       這里寫(xiě)你的邏輯程序
    }
    //——請(qǐng)根據(jù)您的業(yè)務(wù)邏輯來(lái)編寫(xiě)程序(以上代碼僅作參考)——
    echo 'success';
  }else {
    //驗(yàn)證失敗
    echo "fail";
  }
}

3.同步回調(diào)頁(yè)面跳轉(zhuǎn)處理  同步只是做一個(gè)跳轉(zhuǎn)處理 不要寫(xiě)任何數(shù)據(jù)處理

$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);
/* 實(shí)際驗(yàn)證過(guò)程建議商戶添加以下校驗(yàn)。
1、商戶需要驗(yàn)證該通知數(shù)據(jù)中的out_trade_no是否為商戶系統(tǒng)中創(chuàng)建的訂單號(hào),
2、判斷total_amount是否確實(shí)為該訂單的實(shí)際金額(即商戶訂單創(chuàng)建時(shí)的金額),
3、校驗(yàn)通知中的seller_id(或者seller_email) 是否為out_trade_no這筆單據(jù)的對(duì)應(yīng)的操作方(有的時(shí)候,一個(gè)商戶可能有多個(gè)seller_id/seller_email)
4、驗(yàn)證app_id是否為該商戶本身。
*/
if($result) {//驗(yàn)證成功
  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  //請(qǐng)?jiān)谶@里加上商戶的業(yè)務(wù)邏輯程序代碼
  //——請(qǐng)根據(jù)您的業(yè)務(wù)邏輯來(lái)編寫(xiě)程序(以下代碼僅作參考)——
  //獲取支付寶的通知返回參數(shù),可參考技術(shù)文檔中頁(yè)面跳轉(zhuǎn)同步通知參數(shù)列表
  //商戶訂單號(hào)
  $out_trade_no = htmlspecialchars($_GET['out_trade_no']);
  //支付寶交易號(hào)
  $trade_no = htmlspecialchars($_GET['trade_no']);
  $this->success("支付成功",url('Index/index'));
  //——請(qǐng)根據(jù)您的業(yè)務(wù)邏輯來(lái)編寫(xiě)程序(以上代碼僅作參考)——
  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
else {
  //驗(yàn)證失敗
  echo "驗(yàn)證失敗";
}

更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門(mén)教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門(mén)教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門(mén)教程》及《PHP模板技術(shù)總結(jié)》。

希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • PHP支付寶當(dāng)面付2.0代碼
  • php實(shí)現(xiàn)單筆轉(zhuǎn)賬到支付寶功能
  • php app支付寶回調(diào)(異步通知)詳解
  • php支付寶APP支付功能
  • PHP實(shí)現(xiàn)QQ、微信和支付寶三合一收款碼實(shí)例代碼
  • PHP實(shí)現(xiàn)支付寶即時(shí)到賬功能
  • thinkPHP框架對(duì)接支付寶即時(shí)到賬接口回調(diào)操作示例
  • PHP接入支付寶接口失效流程詳解

標(biāo)簽:三亞 鷹潭 烏魯木齊 濟(jì)寧 赤峰 南寧 迪慶 山南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php實(shí)現(xiàn)的支付寶網(wǎng)頁(yè)支付功能示例【基于TP5框架】》,本文關(guān)鍵詞  php,實(shí)現(xiàn),的,支付,寶,網(wǎng)頁(yè),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php實(shí)現(xiàn)的支付寶網(wǎng)頁(yè)支付功能示例【基于TP5框架】》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于php實(shí)現(xiàn)的支付寶網(wǎng)頁(yè)支付功能示例【基于TP5框架】的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章