歡迎使用拉卡拉PHP SDK
為了幫助開發(fā)者快速接入拉卡拉開放平臺,拉卡拉提供了PHP SDK, 為各個合作伙伴的技術人員封裝了請求的簽名和響應的驗簽,簡化了系統(tǒng)的開發(fā)工作。
獲取PHP SDK
| 開發(fā)語言 | 資源下載 | 環(huán)境要求 |
| PHP 版資源 | PHP SDK | ^7.0 || ^8.0 |
Lakala PHP SDK說明
流程說明
Lakala SDK與拉卡拉開放平臺交互處理流程如下:
針對以上處理流程
1: 左側為客戶主動發(fā)起的Request-Response的流程:拉卡拉PHP SDK封裝請求加密(若需要)、加簽,返回解簽、解密。
2: 右側為拉卡拉開放平臺發(fā)起的通知的流程:拉卡拉PHPSDK也封裝了解析處理通知報文的類以及標準返回內容。
目錄結構
├─example/ │ ├─RSAKeys/ │ │ └─DEV/ │ ├─v2/ │ └─v3/ ├─v2/ │ └─src/ │ └─Api │ └─V2LakalaApi.php │ ├─Model/ │ ├─Util/ │ └─.lklopensdk.env │ └─V2Configuration.php ├─v3/ │ ├─DEV/ │ └─src/ │ └─Api/ ├─LakalaNotifyApi.php │ └─LakalaApi.php │ ├─Model/ │ └─Util/ │ └─.lklopensdk.env │ └─Configuration.php └─composer.json └─README.md復制
拉卡拉開放平臺的接口包含兩種風格,部分接口風格為V2(駝峰)、部分接口風格為V3(下劃線,基于openAPI規(guī)范),為此,PHPSDK封裝了V2、V3兩種接口的API,開發(fā)者可以根據所使用接口的風格選擇不同API類。
目錄或者文件 | 說明 |
example/ | 該目錄包含了V2、V3風格代碼示例【推薦讀】。 |
v2/ | 該目錄下包含了V2風格api以及相關Model。 |
V2LakalaApi.php | 該文件是V2風格Api主類。 |
V2Configuration.php | V2風格的配置類,讀取配置文件(.lklopensdk.env) |
v3/ | 該目錄下包含了V3風格api以及相關Model。 其中包含一些交易相關預先分裝的類。 |
LakalaNotifyApi | 該文件是用來處理拉卡拉回調通知返回 |
LakalaApi.php | 該文件是V3風格Api主類。 |
Configuration.php | v3風格的配置類,讀取配置文件(.lklopensdk.env) |
.lklopensdk.env | 配置文件,其中包含了appid、證書、密鑰等配置。 |
README.md | 該文件說明了如何使用拉卡拉開放平臺的PHP-SDK的使用方法。【必讀】 |
composer.json | 該文件包含了php版本說明 |
調用示例代碼說明
V3接口調用
require_once '../../vendor/autoload.php';$config = new \Lakala\OpenAPISDK\V3\Configuration();
$api = new \Lakala\OpenAPISDK\V3\Api\LakalaApi($config);$request = new \Lakala\OpenAPISDK\V3\Model\ModelRequest();
// 請求字段
$request->setReqData([
'merchant_no' => '822290070111135',
'term_no' => '29034705',
'out_trade_no' => date('YmdHis', time()),
'trade_no' => '',
]);
$response = $api->tradeApi('/api/v3/labs/query/tradequery', $request);復制require_once '../../vendor/autoload.php';
V2接口調用
require_once '../../vendor/autoload.php';
require_once '../../vendor/autoload.php';
方法說明
通過觀察V2、V3的代碼示例中出現兩個重要的方法。
| 方法名 | 說明 |
| tradeApi | 1:接口路徑: 2:Request: |
| apiWithBody | 1:接口路徑: 2:通用字符串:可以JSON格式字符串、若是加密就是加密后的字符串 |
重點類說明
| 類名 | 說明 |
Configuration; V2Configuration; | V2、V3配置類,其中構造函數配置文件地址(默認是隨SDK包裝的.lklsdksdk.env),配置文件中 |
LakalaApi V2LakalaApi | V2、V3主類, 構造方法需要有兩個: 1. config 2. 加解密策略枚舉類: const NONE = 'none'; // 普通無加解密:請求為明文,返回也是明文 const REQUEST = 'request'; // 只請求加密,返回為明文 const RESPONSE = 'response';// 請求明文、響應需解密 const BOTH = 'both'; // 請求需加密、返回需解密復制 注意:客戶對接的時候,需要根據接口文檔的加解密說明,選擇以上策略 |
交易預封裝類
針對V3風格的接口,拉卡拉預先封裝了交易相關的幾個V3接口,包括主掃、被掃、查詢、退款,具體使用可參考example中。
FAQ&Tips(常見問題以及建議)
問題1:若同時對接V2,V3兩類接口,是否需要分別使用V2LakalaApi、LakalaApi?
答案1:是的。需要分別初始化。
問題2:若同時對接加密或者不加密接口,如何初始化V2LakalaApi、LakalaApi?
答案2:
V2接口:
分別初始化不加解密策略的api對象
$api1 = new \Lakala\OpenAPISDK\V2\Api\V2LakalaApi($config,V2EncryptMode::NONE); $api2= new \Lakala\OpenAPISDK\V2\Api\V2LakalaApi($config,V2EncryptMode::REQUEST); $api3= new \Lakala\OpenAPISDK\V2\Api\V2LakalaApi($config,V2EncryptMode::RESPONSE); $api4= new \Lakala\OpenAPISDK\V2\Api\V2LakalaApi($config,V2EncryptMode::BOTH);復制
V3接口:
$api1 = new \Lakala\OpenAPISDK\V3\Api\LakalaApi($config,EncryptMode::NONE); $api2= new \Lakala\OpenAPISDK\V3\Api\LakalaApi($config,EncryptMode::REQUEST); $api3= new \Lakala\OpenAPISDK\V3\Api\LakalaApi($config,EncryptMode::RESPONSE); $api4= new \Lakala\OpenAPISDK\V3\Api\LakalaApi($config,EncryptMode::BOTH);復制
問題3:若同時對接加密或者不加密接口,如何初始化V2LakalaApi、LakalaApi?
答案3:
V2接口:
分別初始化不加解密策略的api對象
$api1 = new \Lakala\OpenAPISDK\V2\Api\V2LakalaApi($config,V2EncryptMode::NONE); $api2= new \Lakala\OpenAPISDK\V2\Api\V2LakalaApi($config,V2EncryptMode::REQUEST); $api3= new \Lakala\OpenAPISDK\V2\Api\V2LakalaApi($config,V2EncryptMode::RESPONSE); $api4= new \Lakala\OpenAPISDK\V2\Api\V2LakalaApi($config,V2EncryptMode::BOTH);復制
V3接口:
$api1 = new \Lakala\OpenAPISDK\V3\Api\LakalaApi($config,EncryptMode::NONE); $api2= new \Lakala\OpenAPISDK\V3\Api\LakalaApi($config,EncryptMode::REQUEST); $api3= new \Lakala\OpenAPISDK\V3\Api\LakalaApi($config,EncryptMode::RESPONSE); $api4= new \Lakala\OpenAPISDK\V3\Api\LakalaApi($config,EncryptMode::BOTH);復制
問題4:若同時對接加密或者不加密接口,如何初始化V2LakalaApi、LakalaApi?
答案4:
V2接口:
分別初始化不加解密策略的api對象
$api1 = new \Lakala\OpenAPISDK\V2\Api\V2LakalaApi($config,V2EncryptMode::NONE); $api2= new \Lakala\OpenAPISDK\V2\Api\V2LakalaApi($config,V2EncryptMode::REQUEST); $api3= new \Lakala\OpenAPISDK\V2\Api\V2LakalaApi($config,V2EncryptMode::RESPONSE); $api4= new \Lakala\OpenAPISDK\V2\Api\V2LakalaApi($config,V2EncryptMode::BOTH);復制
V3接口:
$api1 = new \Lakala\OpenAPISDK\V3\Api\LakalaApi($config,EncryptMode::NONE); $api2= new \Lakala\OpenAPISDK\V3\Api\LakalaApi($config,EncryptMode::REQUEST); $api3= new \Lakala\OpenAPISDK\V3\Api\LakalaApi($config,EncryptMode::RESPONSE); $api4= new \Lakala\OpenAPISDK\V3\Api\LakalaApi($config,EncryptMode::BOTH);復制
問題5:若需要改變appid等配置信息,如何操作?
答案5:
1:通過修改默認配置文件;
2:可以修改V2Configuration、Configuration的值。
問題6:若需要改變appid等配置信息,如何操作?
答案6:
1:通過修改默認配置文件;
2:可以修改V2Configuration、Configuration的值。
問題7:若需要改變appid等配置信息,如何操作?
答案7:
1:通過修改默認配置文件;
2:可以修改V2Configuration、Configuration的值。
問題8:當請求報文字段需要擴充的時候,如何操作?
答案8:
1: 若字段是預封裝的交易類接口,可以等新的SDK版本發(fā)布。
2:客戶開發(fā)者可以通過擴展預封裝的Request的字段,如V3接口
$request->setReqData([
'merchant_no' => '822290070111135',
'term_no' => '29034705',
'out_trade_no' => date('YmdHis', time()),
'trade_no' => '',
]);復制或繼續(xù)原有預封裝的請求類,如:
class QueryTradequeryRequestExt extends \Lakala\OpenAPISDK\V3\Model\RelationRefundRequest implements \JsonSerializable
{
protected $ext1;
public function setExt1($ext1)
{
$this->ext1 = $ext1;
return $this;
}3:客戶可以使用直接原始JSON,并修改JSON的內容,并用LakalaApi.apiWithBody、V2LakalaApi.apiWithBody進行請求調用。
問題9:當返回報文字段需要擴充的時候,如何操作?
答案9:
1: 若字段是預封裝的交易類接口,可以等新的SDK版本發(fā)布;
2: 直接使用返回對象的原始文本(V2ModelResponse.getOriginalText()、ModelResponse.getOriginalText()),并對其進行json反序列化。
問題10:返回對象是否支持使用自己的Response?
答案10:
V2接口V2LakalaApi:方法.tradeApi、apiWithBody的支持輸入$returnType;
V3接口LakalaApi:方法LakalaApi.tradeApi、LakalaApi.apiWithBody的支持輸入$returnType
可傳入自己的returnType。
問題11:若需要反饋問題或者提供建議,是否有渠道。
答案11:
1: 聯系已對接的售前同事。



