mirror of
https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
synced 2025-12-29 09:54:44 +08:00
feat(tenpayv3): 新增微信全数电发票相关接口
This commit is contained in:
@@ -9,7 +9,11 @@
|
||||
"bank_name": "测试银行",
|
||||
"bank_account": "62001234567890",
|
||||
"phone": "18507550000",
|
||||
"email": "123110@qq.com"
|
||||
"email": "123110@qq.com",
|
||||
"amount": 1000,
|
||||
"out_trade_no": "order_20200701_123456",
|
||||
"fapiao_bill_type": "COMM_FAPIAO",
|
||||
"user_apply_message": "用户留言"
|
||||
},
|
||||
"fapiao_card_information": [
|
||||
{
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"sub_mchid": "example_sub_mchid",
|
||||
"fapiao_apply_id": "example_fapiao_apply_id",
|
||||
"buyer_information": {
|
||||
"type": "INDIVIDUAL",
|
||||
"name": "深圳市南山区测试企业",
|
||||
"taxpayer_id": "202003261233701778",
|
||||
"address": "深圳市南山区深南大道10000号",
|
||||
"telephone": "075512345678",
|
||||
"bank_name": "测试银行",
|
||||
"bank_account": "62001234567890",
|
||||
"phone": "mI7HGEJ4Q2B91IGjHrl7FNN9QuFPDfzeXoaJM4B8ZghZPzXK+vNotEZu/Gthm87Szv0MK2AoC0/3ZMDgltMtdoY6O0qZ4F1iXiwCuqkkBe+9M4ggvdzpPGM+fyed2QU1seUGbii5RVVVB9s+zLEQ8nv74vsgl77MZx14nd5obtCcfAvPfDJob3oG7FqlThmYKJqjiOwBvvQse7p9R8onj/POzSrbM8re8ZYGp4LcehXopTLdk2ZVWRv8bnJgKZWArAcqMdahq4jY2UVYeY4vpMmq4xuRTYk6xNXvowBBKK2SX8SqM+jm1USyoBIazLu4oaNFNdBO3fip1a1rFW0vRw==",
|
||||
"email": "NzJy3r0Z2u2Vs5l+WSH0A3CZ1oGlCZ66aa2wUlMXNmACbd4wU8LqqYCuTG4cYWxrVUSmviV59/Uy9vLdIwuHZVrMalYAZGtb8inWGhDj3wUqQnPkmBKBVGIWG5Y6XJmMvpXW6rIKsdzxs8NwWj30cRNfjanLxiWc0aIgl8Knwo0JcxlcYLo38T9ntsrRkQZMQEWHaMYnzjp7ysLbp6yW83OZb/NwEufERBdPnIbDbVE7DUd5MGhvO+tlr2YC1b4VCsrDmjryuTD5nvYYCGHyfXW2CM23hZdBm9tPc+mU18Z9d4XkasnfsecGWd2ISkpPmnk3DtapnD64Nw8JyLtkgw==",
|
||||
"amount": 1000,
|
||||
"out_trade_no": "order_20200701_123456",
|
||||
"fapiao_bill_type": "COMM_FAPIAO",
|
||||
"user_apply_message": "用户留言"
|
||||
},
|
||||
"fapiao_information": {
|
||||
"fapiao_id": "20200701123456",
|
||||
"total_amount": 382895,
|
||||
"items": [
|
||||
{
|
||||
"tax_code": "3010101020203000000",
|
||||
"goods_name": "*xxx*服务",
|
||||
"specification": "米",
|
||||
"unit": "米",
|
||||
"quantity": 100000000,
|
||||
"total_amount": 429900,
|
||||
"tax_rate": 1300,
|
||||
"discount": false,
|
||||
"preferential_policy_code": 1
|
||||
}
|
||||
],
|
||||
"export_business_policy_code": 1,
|
||||
"vat_refund_levy_code": 1,
|
||||
"billing_person_id": "128279891283",
|
||||
"billing_person": "example_billing_person",
|
||||
"fapiao_bill_type": "COMM_FAPIAO",
|
||||
"transaction_information": [
|
||||
{
|
||||
"pay_channel": "WECHAT_PAY",
|
||||
"transaction_id": "4200000008202508080512076713",
|
||||
"out_trade_no": "order_20200701_123456",
|
||||
"amount": 382895
|
||||
}
|
||||
],
|
||||
"remark": "备注"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"sub_mchid": "1900000109",
|
||||
"fapiao_apply_id": "4200000444201910177461284488",
|
||||
"buyer_information": {
|
||||
"type": "INDIVIDUAL",
|
||||
"name": "深圳市南山区测试企业",
|
||||
"taxpayer_id": "202003261233701778",
|
||||
"address": "深圳市南山区深南大道10000号",
|
||||
"telephone": "075512345678",
|
||||
"bank_name": "测试银行",
|
||||
"bank_account": "62001234567890",
|
||||
"phone": "mI7HGEJ4Q2B91IGjHrl7FNN9QuFPDfzeXoaJM4B8ZghZPzXK+vNotEZu/Gthm87Szv0MK2AoC0/3ZMDgltMtdoY6O0qZ4F1iXiwCuqkkBe+9M4ggvdzpPGM+fyed2QU1seUGbii5RVVVB9s+zLEQ8nv74vsgl77MZx14nd5obtCcfAvPfDJob3oG7FqlThmYKJqjiOwBvvQse7p9R8onj/POzSrbM8re8ZYGp4LcehXopTLdk2ZVWRv8bnJgKZWArAcqMdahq4jY2UVYeY4vpMmq4xuRTYk6xNXvowBBKK2SX8SqM+jm1USyoBIazLu4oaNFNdBO3fip1a1rFW0vRw==",
|
||||
"email": "NzJy3r0Z2u2Vs5l+WSH0A3CZ1oGlCZ66aa2wUlMXNmACbd4wU8LqqYCuTG4cYWxrVUSmviV59/Uy9vLdIwuHZVrMalYAZGtb8inWGhDj3wUqQnPkmBKBVGIWG5Y6XJmMvpXW6rIKsdzxs8NwWj30cRNfjanLxiWc0aIgl8Knwo0JcxlcYLo38T9ntsrRkQZMQEWHaMYnzjp7ysLbp6yW83OZb/NwEufERBdPnIbDbVE7DUd5MGhvO+tlr2YC1b4VCsrDmjryuTD5nvYYCGHyfXW2CM23hZdBm9tPc+mU18Z9d4XkasnfsecGWd2ISkpPmnk3DtapnD64Nw8JyLtkgw==",
|
||||
"amount": 1000,
|
||||
"out_trade_no": "order_20200701_123456",
|
||||
"fapiao_bill_type": "COMM_FAPIAO",
|
||||
"user_apply_message": "用户留言"
|
||||
},
|
||||
"fapiao_information": {
|
||||
"fapiao_id": "20200701123456",
|
||||
"total_amount": 382895,
|
||||
"items": [
|
||||
{
|
||||
"tax_code": "3010101020203000000",
|
||||
"goods_name": "*经营租赁*车辆停放服务",
|
||||
"specification": "米",
|
||||
"unit": "METER",
|
||||
"quantity": 100000000,
|
||||
"total_amount": 429900,
|
||||
"tax_rate": 1300,
|
||||
"discount": false,
|
||||
"preferential_policy_code": 1,
|
||||
"real_estate_leasing_information": {
|
||||
"province": "重庆市",
|
||||
"city": "涪陵区",
|
||||
"address": "xx街道xx小区",
|
||||
"lease_period_start": "2025-01-01T10:00:00+08:00",
|
||||
"lease_period_end": "2025-07-01T12:00:00+08:00",
|
||||
"cross_city_flag": true,
|
||||
"certificate_no": "OVgc/slzCvzSebaz46sUA4tJmm5GbNC0Tkp0oKmuHev9aTDzzcNIy5fKuywKWa0aYIWPyitr3wCYVPUw5Bnw1VUr6jn9eCeQPQye2t+zNuuCM0vmr1NNhdI3a2FNIx5HxkBrdM0XuiLt2/46UaWuzcUbZ52CCtZGgRzxeuj6oF/RKVG+dzT2HOm3kbYi1cUM10hARPKN+kV84I5WnFglX1cPM7s+OHkWvj38xEAfJBJfj3lf0UTRo",
|
||||
"plate_no": [
|
||||
"渝A12345"
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"export_business_policy_code": 1,
|
||||
"vat_refund_levy_code": 1,
|
||||
"billing_person_id": "187776276864872",
|
||||
"billing_person": "张伟",
|
||||
"fapiao_bill_type": "COMM_FAPIAO",
|
||||
"transaction_information": [
|
||||
{
|
||||
"pay_channel": "WECHAT_PAY",
|
||||
"transaction_id": "4200000008202508080512076713",
|
||||
"out_trade_no": "order_20200701_123456",
|
||||
"amount": 382895
|
||||
}
|
||||
],
|
||||
"remark": "备注"
|
||||
}
|
||||
}
|
||||
@@ -45,7 +45,11 @@
|
||||
"bank_name": "测试银行",
|
||||
"bank_account": "62001234567890",
|
||||
"phone": "pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPttdY+aQ6zB",
|
||||
"email": "pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPttdY+aQ6za"
|
||||
"email": "pVd1HJ6zyvPedzGaV+X3qtmrq9bb9tPttdY+aQ6za",
|
||||
"amount": 1000,
|
||||
"out_trade_no": "order_20200701_123456",
|
||||
"fapiao_bill_type": "COMM_FAPIAO",
|
||||
"user_apply_message": "用户留言"
|
||||
},
|
||||
"extra_information": {
|
||||
"payee": "张三",
|
||||
@@ -68,7 +72,9 @@
|
||||
"discount": false
|
||||
}
|
||||
],
|
||||
"remark": "备注"
|
||||
"remark": "备注",
|
||||
"fapiao_error_code": "BIZ_ERROR",
|
||||
"fapiao_error_message": "开票失败。授信额度不足,请联系主管税务机关或者登录电子税务局提额/申报。"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"invite_url": "https://wxacurl.cn?xxx=",
|
||||
"miniprogram_appid": "wxb1170446a4c0a5a2",
|
||||
"miniprogram_path": "pages/xxxPage"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"total_count": 50,
|
||||
"offset": 10,
|
||||
"limit": 1,
|
||||
"mch_invite_result_list": [
|
||||
{
|
||||
"sub_mchid": "1999192837",
|
||||
"mch_invite_status": "MCH_INVITE_SUCC",
|
||||
"ep_name": "示例(深圳)有限公司",
|
||||
"tax_id": "9144050071126766XG",
|
||||
"invite_code": "code_20200101_123",
|
||||
"operate_time": "2020-07-01T00:00:00",
|
||||
"invite_failed_code": "UNKNOWN_TAX_INFO",
|
||||
"invite_failed_reason": "示例失败原因"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"sub_mchid": "1900000109",
|
||||
"third_mode": {
|
||||
"status": "ENABLED"
|
||||
},
|
||||
"digital_tax_mode": {
|
||||
"status": "ENABLED",
|
||||
"billing_person_info": [
|
||||
{
|
||||
"id": "187776276864872",
|
||||
"name": "张伟"
|
||||
}
|
||||
],
|
||||
"access_time": "2020-07-01T12:00:00+08:00",
|
||||
"expired_time": "2020-07-02T12:00:00+08:00",
|
||||
"access_fail_reason": "失败原因",
|
||||
"ability_info": [
|
||||
{
|
||||
"type": "BASE_ABILITY",
|
||||
"status": "AUTHORIZED",
|
||||
"authorize_fail_reason": "失败原因"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"callback_url": "https://pay.weixin.qq.com/callback",
|
||||
"sub_mch_code": "1900000109",
|
||||
"show_fapiao_cell": false
|
||||
"show_fapiao_cell": false,
|
||||
"support_vat_fapiao": false
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
{
|
||||
"callback_url": "https://pay.weixin.qq.com/callback"
|
||||
"callback_url": "https://pay.weixin.qq.com/callback",
|
||||
"show_fapiao_cell": false,
|
||||
"support_vat_fapiao": false
|
||||
}
|
||||
|
||||
@@ -7,5 +7,9 @@
|
||||
"bank_name": "测试银行",
|
||||
"bank_account": "62001234567890",
|
||||
"phone": "18507550000",
|
||||
"email": "123110@qq.com"
|
||||
"email": "123110@qq.com",
|
||||
"amount": 1000,
|
||||
"out_trade_no": "order_20200701_123456",
|
||||
"fapiao_bill_type": "COMM_FAPIAO",
|
||||
"user_apply_message": "用户留言"
|
||||
}
|
||||
|
||||
@@ -1693,6 +1693,59 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV3.UnitTests
|
||||
}
|
||||
}
|
||||
|
||||
[Fact(DisplayName = "测试用例:加密请求中的敏感数据([POST] /new-tax-control-fapiao/fapiaomerchant/getspinviteurl)")]
|
||||
public async Task TestEncryptRequestSensitiveProperty_GetNewTaxControlFapiaoMerchantServicePartnerInviteUrlRequest()
|
||||
{
|
||||
static Models.GetNewTaxControlFapiaoMerchantServicePartnerInviteUrlRequest GenerateMockRequestModel()
|
||||
{
|
||||
return new Models.GetNewTaxControlFapiaoMerchantServicePartnerInviteUrlRequest()
|
||||
{
|
||||
OperateUser = MOCK_PLAIN_STR
|
||||
};
|
||||
}
|
||||
|
||||
static void AssertMockRequestModel(Models.GetNewTaxControlFapiaoMerchantServicePartnerInviteUrlRequest request, Func<string, string> decryptor)
|
||||
{
|
||||
Assert.NotEqual(MOCK_PLAIN_STR, request.OperateUser!);
|
||||
Assert.Equal(MOCK_PLAIN_STR, decryptor.Invoke(request.OperateUser!));
|
||||
Assert.Equal(MOCK_CERT_SN, request.WechatpaySerialNumber!, ignoreCase: true);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantRSACertificatePrivateKey))
|
||||
{
|
||||
using (var client = CreateMockClientUseRSA(autoEncrypt: false))
|
||||
{
|
||||
var request = GenerateMockRequestModel();
|
||||
client.EncryptRequestSensitiveProperty(request);
|
||||
AssertMockRequestModel(request, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, (EncodedString)cipher)!);
|
||||
}
|
||||
|
||||
using (var client = CreateMockClientUseRSA(autoEncrypt: true))
|
||||
{
|
||||
var request = GenerateMockRequestModel();
|
||||
await client.ExecuteGetNewTaxControlFapiaoMerchantServicePartnerInviteUrlAsync(request);
|
||||
AssertMockRequestModel(request, (cipher) => Utilities.RSAUtility.DecryptWithECB(RSA_PEM_PRIVATE_KEY, (EncodedString)cipher)!);
|
||||
}
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(TestConfigs.WechatMerchantSM2CertificatePrivateKey))
|
||||
{
|
||||
using (var client = CreateMockClientUseSM2(autoEncrypt: false))
|
||||
{
|
||||
var request = GenerateMockRequestModel();
|
||||
client.EncryptRequestSensitiveProperty(request);
|
||||
AssertMockRequestModel(request, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, (EncodedString)cipher)!);
|
||||
}
|
||||
|
||||
using (var client = CreateMockClientUseSM2(autoEncrypt: true))
|
||||
{
|
||||
var request = GenerateMockRequestModel();
|
||||
await client.ExecuteGetNewTaxControlFapiaoMerchantServicePartnerInviteUrlAsync(request);
|
||||
AssertMockRequestModel(request, (cipher) => Utilities.SM2Utility.Decrypt(SM2_PEM_PRIVATE_KEY, (EncodedString)cipher)!);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Fact(DisplayName = "测试用例:加密请求中的敏感数据([POST] /papay/insurance-sign/contracts/pre-entrust-sign/h5)")]
|
||||
public async Task TestEncryptRequestSensitiveProperty_PresignPAPayInsuranceSignContractEntrustH5Request()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user