| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using Microsoft.AspNetCore.Mvc;
- using Microsoft.Extensions.Logging;
- using MySystem.Util.UnionPay;
- using MySystem.Entity.UnionPay;
- using Library;
- using LitJson;
- namespace MySystem.Controllers
- {
- /// <summary>
- /// 联合收单接口控制器
- /// </summary>
- [Route("api/[controller]")]
- [ApiController]
- public class UnionPayController : ControllerBase
- {
- private readonly ILogger<UnionPayController> _logger;
- public UnionPayController(ILogger<UnionPayController> logger)
- {
- _logger = logger;
- }
- /// <summary>
- /// 商户审核信息回调接口
- /// </summary>
- /// <param name="request">包含签名和数据的请求对象</param>
- /// <returns>回调处理结果</returns>
- [HttpPost("/api/unionpay/merchant/review/callback")]
- public IActionResult MerchantReviewCallback([FromBody] Dictionary<string, object> request)
- {
- try
- {
- _logger.LogInformation("收到商户审核回调请求");
-
- // 验证请求包含必要字段
- if (!request.ContainsKey("sign") || !request.ContainsKey("agentId") || !request.ContainsKey("data"))
- {
- _logger.LogError("回调请求缺少必要字段");
- return BadRequest(new { error_code = "400", error_msg = "参数错误", count = 0 });
- }
- // 解析data字段为UnionPayMerchantReviewCallbackRequest对象
- var dataJson = Newtonsoft.Json.JsonConvert.SerializeObject(request["data"]);
- var callbackRequest = Newtonsoft.Json.JsonConvert.DeserializeObject<UnionPayMerchantReviewCallbackRequest>(dataJson);
- if (callbackRequest == null)
- {
- _logger.LogError("解析回调请求数据失败");
- return BadRequest(new { error_code = "400", error_msg = "参数错误", count = 0 });
- }
- // 调用商户审核回调处理方法
- var response = UnionPayMerchantTradeHelper.Instance.ProcessMerchantReviewCallback(callbackRequest);
- // 返回处理结果
- return Ok(response);
- }
- catch (Exception ex)
- {
- _logger.LogError(ex, "处理商户审核回调时发生异常");
- return StatusCode(500, new { error_code = "9999", error_msg = "系统异常", count = 0 });
- }
- }
- /// <summary>
- /// 交易结算实时推送接口
- /// </summary>
- /// <param name="pushRequest">交易结算推送请求对象</param>
- /// <returns>推送处理结果</returns>
- [HttpPost("/api/unionpay/settlement/push")]
- public IActionResult SettlementPush([FromBody] UnionPaySettlementPushRequest pushRequest)
- {
- try
- {
- _logger.LogInformation("收到交易结算实时推送请求");
- if (pushRequest == null)
- {
- _logger.LogError("推送请求数据为空");
- return BadRequest(new { error_code = "400", error_msg = "参数错误", count = 0 });
- }
- // 调用交易结算推送处理方法
- var response = UnionPayTradeSettlementHelper.Instance.ProcessSettlementPush(pushRequest);
- // 返回处理结果
- return Ok(response);
- }
- catch (Exception ex)
- {
- _logger.LogError(ex, "处理交易结算实时推送时发生异常");
- return StatusCode(500, new { error_code = "9999", error_msg = "系统异常", count = 0 });
- }
- }
- }
- }
|