Yi.Framework.Net6/Yi.Framework.WeChatPay/Core/Notify/ResultNotify.cs

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;

namespace Yi.Framework.WeChatPay.Core
{
    public class ResultNotify : AbstractNotify
    {
        private readonly PayApi _PayApi;
        private readonly ILogger<ResultNotify> _logger;
        public ResultNotify(PayApi PayApi,ILogger<ResultNotify> logger, IHttpContextAccessor httpContextAccessor) :base(httpContextAccessor)
        {
            this._PayApi = PayApi;
            this._logger = logger;
        }

        /// <summary>
        /// 处理支付回调
        /// </summary>
        /// <returns></returns>
        public override PayData ProcessNotify()
        {
            PayData notifyData = GetNotifyData();
            //解析数据
            string totalFee = notifyData.GetValue("total_fee").ToString();  //订单金额
            string outTradeNo = notifyData.GetValue("out_trade_no").ToString();  //订单编号
            string transactionId = notifyData.GetValue("transaction_id").ToString();  //商户订单号
            string bankType = notifyData.GetValue("bank_type").ToString();  //银行类型

            _logger.LogInformation($"======支付回调参数:{totalFee}=={outTradeNo}=={transactionId}=={bankType}");
            if (totalFee.Equals("") || outTradeNo.Equals("") || transactionId.Equals("") || bankType.Equals(""))
            {
                PayData res = new();
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "支付回调返回数据不正确");
                _logger.LogInformation("支付错误结果 : " + res.ToXml());
                return res;
            }

            //检查支付结果中transaction_id是否存在--流水号
            if (!notifyData.IsSet("transaction_id"))
            {
                //若transaction_id不存在,则立即返回结果给微信支付后台
                PayData res = new();
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "支付结果中微信订单号不存在");
                _logger.LogInformation("支付错误结果 : " + res.ToXml());

                return res;
            }

            //查询订单,判断订单真实性
            if (!QueryOrder(transactionId))
            {
                //若订单查询失败,则立即返回结果给微信支付后台
                PayData res = new();
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "订单查询失败");
                _logger.LogInformation("订单查询失败 : " + res.ToXml());

                return res;
后面还有 41 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。