AliZiMAService.cs
5.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Google.Protobuf.WellKnownTypes;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using NCC.Common.Configuration;
using NCC.Common.Core.Manager;
using NCC.Common.Extension;
using NCC.Common.Helper;
using NCC.Dependency;
using NCC.DynamicApiController;
using NCC.Extend.Entitys;
using NCC.Extend.Interfaces.AliPay;
using NCC.System.Entitys.Permission;
using NCC.System.Entitys.System;
using Newtonsoft.Json.Linq;
using SqlSugar;
using NCC.DataEncryption;
using NCC.Common.Const;
using Microsoft.AspNetCore.Http;
using Yitter.IdGenerator;
using NCC.Common.Extensions;
using Microsoft.AspNetCore.Components.Forms;
using NPOI.SS.Formula.Functions;
using AlipaySDKNet.OpenAPI.Util.Model;
using AlipaySDKNet.OpenAPI.Util;
using AlipaySDKNet.OpenAPI.Client;
using AlipaySDKNet.OpenAPI.Api;
using AlipaySDKNet.OpenAPI.Model;
namespace NCC.Extend.AliZiMA
{
/// <summary>
/// 芝麻信用服务
/// </summary>
[ApiDescriptionSettings(Tag = "芝麻信用服务", Name = "AliZiMA", Order = 200)]
[Route("api/Extend/[controller]")]
public class AliZiMAService : IAliZiMAService, IDynamicApiController, ITransient
{
private readonly SqlSugarScope _db;
private readonly IUserManager _userManager;
private readonly IHttpContextAccessor _httpContextAccessor;
private static AlipayOptions _AlipayOptions;
/// <summary>
/// 初始化一个<see cref="AliPayService"/>类型的新实例
/// </summary>
public AliZiMAService(ISqlSugarClient db, IUserManager userManager, IHttpContextAccessor httpContextAccessor)
{
_db = (SqlSugarScope)db;
_userManager = userManager;
_httpContextAccessor = httpContextAccessor;
}
[NonAction]
private static AlipayConfig GetAlipayConfig()
{
return new AlipayConfig
{
ServerUrl = "https://openapi.alipay.com",
// AppId = "2021005150691832",
AppId = App.Configuration["PaymentSettings:AlipayConfig:APPLETE_APPID"],
PrivateKey = App.Configuration["PaymentSettings:AlipayConfig:ALIPay_RSA_PRIVATEKEY"],
AlipayPublicKey = App.Configuration["PaymentSettings:AlipayConfig:ALIPay_RSA_ALI_PUBLICKEY"],
};
}
#region 芝麻先享-信用服务下单
/// <summary>
/// 芝麻先享-信用服务下单
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("CreateZhimaOrder")]
public async Task<dynamic> CreateZhimaOrder(AliPayAppFreezeEntity input)
{
// 初始化SDK
AlipayConfigUtil alipayConfigUtil = new AlipayConfigUtil(GetAlipayConfig());
GenericExecuteApi api = new GenericExecuteApi();
api.Client.SetAlipayConfigUtil(alipayConfigUtil);
// 构造请求参数以调用接口
OpenApiGenericRequest request = new OpenApiGenericRequest();
// body参数
Dictionary<string, Object> bizParams = new Dictionary<string, Object>();
// 设置商户外部订单号
bizParams.Add("out_order_no", input.OutOrderNo);
// 设置订单金额
bizParams.Add("order_amount", input.Amount.ToString());
// 设置只有当传递了order_amount时
bizParams.Add("amount_type", "RISK_AMOUNT");
// 设置芝麻信用服务ID
bizParams.Add("zm_service_id", "2025061600000000000104406000");
// 设置订单标题
bizParams.Add("subject", input.OrderTitle);
request.BodyParams = bizParams;
try
{
// 调用支付宝SDK执行接口
string response = api.SdkExecute("zhima.credit.payafteruse.creditbizorder.create", request.BodyParams, null, null);
return response;
}
catch (ApiException e)
{
// 记录异常信息并返回错误信息
Console.WriteLine("调用失败,code:" + e.ErrorCode + ",message:" + e.Message);
return $"调用失败,code:{e.ErrorCode},message:{e.Message}";
}
catch (Exception ex)
{
// 捕获其他未知异常
Console.WriteLine($"发生未知错误:{ex.Message}");
return $"发生未知错误:{ex.Message}";
}
}
#endregion
#region 芝麻先享-取消服务订单
/// <summary>
/// 芝麻先享-取消服务订单
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("ZhimaOrderCancel")]
public async Task<dynamic> ZhimaOrderCancel(AliPayOperationCancelEntity input)
{
AlipayConfigUtil alipayConfigUtil = new AlipayConfigUtil(GetAlipayConfig());
ZhimaCreditPayafteruseCreditbizorderApi instance = new ZhimaCreditPayafteruseCreditbizorderApi();
instance.Client.SetAlipayConfigUtil(alipayConfigUtil);
ZhimaCreditPayafteruseCreditbizorderFinishModel data = new ZhimaCreditPayafteruseCreditbizorderFinishModel();
data.OutRequestNo = input.OutOrderNo;
data.Remark = "完结订单";
data.IsFulfilled = "\"true\"";
data.CreditBizOrderId = "ZMCB20201021200102012";
try
{
var response = instance.Finish(data);
return response;
}
catch (ApiException e)
{
ZhimaCreditPayafteruseCreditbizorderFinishDefaultResponse errorObject = (ZhimaCreditPayafteruseCreditbizorderFinishDefaultResponse)e.ErrorObject;
Console.WriteLine("调用失败:" + errorObject);
return errorObject;
}
}
#endregion
}
}