首先須要到螞蟻金服開放平臺(https://docs.open.alipay.com)註冊應用,獲取應用id(APP_ID),而且配置應用,主要是簽約應用,這個須要審覈,通常2-5個工做日,審覈經過後,去生成公鑰私鑰這些東西,具體步驟參考螞蟻金服官方文檔,上面說明的比較清楚;php
下載的是服務端SDK,注意不要下錯,下載地址:https://docs.open.alipay.com/54/103419/;html
這個通常都已經有了吧。laravel
由於SDK不能用composer安裝,因此須要自定義laravel的第三方庫。express
1:首先將下載下來的包解壓後,放到laravel能夠自動加載的地方,我放在app/packages/alipay(packages是本身新建的文件夾,下載下來的包我重命名了alipay),結構如圖:json
2:在composer.json中的autoload下的classmap下加入"app/Packages/alipay";瀏覽器
3:運行composer dumpautoload 命令app
這樣接入SDK算是完成了。composer
首先在config/alipay.php文件中,配置好相關參數,具體如圖:網站
而後我直接在AopSdk.php的同名目錄新建了一個Alipay.phpui
文件中簡單寫了一個生產APP支付訂單信息的方法
1 <?php 2 /** 3 * Created by PhpStorm. 4 * User: 寞小陌 5 * Date: 2018/4/18 6 * Time: 9:49 7 */ 8 9 namespace app\Packages\alipay; 10 use Mockery\CountValidator\Exception; 11 12 require ('AopSdk.php'); 13 14 class Alipay 15 { 16 17 18 /** 19 * 生成APP支付訂單信息 20 * @param string $orderId 商品訂單號 21 * @param string $subject 支付商品的標題 22 * @param string $body 支付商品描述 23 * @param float $total_amount 商品總支付金額 24 * @param int $expire 支付過時時間,分 25 * @return bool|string 返回支付寶簽名後訂單信息,不然返回false 26 */ 27 public function generateOrder($orderId, $subject, $body, $total_amount, $expire){ 28 try{ 29 $aop = new \AopClient(); 30 $aop->gatewayUrl = config('alipay.gatewayUrl'); 31 $aop->appId = config('alipay.app_id'); 32 $aop->rsaPrivateKey = config('alipay.private_key'); 33 $aop->alipayrsaPublicKey = config('alipay.public_key'); 34 $aop->format= 'json';//固定 35 $aop->charset = config('alipay.charset'); 36 $aop->signType = config('alipay.sign_type'); 37 $request = new \AlipayTradeAppPayRequest(); 38 //SDK已經封裝掉了公共參數,這裏只須要傳入業務參數 39 $bizcontent = "{\"body\":\"{$body}\"," //支付商品描述 40 . "\"subject\":\"{$subject}\"," //支付商品的標題 41 . "\"out_trade_no\":\"{$orderId}\"," //商戶網站惟一訂單號 42 . "\"timeout_express\":\"{$expire}m\"," //該筆訂單容許的最晚付款時間,逾期將關閉交易。取值範圍:1m~15d。m-分鐘,h-小時,d-天,1c-當天(1c-當天的狀況下,不管交易什麼時候建立,都在0點關閉)。 該參數數值不接受小數點, 如 1.5h,可轉換爲 90m。 43 //注:若爲空,則默認爲15d。 44 . "\"total_amount\":\"{$total_amount}\"," //訂單總金額,單位爲元,精確到小數點後兩位,取值範圍[0.01,100000000] 45 . "\"product_code\":\"QUICK_MSECURITY_PAY\"" 46 . "}"; 47 $request->setNotifyUrl(config('alipay.notify_url')); 48 $request->setBizContent($bizcontent); 49 //這裏和普通的接口調用不一樣,使用的是sdkExecute 50 $response = $aop->sdkExecute($request); 51 //htmlspecialchars是爲了輸出到頁面時防止被瀏覽器將關鍵參數html轉義,實際打印到日誌以及http傳輸不會有這個問題 52 return htmlspecialchars($response);//就是orderString 能夠直接給客戶端請求,無需再作處理。 53 }catch(Exception $e){ 54 //失敗返回false 55 return false; 56 } 57 } 58 }
注意:必定要引入SDK的入口文件AopSdk.php,require ('AopSdk.php');
不然會報 AopClient Not Found這類的錯誤信息;
注意:$aop = new \AopClient();這裏有個「\」。
至此,支付寶的SDK就能夠用了,還有許多其餘的業務好比退款,對帳等功能,參考其官方文檔就好,邁出了第一步,接下來的路就好走多了。