laravel 接入螞蟻金服SDK(以支付寶APP支付爲例)開發步驟

 

1、建立應用及配置

首先須要到螞蟻金服開放平臺(https://docs.open.alipay.com)註冊應用,獲取應用id(APP_ID),而且配置應用,主要是簽約應用,這個須要審覈,通常2-5個工做日,審覈經過後,去生成公鑰私鑰這些東西,具體步驟參考螞蟻金服官方文檔,上面說明的比較清楚;php

2、下載對應SDK

下載的是服務端SDK,注意不要下錯,下載地址:https://docs.open.alipay.com/54/103419/html

3、準備好域名

這個通常都已經有了吧。laravel

4、接入SDK

由於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

5.具體使用案例

首先在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就能夠用了,還有許多其餘的業務好比退款,對帳等功能,參考其官方文檔就好,邁出了第一步,接下來的路就好走多了。

 

本文屬於我的原創,歡迎轉載,轉載請附連接:http://www.cnblogs.com/x-x-j/p/8875636.html

相關文章
相關標籤/搜索