mirror of
https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
synced 2025-09-18 17:48:12 +08:00
feat(tenpayv3): 新增电子小票相关接口
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"custom_entrance_type": "MERCHANT_ACTIVITY",
|
||||
"subtitle": "双十一8折活动",
|
||||
"goods_thumbnail_url": "https://qpic.cn/xxx",
|
||||
"start_time": "2015-05-20T13:29:35+08:00",
|
||||
"end_time": "2015-05-20T13:29:35+08:00",
|
||||
"custom_entrance_state": "ONLINE",
|
||||
"brand_id": "1014",
|
||||
"out_request_no": "6122352020010133287985742",
|
||||
"jump_link": {
|
||||
"mini_programs_appid": "wxea9c30a90fs8d3fe",
|
||||
"mini_programs_path": "/pages/bonus/bonus"
|
||||
}
|
||||
}
|
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"custom_entrance_type": "MERCHANT_ACTIVITY",
|
||||
"subtitle": "双十一8折活动",
|
||||
"goods_thumbnail_url": "https://qpic.cn/xxx",
|
||||
"custom_entrance_state": "ONLINE",
|
||||
"start_time": "2015-05-20T13:29:35+08:00",
|
||||
"end_time": "2019-12-31T13:29:35.120+08:00",
|
||||
"brand_id": "1014",
|
||||
"create_time": "2015-05-20T13:29:35+08:00",
|
||||
"modify_time": "2015-05-20T13:29:35+08:00",
|
||||
"out_request_no": "100002322019090134234sfdf",
|
||||
"jump_link": {
|
||||
"mini_programs_appid": "wxea9c30a90fs8d3fe",
|
||||
"mini_programs_path": "/pages/bonus/bonus"
|
||||
}
|
||||
}
|
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"custom_entrance_type": "MERCHANT_ACTIVITY",
|
||||
"subtitle": "双十一8折活动",
|
||||
"goods_thumbnail_url": "https://qpic.cn/xxx",
|
||||
"custom_entrance_state": "ONLINE",
|
||||
"start_time": "2015-05-20T13:29:35+08:00",
|
||||
"end_time": "2019-12-31T13:29:35.120+08:00",
|
||||
"brand_id": "1014",
|
||||
"create_time": "2015-05-20T13:29:35+08:00",
|
||||
"modify_time": "2015-05-20T13:29:35+08:00",
|
||||
"out_request_no": "100002322019090134234sfdf",
|
||||
"jump_link": {
|
||||
"mini_programs_appid": "wxea9c30a90fs8d3fe",
|
||||
"mini_programs_path": "/pages/bonus/bonus"
|
||||
}
|
||||
}
|
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"custom_entrance_type": "MERCHANT_ACTIVITY",
|
||||
"subtitle": "双十一8折活动",
|
||||
"goods_thumbnail_url": "https://qpic.cn/xxx",
|
||||
"custom_entrance_state": "ONLINE",
|
||||
"start_time": "2019-12-31T13:29:35.120+08:00",
|
||||
"end_time": "2019-12-31T13:29:35.120+08:00",
|
||||
"out_request_no": "100002322019090134234sfdf",
|
||||
"jump_link": {
|
||||
"mini_programs_appid": "wxea9c30a90fs8d3fe",
|
||||
"mini_programs_path": "/pages/bonus/bonus"
|
||||
}
|
||||
}
|
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"custom_entrance_type": "MERCHANT_ACTIVITY",
|
||||
"subtitle": "双十一8折活动",
|
||||
"goods_thumbnail_url": "https://qpic.cn/xxx",
|
||||
"custom_entrance_state": "ONLINE",
|
||||
"start_time": "2015-05-20T13:29:35+08:00",
|
||||
"end_time": "2019-12-31T13:29:35.120+08:00",
|
||||
"brand_id": "1014",
|
||||
"create_time": "2015-05-20T13:29:35+08:00",
|
||||
"modify_time": "2015-05-20T13:29:35+08:00",
|
||||
"out_request_no": "100002322019090134234sfdf",
|
||||
"jump_link": {
|
||||
"mini_programs_appid": "wxea9c30a90fs8d3fe",
|
||||
"mini_programs_path": "/pages/bonus/bonus"
|
||||
}
|
||||
}
|
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"transaction_id": "4200000008202209139188072801",
|
||||
"transaction_mchid": "1230000109",
|
||||
"transaction_sub_mchid": "1230000109",
|
||||
"openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o",
|
||||
"merchant_upload_time": "2021-05-20T13:29:35.120+08:00",
|
||||
"jump_info": {
|
||||
"merchant_appid": "example_merchant_appid",
|
||||
"merchant_path": "example_merchant_path"
|
||||
}
|
||||
}
|
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"merchant_jump_info": {
|
||||
"transaction_id": "4200000008202209139188072801",
|
||||
"transaction_mchid": "1230000109",
|
||||
"transaction_sub_mchid": "1230000109",
|
||||
"openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o",
|
||||
"merchant_upload_time": "2021-05-20T13:29:35.120+08:00",
|
||||
"jump_info": {
|
||||
"merchant_appid": "example_merchant_appid",
|
||||
"merchant_path": "example_merchant_path"
|
||||
},
|
||||
"create_time": "2015-05-20T13:29:35+08:00",
|
||||
"modify_time": "2015-05-20T13:29:35+08:00"
|
||||
}
|
||||
}
|
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"merchant_contact_information": {
|
||||
"consultation_phone_number": "pVd1HJ6v/69bDnuC4EL5Kz4jBHLiCa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg=="
|
||||
},
|
||||
"openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o",
|
||||
"sha256": "2969f98ef4763da62670d3aee5d456b56a8f3447c0178da21445206aa400a464",
|
||||
"transaction_id": "1217752501201407033233368018",
|
||||
"transaction_mchid": "1230000109",
|
||||
"transaction_sub_mchid": "1230000109",
|
||||
"upload_time": "2021-05-20T13:29:35.120+08:00"
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"receipt": {
|
||||
"create_time": "2015-05-20T13:29:35+08:00",
|
||||
"image_type": "PNG",
|
||||
"merchant_contact_information": {
|
||||
"consultation_phone_number": "pVd1HJ6v/69bDnuC4EL5Kz4jBHLiCa8MRtelw/wDa4SzfeespQO/0kjiwfqdfg=="
|
||||
},
|
||||
"modify_time": "2015-05-20T13:29:35+08:00",
|
||||
"openid": "oUpF8uMuAJO_M2pxb1Q9zNjWeS6o",
|
||||
"receipt_id": "121630001",
|
||||
"sha256": "2969f98ef4763da62670d3aee5d456b56a8f3447c0178da21445206aa400a464",
|
||||
"state": "WAIT_REVIEW",
|
||||
"transaction_id": "1217752501201407033233368018",
|
||||
"transaction_mchid": "1230000109",
|
||||
"transaction_sub_mchid": "1230000109",
|
||||
"upload_time": "2021-05-20T13:29:35.120+08:00"
|
||||
}
|
||||
}
|
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"print_order_no": "wx8888888888888888",
|
||||
"template_id": "pt_02583429616371386640209536",
|
||||
"notify_url": "https:\/\/payapp.weixin.qq.com\/callback",
|
||||
"variable_list": [
|
||||
{
|
||||
"key": "",
|
||||
"value": ""
|
||||
}
|
||||
],
|
||||
"table_list": [
|
||||
{
|
||||
"key": "",
|
||||
"row_list": [
|
||||
{
|
||||
"cell_list": [ "string" ]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"print_order_no": "wx8888888888888888",
|
||||
"template_id": "pt_02583429616371386640209536",
|
||||
"notify_url": "https:\/\/payapp.weixin.qq.com\/callback",
|
||||
"print_state": "PRINT_STATE_SUCCESS",
|
||||
"print_state_description": "打印结束",
|
||||
"variable_list": [
|
||||
{
|
||||
"key": "",
|
||||
"value": ""
|
||||
}
|
||||
],
|
||||
"table_list": [
|
||||
{
|
||||
"key": "",
|
||||
"row_list": [
|
||||
{
|
||||
"cell_list": [ "string" ]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@@ -600,6 +600,44 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
AssertMockRequestModel(reqB2, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, cipher));
|
||||
}
|
||||
|
||||
[Fact(DisplayName = "测试用例:加密请求中的敏感数据([POST] /marketing/shopping-receipt/shoppingreceipts)")]
|
||||
public async Task TestEncryptRequestSensitiveProperty_UploadMarketingShoppingReceiptRequest()
|
||||
{
|
||||
static Models.UploadMarketingShoppingReceiptRequest GenerateMockRequestModel()
|
||||
{
|
||||
return new Models.UploadMarketingShoppingReceiptRequest()
|
||||
{
|
||||
MerchantContactInformation = new Models.UploadMarketingShoppingReceiptRequest.Types.MerchantContactInformation()
|
||||
{
|
||||
ConsultationPhoneNumber = MOCK_PLAIN_STR
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
static void AssertMockRequestModel(Models.UploadMarketingShoppingReceiptRequest request, Func<string, string> decryptor)
|
||||
{
|
||||
Assert.NotEqual(MOCK_PLAIN_STR, request.MerchantContactInformation!.ConsultationPhoneNumber!);
|
||||
Assert.Equal(MOCK_PLAIN_STR, decryptor.Invoke(request.MerchantContactInformation!.ConsultationPhoneNumber!));
|
||||
Assert.Equal(MOCK_CERT_SN, request.WechatpayCertificateSerialNumber!, ignoreCase: true);
|
||||
}
|
||||
|
||||
var reqA1 = GenerateMockRequestModel();
|
||||
CreateMockClientUseRSA(autoEncrypt: false).EncryptRequestSensitiveProperty(reqA1);
|
||||
AssertMockRequestModel(reqA1, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, cipher));
|
||||
|
||||
var reqA2 = GenerateMockRequestModel();
|
||||
CreateMockClientUseSM2(autoEncrypt: false).EncryptRequestSensitiveProperty(reqA2);
|
||||
AssertMockRequestModel(reqA2, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, cipher));
|
||||
|
||||
var reqB1 = GenerateMockRequestModel();
|
||||
await CreateMockClientUseRSA(autoEncrypt: true).ExecuteUploadMarketingShoppingReceiptAsync(reqB1);
|
||||
AssertMockRequestModel(reqB1, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, cipher));
|
||||
|
||||
var reqB2 = GenerateMockRequestModel();
|
||||
await CreateMockClientUseSM2(autoEncrypt: true).ExecuteUploadMarketingShoppingReceiptAsync(reqB2);
|
||||
AssertMockRequestModel(reqB2, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, cipher));
|
||||
}
|
||||
|
||||
[Fact(DisplayName = "测试用例:加密请求中的敏感数据([POST] /mch_operate/risk/withdrawl-apply)")]
|
||||
public async Task TestEncryptRequestSensitiveProperty_CreateMerchantOperateRiskWithdrawlApplyRequest()
|
||||
{
|
||||
|
@@ -52,7 +52,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB1 = await CreateMockClientUseRSA(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetBillSubMerchantFundflowBillAsync(new Models.GetBillSubMerchantFundflowBillRequest());
|
||||
@@ -60,7 +60,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB2 = await CreateMockClientUseSM2(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetBillSubMerchantFundflowBillAsync(new Models.GetBillSubMerchantFundflowBillRequest());
|
||||
@@ -178,7 +178,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB1 = await CreateMockClientUseRSA(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetEcommerceApplymentByOutRequestNumberAsync(new Models.GetEcommerceApplymentByOutRequestNumberRequest());
|
||||
@@ -186,7 +186,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB2 = await CreateMockClientUseSM2(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetEcommerceApplymentByOutRequestNumberAsync(new Models.GetEcommerceApplymentByOutRequestNumberRequest());
|
||||
@@ -226,7 +226,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB1 = await CreateMockClientUseRSA(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetEcommerceBillFundflowBillAsync(new Models.GetEcommerceBillFundflowBillRequest());
|
||||
@@ -234,13 +234,61 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB2 = await CreateMockClientUseSM2(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetEcommerceBillFundflowBillAsync(new Models.GetEcommerceBillFundflowBillRequest());
|
||||
AssertMockResponseModel(resB2);
|
||||
}
|
||||
|
||||
[Fact(DisplayName = "测试用例:解密响应中的敏感数据([GET] /marketing/shopping-receipt/shoppingreceipts)")]
|
||||
public async Task TestDecryptResponseSensitiveProperty_UploadMarketingShoppingReceiptResponse()
|
||||
{
|
||||
static Models.UploadMarketingShoppingReceiptResponse GenerateMockResponseModel(Func<string, string> encryptor)
|
||||
{
|
||||
return new Models.UploadMarketingShoppingReceiptResponse()
|
||||
{
|
||||
RawStatus = (int)HttpStatusCode.OK,
|
||||
Receipt = new Models.UploadMarketingShoppingReceiptResponse.Types.Receipt()
|
||||
{
|
||||
MerchantContactInformation = new Models.UploadMarketingShoppingReceiptResponse.Types.Receipt.Types.MerchantContactInformation()
|
||||
{
|
||||
ConsultationPhoneNumber = encryptor.Invoke(MOCK_PLAIN_STR)
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
static void AssertMockResponseModel(Models.UploadMarketingShoppingReceiptResponse response)
|
||||
{
|
||||
Assert.Equal(MOCK_PLAIN_STR, response.Receipt.MerchantContactInformation!.ConsultationPhoneNumber!);
|
||||
}
|
||||
|
||||
var resA1 = GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain));
|
||||
CreateMockClientUseRSA(autoDecrypt: false).DecryptResponseSensitiveProperty(resA1);
|
||||
AssertMockResponseModel(resA1);
|
||||
|
||||
var resA2 = GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain));
|
||||
CreateMockClientUseSM2(autoDecrypt: false).DecryptResponseSensitiveProperty(resA2);
|
||||
AssertMockResponseModel(resA2);
|
||||
|
||||
var resB1 = await CreateMockClientUseRSA(
|
||||
autoDecrypt: true,
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteUploadMarketingShoppingReceiptAsync(new Models.UploadMarketingShoppingReceiptRequest());
|
||||
AssertMockResponseModel(resB1);
|
||||
|
||||
var resB2 = await CreateMockClientUseSM2(
|
||||
autoDecrypt: true,
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteUploadMarketingShoppingReceiptAsync(new Models.UploadMarketingShoppingReceiptRequest());
|
||||
AssertMockResponseModel(resB2);
|
||||
}
|
||||
|
||||
[Fact(DisplayName = "测试用例:解密响应中的敏感数据([GET] /merchants/{sub_mchid})")]
|
||||
public async Task TestDecryptResponseSensitiveProperty_GetHKSubMerchantResponse()
|
||||
{
|
||||
@@ -275,7 +323,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB1 = await CreateMockClientUseRSA(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain, "Pkcs1Padding"))
|
||||
)
|
||||
).ExecuteGetHKSubMerchantAsync(new Models.GetHKSubMerchantRequest());
|
||||
@@ -283,7 +331,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB2 = await CreateMockClientUseSM2(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetHKSubMerchantAsync(new Models.GetHKSubMerchantRequest());
|
||||
@@ -323,7 +371,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB1 = await CreateMockClientUseRSA(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteQueryMerchantServiceComplaintsAsync(new Models.QueryMerchantServiceComplaintsRequest());
|
||||
@@ -331,7 +379,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB2 = await CreateMockClientUseSM2(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteQueryMerchantServiceComplaintsAsync(new Models.QueryMerchantServiceComplaintsRequest());
|
||||
@@ -365,7 +413,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB1 = await CreateMockClientUseRSA(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetMerchantServiceComplaintByComplaintIdAsync(new Models.GetMerchantServiceComplaintByComplaintIdRequest());
|
||||
@@ -373,7 +421,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB2 = await CreateMockClientUseSM2(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetMerchantServiceComplaintByComplaintIdAsync(new Models.GetMerchantServiceComplaintByComplaintIdRequest());
|
||||
@@ -418,7 +466,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB1 = await CreateMockClientUseRSA(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetNewTaxControlFapiaoApplicationByFapiaoApplyIdAsync(new Models.GetNewTaxControlFapiaoApplicationByFapiaoApplyIdRequest());
|
||||
@@ -426,7 +474,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB2 = await CreateMockClientUseSM2(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetNewTaxControlFapiaoApplicationByFapiaoApplyIdAsync(new Models.GetNewTaxControlFapiaoApplicationByFapiaoApplyIdRequest());
|
||||
@@ -462,7 +510,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB1 = await CreateMockClientUseRSA(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetNewTaxControlFapiaoUserTitleAsync(new Models.GetNewTaxControlFapiaoUserTitleRequest());
|
||||
@@ -470,7 +518,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB2 = await CreateMockClientUseSM2(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetNewTaxControlFapiaoUserTitleAsync(new Models.GetNewTaxControlFapiaoUserTitleRequest());
|
||||
@@ -504,7 +552,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB1 = await CreateMockClientUseRSA(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetPartnerTransferBatchDetailByDetailIdAsync(new Models.GetPartnerTransferBatchDetailByDetailIdRequest());
|
||||
@@ -512,7 +560,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB2 = await CreateMockClientUseSM2(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetPartnerTransferBatchDetailByDetailIdAsync(new Models.GetPartnerTransferBatchDetailByDetailIdRequest());
|
||||
@@ -546,7 +594,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB1 = await CreateMockClientUseRSA(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetPartnerTransferBatchDetailByOutDetailNumberAsync(new Models.GetPartnerTransferBatchDetailByOutDetailNumberRequest());
|
||||
@@ -554,7 +602,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB2 = await CreateMockClientUseSM2(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetPartnerTransferBatchDetailByOutDetailNumberAsync(new Models.GetPartnerTransferBatchDetailByOutDetailNumberRequest());
|
||||
@@ -594,7 +642,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB1 = await CreateMockClientUseRSA(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetPayScoreMerchantBillAsync(new Models.GetPayScoreMerchantBillRequest());
|
||||
@@ -602,7 +650,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB2 = await CreateMockClientUseSM2(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetPayScoreMerchantBillAsync(new Models.GetPayScoreMerchantBillRequest());
|
||||
@@ -644,7 +692,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB1 = await CreateMockClientUseRSA(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteQuerySmartGuidesAsync(new Models.QuerySmartGuidesRequest());
|
||||
@@ -652,7 +700,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB2 = await CreateMockClientUseSM2(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteQuerySmartGuidesAsync(new Models.QuerySmartGuidesRequest());
|
||||
@@ -686,7 +734,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB1 = await CreateMockClientUseRSA(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetTransferBatchDetailByOutDetailNumberAsync(new Models.GetTransferBatchDetailByOutDetailNumberRequest());
|
||||
@@ -694,7 +742,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB2 = await CreateMockClientUseSM2(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetTransferBatchDetailByOutDetailNumberAsync(new Models.GetTransferBatchDetailByOutDetailNumberRequest());
|
||||
@@ -728,7 +776,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB1 = await CreateMockClientUseRSA(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.RSAUtility.EncryptWithECBByCertificate(RSA_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetTransferBatchDetailByDetailIdAsync(new Models.GetTransferBatchDetailByDetailIdRequest());
|
||||
@@ -736,7 +784,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
var resB2 = await CreateMockClientUseSM2(
|
||||
autoDecrypt: true,
|
||||
mockResponseContent: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
mockResponse: new FlurlSystemTextJsonSerializer().Serialize(
|
||||
GenerateMockResponseModel((plain) => Utilities.SM2Utility.EncryptByCertificate(SM2_PEM_CERTIFICATE, plain))
|
||||
)
|
||||
).ExecuteGetTransferBatchDetailByDetailIdAsync(new Models.GetTransferBatchDetailByDetailIdRequest());
|
||||
@@ -763,28 +811,28 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
|
||||
public class MockHttpMessageHandler : DelegatingHandler
|
||||
{
|
||||
private readonly string? _mockResponseContent;
|
||||
private readonly string? _mockResponse;
|
||||
|
||||
public MockHttpMessageHandler(HttpMessageHandler innerHandler, string? mockResponseContent)
|
||||
public MockHttpMessageHandler(HttpMessageHandler innerHandler, string? mockResponse)
|
||||
: base(innerHandler)
|
||||
{
|
||||
_mockResponseContent = mockResponseContent;
|
||||
_mockResponse = mockResponse;
|
||||
}
|
||||
|
||||
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
|
||||
{
|
||||
bool hasContent = !string.IsNullOrEmpty(_mockResponseContent);
|
||||
bool hasContent = !string.IsNullOrEmpty(_mockResponse);
|
||||
var resp = new HttpResponseMessage
|
||||
{
|
||||
StatusCode = hasContent ? HttpStatusCode.OK : HttpStatusCode.NoContent,
|
||||
Content = hasContent ? new StringContent(_mockResponseContent!, Encoding.UTF8) : new ByteArrayContent(Array.Empty<byte>()),
|
||||
Content = hasContent ? new StringContent(_mockResponse!, Encoding.UTF8) : new ByteArrayContent(Array.Empty<byte>()),
|
||||
};
|
||||
resp.Headers.TryAddWithoutValidation("Content-Length", hasContent ? Encoding.UTF8.GetBytes(_mockResponseContent!).Length.ToString() : (0).ToString());
|
||||
resp.Headers.TryAddWithoutValidation("Content-Length", hasContent ? Encoding.UTF8.GetBytes(_mockResponse!).Length.ToString() : (0).ToString());
|
||||
return Task.FromResult(resp);
|
||||
}
|
||||
}
|
||||
|
||||
private static WechatTenpayClient CreateMockClientUseRSA(bool autoDecrypt, string? mockResponseContent = null)
|
||||
private static WechatTenpayClient CreateMockClientUseRSA(bool autoDecrypt, string? mockResponse = null)
|
||||
{
|
||||
var client = new WechatTenpayClient(new WechatTenpayClientOptions()
|
||||
{
|
||||
@@ -794,11 +842,11 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
MerchantV3Secret = Guid.NewGuid().ToString("N"),
|
||||
AutoDecryptResponseSensitiveProperty = autoDecrypt
|
||||
});
|
||||
client.Configure(settings => settings.FlurlHttpClientFactory = new MockHttpClientFactory(mockResponseContent));
|
||||
client.Configure(settings => settings.FlurlHttpClientFactory = new MockHttpClientFactory(mockResponse));
|
||||
return client;
|
||||
}
|
||||
|
||||
private static WechatTenpayClient CreateMockClientUseSM2(bool autoDecrypt, string? mockResponseContent = null)
|
||||
private static WechatTenpayClient CreateMockClientUseSM2(bool autoDecrypt, string? mockResponse = null)
|
||||
{
|
||||
var client = new WechatTenpayClient(new WechatTenpayClientOptions()
|
||||
{
|
||||
@@ -809,7 +857,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
SignScheme = Constants.SignSchemes.WECHATPAY2_SM2_WITH_SM3,
|
||||
AutoDecryptResponseSensitiveProperty = autoDecrypt
|
||||
});
|
||||
client.Configure(settings => settings.FlurlHttpClientFactory = new MockHttpClientFactory(mockResponseContent));
|
||||
client.Configure(settings => settings.FlurlHttpClientFactory = new MockHttpClientFactory(mockResponse));
|
||||
return client;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user