歡迎使用拉卡拉PHP SDK

好拓客 13小時前 17:50:30 5

為了幫助開發(fā)者快速接入拉卡拉開放平臺,拉卡拉提供了PHP SDK, 為各個合作伙伴的技術人員封裝了請求的簽名和響應的驗簽,簡化了系統(tǒng)的開發(fā)工作。

image.png

獲取PHP SDK

開發(fā)語言資源下載環(huán)境要求
PHP 版資源PHP SDK
^7.0 || ^8.0

Lakala PHP SDK說明

流程說明

Lakala SDK與拉卡拉開放平臺交互處理流程如下:

image.png

針對以上處理流程

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中。


857ffa90032c0c1473d3ac72ea0726a6_png.png

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: 聯系已對接的售前同事。


The End