一、建立應用php
二、 配置祕鑰(密鑰生成工具下載連接:https://docs.open.alipay.com/291/105971)html
三、 進入相應的應用詳情中,點擊應用信息,修改開發設置中的應用網關和受權回調地址前端
應用網關:用於接收支付寶異步通知 json
受權回調地址:第三方受權或用戶信息受權後回調地址服務器
若是是普通支付類接口調用不須要配置這兩個參數的 app
單純的支付接口是不須要配置這兩個信息的,簡單來講就是:應用網關是用於接收口碑或是生活號的信息的,受權回調地址是第三方受權或是用戶信息受權使用的,若是用不到是能夠不配置的! ( PS: 這是網上查看的,不肯定哈,反正我是配置了,有大佬知道的話下面回覆一下能夠嗎 >_< )異步
四、 下載開放平臺服務端SDK( 下載連接:https://docs.open.alipay.com/270/106291/)工具
五、 下載以後將文件夾改名爲 alipay ( 看你心情作這一步 )網站
六、 丟到extend文件夾下面(不知道路徑的 看下圖)ui
七、填寫config.php文件裏面的參數(上圖中的config文件)
八、 調用支付寶支付接口的時候須要至少3個參數(商戶訂單號要確保惟一性;訂單名稱;付款金額)
示例代碼以下:
//建立支付訂單 public function create_order(){ //業務邏輯本身寫 //支付寶支付 $alipay = $this->alipay($order_number,$title,$money,$description); $res['url'] = $alipay; echo json_encode($res);exit; //前端獲取到這個URL跳轉一下這個連接 window.location.href = ret.url } //支付寶支付 public function alipay($order_number,$title,$money,$description){ //須要引入這三個文件 require_once EXTEND_PATH.'alipay/config.php'; require_once EXTEND_PATH.'alipay/pagepay/service/AlipayTradeService.php'; require_once EXTEND_PATH.'alipay/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php'; //商戶訂單號,商戶網站訂單系統中惟一訂單號,必填 $out_trade_no = trim($order_number); //訂單名稱,必填 $subject = trim($title); //付款金額,必填 $total_amount = trim($money); //商品描述,可空 $body = trim($description); //構造參數 $payRequestBuilder = new \AlipayTradePagePayContentBuilder(); $payRequestBuilder->setBody($body); $payRequestBuilder->setSubject($subject); $payRequestBuilder->setTotalAmount($total_amount); $payRequestBuilder->setOutTradeNo($out_trade_no); $aop = new \AlipayTradeService($config); /** * pagePay 電腦網站支付請求 * @param $builder //業務參數,使用buildmodel中的對象生成。 * @param $return_url //同步跳轉地址,公網能夠訪問 * @param $notify_url //異步通知地址,公網能夠訪問 * @return $response 支付寶返回的信息 */ $response = $aop->pagePay($payRequestBuilder,$config['return_url'],$config['notify_url']); return $response; } //config.php裏配置的異步通知地址 function notifyurl(){ //引入這兩個文件 require_once EXTEND_PATH.'alipay/config.php'; require_once EXTEND_PATH.'alipay/pagepay/service/AlipayTradeService.php'; $arr=$_POST; $alipaySevice = new \AlipayTradeService($config); $alipaySevice->writeLog(var_export($_POST,true)); $result = $alipaySevice->check($arr); /* 實際驗證過程建議商戶添加如下校驗。 一、商戶須要驗證該通知數據中的out_trade_no是否爲商戶系統中建立的訂單號, 二、判斷total_amount是否確實爲該訂單的實際金額(即商戶訂單建立時的金額), 三、校驗通知中的seller_id(或者seller_email) 是否爲out_trade_no這筆單據的對應的操做方(有的時候,一個商戶可能有多個seller_id/seller_email) 四、驗證app_id是否爲該商戶自己。 */ 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"; } } //頁面跳轉處理方法 function returnurl(){ //引入這兩個文件 require_once EXTEND_PATH.'alipay/config.php'; require_once EXTEND_PATH.'alipay/pagepay/service/AlipayTradeService.php'; $arr=$_GET; $alipaySevice = new \AlipayTradeService($config); $result = $alipaySevice->check($arr); /* 實際驗證過程建議商戶添加如下校驗。 一、商戶須要驗證該通知數據中的out_trade_no是否爲商戶系統中建立的訂單號, 二、判斷total_amount是否確實爲該訂單的實際金額(即商戶訂單建立時的金額), 三、校驗通知中的seller_id(或者seller_email) 是否爲out_trade_no這筆單據的對應的操做方(有的時候,一個商戶可能有多個seller_id/seller_email) 四、驗證app_id是否爲該商戶自己。 */ if($result) {//驗證成功 //請根據您的業務邏輯來編寫程序(已下代碼僅爲參考) //商戶訂單號 $out_trade_no = htmlspecialchars($_GET['out_trade_no']); //支付寶交易號 $trade_no = htmlspecialchars($_GET['trade_no']); echo "驗證成功<br />支付寶交易號:".$trade_no; }else { //驗證失敗 echo "驗證失敗"; } }
(PS:第一次接電腦網站支付寶支付, 這個接口($response = $aop->pagePay() )就是生成請求字符串或是form表單來提交到頁面發起支付的 若是是form表單就是提交到頁面會喚起支付 若是生成請求連接 就須要提交到頁面訪問連接喚起支付。原本 var_dump($response); 應該能夠直接喚起支付的, 可是不知道是什麼緣由,網頁不跳轉,因此就用這樣的方式讓前臺跳轉URL 。 但願有大佬能夠指點一下!萬分感謝!)