歡迎使用拉卡拉開放平臺(tái).NET SDK

lakala 11小時(shí)前 17:58:36 5

為了幫助開發(fā)者快速接入拉卡拉開放平臺(tái),拉卡拉提供了DotNet SDK, 為各個(gè)合作伙伴的技術(shù)人員封裝了請(qǐng)求的簽名和響應(yīng)的驗(yàn)簽,簡(jiǎn)化了系統(tǒng)的開發(fā)工作。

獲取 SDK

開發(fā)語(yǔ)言

資源下載

目標(biāo)框架

dotNet

.NET SDK

net6.0

流程說(shuō)明

Lakala  DotSDK與拉卡拉開放平臺(tái)交互處理流程如下:

image.png

針對(duì)以上處理流程,

1. 左側(cè)為客戶主動(dòng)發(fā)起的Request-Response的流程:拉卡拉DotNet SDK封裝請(qǐng)求加密(若需要)、加簽,返回解簽、解密。

2. 右側(cè)為拉卡拉開放平臺(tái)發(fā)起的通知的流程:拉卡拉DotNet SDK也封裝了解析處理通知報(bào)文的類以及標(biāo)準(zhǔn)返回內(nèi)容。

重點(diǎn)類以及方法說(shuō)明

類名

說(shuō)明

LakalaOpenConfig

 

全局配置類,其關(guān)鍵信息

AppId//客戶在拉卡拉開放平臺(tái)側(cè)的開立的AppId

SerialNo//客戶的私鑰的證書序列號(hào)

Sm4Key//客戶在拉卡拉開放平臺(tái)側(cè)生成的國(guó)密4key

PriPem//客戶的私鑰證書String,與PriPemPath二選一

PriPemPath//客戶的私鑰的文件地址,與PriPem二選一

PubCert//拉卡拉的公鑰證書String,與PubCertPath二選一

PubCertPath//拉卡拉的公鑰證書文件地址,與PubCert二選一

其中

1.客戶的私鑰的作用請(qǐng)求報(bào)文簽名

2.拉卡拉的公鑰證書返回報(bào)文驗(yàn)簽

RequestConfig

適用于單個(gè)請(qǐng)求的

ReqEncrpt:是否要對(duì)請(qǐng)求進(jìn)行加密(SM4算法,密鑰為LakalaOpenConfigSm4Key

RespDeccrpt:是否要對(duì)返回進(jìn)行解密(SM4算法,密鑰為LakalaOpenConfigSm4Key

LakalaOpenAPIPoster

 

調(diào)用拉卡拉開放平臺(tái)的入口類,其中只有一個(gè)方PostRawAuthedAsync

 

該方法的請(qǐng)求入?yún)⒎謩e為:

body:請(qǐng)求json格式

url:具體的拉卡拉開放平臺(tái)的接口。

requestConfig:?jiǎn)蝹€(gè)請(qǐng)求的Config,參見(jiàn)RequestConfig說(shuō)明

 

返回參數(shù)

Task<ILakalaResponse> 其中ILakalaResponse方法為

1. GRawText,返回的原始文本,正常情況使用該方法就可以獲得返回json內(nèi)容。

2. GetOriginHttpResonse,返回的原始HttpReponse。

LakalaNotifyParser

 

通知回調(diào)的驗(yàn)證類,客戶處理流程

1. 客戶接到拉卡拉通知回調(diào)之后使用該類對(duì)內(nèi)容進(jìn)行驗(yàn)證簽名;

2. 簽名驗(yàn)證通過(guò)之后,在進(jìn)行業(yè)務(wù)處理;

3. 處理完成之后使用LakalaNotifyResponse封裝數(shù)據(jù)返回給拉卡拉的平臺(tái)

示例代碼

 public async void TestLakalaOpenAPIPosterAsync()
        {
            ServiceCollection services = new ServiceCollection();
            services.AddHttpClient();
            var loggerFactory = LoggerFactory.Create(builder =>
            {   
                builder.AddFilter("Microsoft", LogLevel.Warning)
                    .AddFilter("System", LogLevel.Warning)
                    .AddFilter("SampleApp.Program", LogLevel.Debug);
            });
           IHttpClientFactory factory = services
            .BuildServiceProvider()
            .GetRequiredService<IHttpClientFactory>();
            LakalaOpenAPIPoster lakalaOpenAPIPoster=new LakalaOpenAPIPoster(loggerFactory,factory,config);
            //這里的config就是LakalaOpenConfig,可按照測(cè)試環(huán)境要求配置。
            string body=@"{""out_org_code"":""OP00000003"",""req_time"":""20250227222500"",""version"":""3.0"",""req_data"":{""merchant_no"":""822290059430BBW"",""term_no"":""D9257968"",""out_trade_no"":""25022713010000000000000000415033""}}";
            string url="https://test.wsmsd.cn/sit"+"/api/v3/labs/query/tradequery";
            ILakalaResponse response= await lakalaOpenAPIPoster.PostRawAuthedAsync(body,url,new RequestConfig());
             Assert.True(response.GetOriginHttpResonse().StatusCode==HttpStatusCode.OK);
           Console.WriteLine("------test---");
loggerFactory.CreateLogger("Test").LogInformation(response.GetRawText());
            Console.WriteLine(response.GetRawText());
         }復(fù)制

FAQ&Tips(常見(jiàn)問(wèn)題以及建議)

Q1:如何支持多個(gè)AppId

A1:可以創(chuàng)建多個(gè)LakalaOpenConfig,然后創(chuàng)建多個(gè)LakalaOpenAPIPoster實(shí)例

Q2:若需要反饋問(wèn)題或者提供建議,是否有渠道。

A2

2. 與具體的銷售同學(xué)聯(lián)系。


The End