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 { /// /// 芝麻信用服务 /// [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; /// /// 初始化一个类型的新实例 /// 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 芝麻先享-信用服务下单 /// /// 芝麻先享-信用服务下单 /// /// /// [HttpPost("CreateZhimaOrder")] public async Task CreateZhimaOrder(AliPayAppFreezeEntity input) { // 初始化SDK AlipayConfigUtil alipayConfigUtil = new AlipayConfigUtil(GetAlipayConfig()); GenericExecuteApi api = new GenericExecuteApi(); api.Client.SetAlipayConfigUtil(alipayConfigUtil); // 构造请求参数以调用接口 OpenApiGenericRequest request = new OpenApiGenericRequest(); // body参数 Dictionary bizParams = new Dictionary(); // 设置商户外部订单号 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 芝麻先享-取消服务订单 /// /// 芝麻先享-取消服务订单 /// /// /// [HttpPost("ZhimaOrderCancel")] public async Task 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 } }