支付寶支付接口


  • 常見支付方式:微信支付、支付寶支付、銀行卡支付。
  • 支付寶支付接口的類型:(商家的集成方案)
  • 擔保交易接口 用戶支付的資金先進入擔保賬戶,確認收貨后才進入商家的賬戶
  • 即時到帳接口 用戶支付的資金立即進入商家賬戶
  • 擔保交易接口在2016年8月已經停止申請。

支付寶支付流程:

 

 

 

1.創建應用(企業身份正式環境)

1支付寶開放平台:https://open.alipay.com/

 2使用自己的賬號登錄

 

 

 3創建應用

 

 

 

 

 

 

4添加能力-電腦網站支付

 

 

5 簽約:需要審核 需要填寫 個體工商戶信息 ,個人身份無法繼續簽約。

 


2.沙箱應用(個人開發者測試環境)

支付寶為沒有個體商戶資質的開發測試人員提供了一個測試環境,即沙箱應用。

 

 

 

在沙箱環境可以看到appid、測試支付寶網關、密鑰信息

 

 

 

APPID:2016080500173923
支付寶網關(gateway):https://openapi.alipaydev.com/gateway.do
秘鑰(公鑰、私鑰):需要自行生成

 

在沙箱帳號 里邊可以看到 商家信息 和 買家信息
進行付款的時候,就使用買家帳號

 

 

 

 

 

 

3.配置秘鑰

 

 

 

4.SDK的下載與配置

SDK(software development kit),軟件開發工具包,簡單來說就是一些demo示例代碼文件。
支付寶提供了一套demo文件,可以通過下載SDK拿到
https://docs.open.alipay.com/270/106291/

 

 

 

 下載解壓

 

 

 

config.php: 配置文件,配置支付寶參數
index.php: demo示例文件(支付寶效果體現)
notify_url.php: 異步回調地址(通知頁面),支付寶以post隱藏方式向商家發起請求,該方式請求安全,用於處理業                     務邏輯:比如商家在該請求里可以修改訂單狀態
return_url.php: 同步回調地址(通知頁面),支付寶通過get顯示方式向商家發起請求,該方式請求不安全,用於頁                        面展示

 

SDK&DEMO的使用:
把解壓后的目錄移動到項目目錄中的public/plugins目錄並改名為alipay

 

 

 通過瀏覽器直接訪問

 

 

 點擊付款

 

 

會跳轉頁面報錯,需要先配置支付寶參數
設置方式:
從沙箱應用頁面,獲取到APPID, 支付寶網關,支付寶公鑰
配置秘鑰時生成的商戶私鑰
配置到public/plugins/alipay/config.php中 

 

 

 

 

說明:notify_url 是用來提供給支付寶服務端調用的,必須是外網可以訪問的路徑
Return_url是用來頁面同步跳轉成功頁面,是由瀏覽器跳轉,原則上必須是外網可以訪問的路徑,這里測試可以使用本地的地址,也能跳轉成功。
在瀏覽器重新訪問
點擊付款,會跳轉到支付寶支付頁面如下:

 

 

 

 

 

 each函數過時了,被廢除了,替換成foreach

 

 

 

輸入賬號密碼: 沙箱測試提供的買家賬號密碼

 

 

 

 

 跳轉到同步回調地址:

 

 

 

 同時會攜帶很多參數在url中

 

 

 5.項目集成支付寶

 

 

 頁面編寫隱藏表單用於點擊立即支付后的頁面跳轉和數據提交

 

 

 數據提交到支付處理程序

 

 

 curl函數的說明
這里需要注意的是:要想以 x-www-form-urlencoded 方式發送,最關鍵是發送的數據格式。
方式from-data試發送的數據用的是array格式,而方式為 x-www-form-urlencoded 時需要用key=value&key2=value2的格式發送,發送的是string型的數據。
比如我上面from-data數據的為: $data = [ 'username' => '小明', 'age' => '18' ]; x-www-form-urlencoded時的數據則要變為 http_build_query($data);
$headers = array('Content-Type: application/x-www-form-urlencoded');

 

 function curl($url,$data,$headers){
    $curl = curl_init(); // 啟動一個CURL會話
    curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 對認證證書來源的檢查
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 從證書中檢查SSL加密算法是否存在
    curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模擬用戶使用的瀏覽器
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自動跳轉
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自動設置Referer
    curl_setopt($curl, CURLOPT_POST, 1); // 發送一個常規的Post請求
    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); // Post提交的數據包
    curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設置超時限制防止死循環
    curl_setopt($curl, CURLOPT_HEADER, 0); // 顯示返回的Header區域內容
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 獲取的信息以文件流的形式返回
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    $result = curl_exec($curl); // 執行操作
    if (curl_errno($curl)) {
        echo 'Errno'.curl_error($curl);//捕抓異常
    }
    curl_close($curl); // 關閉CURL會話
    echo($result);
}

 

 

 

交易完成,跳到回調頁面,修改回調地址 進行簽名驗證,數據校驗

 

 

參考return_url.php代碼

 

 

    public function callback(){
        require_once("./plugins/alipay/config.php");
        require_once './plugins/alipay/pagepay/service/AlipayTradeService.php';
        $all = request()->all();
        $alipaySevice = new \AlipayTradeService($config);
        $result = $alipaySevice->check($all);
        if($result){
            $total_amount = $all["total_amount"];
            return view("payok",["total_amount"=>$total_amount]);
        }else{
            return view("payfail");
        }
        // 等着支付寶給我跳回來 get
//        dd(request()->all());
//        $all = request()->all();

    }

再次支付

 

 alipay定義了和laravel框架意義的同名函數,建議修改Alipay函數名即可
修改文件 /plugins/alipay/aop/AopEncrypt.php 第15行,第30行

 

 修改文件 /plugins/alipay/lotusphp_runtime/Cookie/Cookie.php

 

 再次支付

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM