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);
    }
}