CSharp-SDK
CSharp-SDK
概述
差旅CSharp-SDK是差旅平台面向IT系统C#开发者提供的服务端开发工具集,其中包含签名、验签、加密以及解密相关工具。 通过CSharp-SDK,开发者可以高效的完成差旅系统对接,无需关心具体的接口鉴权细节,提升开发者的对接效率。
本sdk定位 .NET Standard 2.0 版本。
使用说明
步骤一:添加引用
下载CSharp-SDK文件,并将文件添加至项目中,导入方法:
1、VS中打开“解决方案资源管理器”
2、右键引用->添加引用
3、浏览找到放dll文件的位置,选中dll文件,点击确认
步骤二:准备
公钥私钥文件(公钥提供给差旅平台)
生成方法: SDK支持导入openssl生成的密钥文件。 私钥:(企业可自行修改口令值123456为其它值)
openssl genrsa -out rsaprivatekey_pass.pem -passout pass:123456 -aes256 4096
公钥:
openssl req -new -x509 -key rsaprivatekey_pass.pem -out rsapublic_cert.cert -days 1095 -passin pass:123456
密钥对加载方法: sdk中提供了密钥的加载工具。
RsaPrivateCrtKeyParameters privateKeyRsaParams = CipherUtil.LoadPrivateKey(File.OpenText("D:/WorkSpace/sdk/private.pem"),"123456");
RsaKeyParameters publicKeyRsaParams = CipherUtil.LoadPublicKey(File.OpenText("D:/WorkSpace/sdk/public.cert"));
企业密码(差旅平台分配)
如:ADADADADADADADADADADADADADADADAD
对接账号Id(差旅平台分配)
如:OpenApiCompanyNum
步骤三:使用示例
初始化api client
ApiClient apiClient = new ApiClient(
"https://openapi-uat.hwht.com",
"OpenApiCompanyNum",
"ADADADADADADADADADADADADADADADAD",
privateKeyRsaParams,
publicKeyRsaParams);
接口调用
using Org.BouncyCastle.Crypto.Parameters;
using System;
using System.IO;
using System.Security.Cryptography;
using System.Threading.Tasks;
using Trip.Sdk;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
string body_txt = "{\"CorpCode\":\"OpenApiCompanyNum\",\"EnterpriseTrID\":\"TA20230911110053772\",\"MsgID\":\"OpenApiCompanyNum120230911110053414706\",\"Version\":\"3.0\"}";
RsaPrivateCrtKeyParameters privateKeyRsaParams = CipherUtil.LoadPrivateKey(File.OpenText("D:/WorkSpace/sdk/private.pem"),"123456");
RsaKeyParameters publicKeyRsaParams = CipherUtil.LoadPublicKey(File.OpenText("D:/WorkSpace/sdk/public.cert"));
ApiClient apiClient = new ApiClient("https://openapi-uat.hwht.com",
"OpenApiCompanyNum",
"ADADADADADADADADADADADADADADADAD",
privateKeyRsaParams,
publicKeyRsaParams);
var t = Task.Run(() => apiClient.PostURI("/v3/syntr", body_txt));
t.Wait();
Console.WriteLine(t.Result);
}
}
}
获取登录链接:
string requestBody = "{\"CorpCode\":\"OpenApiCompanyNum\",\"LoginName\":\"ZHANGSAN_0001\",\"Version\":\"3.0\"}";
string queryString = CipherUtil.GetQueryString("OpenApiCompanyNum", "/v3/urllogin", requestBody, privateKeyRsaParams, "ADADADADADADADADADADADADADADADAD");
string baseUrl = "https://openapi-uat.hwht.com/v3/urllogin?";
Console.WriteLine(baseUrl + queryString);
附SDK中提供的工具
SDK中提供了加密、解密、签名、验签相关工具,可自行组合使用
namespace Trip.Sdk
{
public static class CipherUtil
{
public static string Decrypt(string cipherText, string secret);
public static string Encrypt(string data, string secret);
public static string GetQueryString(string authId, string uri, string body, RsaPrivateCrtKeyParameters privateKeyRsaParams, string secret);
public static RsaPrivateCrtKeyParameters LoadPrivateKey(TextReader privateKey, string password);
public static RsaKeyParameters LoadPublicKey(TextReader publicKey);
public static string Sign(string content, RsaPrivateCrtKeyParameters privateKeyRsaParams);
public static byte[] ToBytesFromHexString(string hexString);
public static string ToHexStrFromByte(byte[] byteDatas);
public static bool Verify(string content, string signature, RSAParameters publicKeyRsaParams);
}
}