一、創建應用及配置
首先需要到螞蟻金服開放平台(https://docs.open.alipay.com)注冊應用,獲取應用id(APP_ID),並且配置應用,主要是簽約應用,這個需要審核,一般2-5個工作日,審核通過后,去生成公鑰私鑰這些東西,具體步驟參考螞蟻金服官方文檔,上面說明的比較清楚;
二、下載對應SDK
下載的是服務端SDK,注意不要下錯,下載地址:https://docs.open.alipay.com/54/103419/;
三、准備好域名
這個一般都已經有了吧。
四、接入SDK
因為SDK不能用composer安裝,所以需要自定義laravel的第三方庫。
具體的步驟:
1:首先將下載下來的包解壓后,放到laravel可以自動加載的地方,我放在app/packages/alipay(packages是自己新建的文件夾,下載下來的包我重命名了alipay),結構如圖:
2:在composer.json中的autoload下的classmap下加入"app/Packages/alipay";
3:運行composer dumpautoload 命令
這樣接入SDK算是完成了。
5.具體使用案例
首先在config/alipay.php文件中,配置好相關參數,具體如圖:
然后我直接在AopSdk.php的同名目錄新建了一個Alipay.php
文件中簡單寫了一個生產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就可以用了,還有許多其他的業務比如退款,對賬等功能,參考其官方文檔就好,邁出了第一步,接下來的路就好走多了。
本文屬於個人原創,歡迎轉載,轉載請附鏈接:http://www.cnblogs.com/x-x-j/p/8875636.html