source/HF.Core/HF.Finance.Data/WeiXin/ResultNotify.cs

(开头部分) 6KB

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

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using HF.Framework;
using System.Data;
using HF.Finance.Data;
namespace HF.Util.WxPayAPI
{
    /// <summary>
    /// 支付结果通知回调处理类
    /// 负责接收微信支付后台发送的支付结果并对订单有效性进行验证,将验证结果反馈给微信支付后台
    /// </summary>
    public class ResultNotify:Notify
    {
        public ResultNotify(Page page):base(page)
        {
        }

        public override void ProcessNotify()
        {
            WxPayData notifyData = GetNotifyData();
            //检查支付结果中transaction_id是否存在
            if (!notifyData.IsSet("transaction_id"))
            {
                //若transaction_id不存在,则立即返回结果给微信支付后台
                WxPayData res = new WxPayData();
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "支付结果中微信订单号不存在");
                LogHelper.Error(this.GetType().ToString(), "The Pay result is error : " + res.ToXml());
                page.Response.Write(res.ToXml());
                page.Response.End();
            }
            if (!notifyData.IsSet("attach"))
            {
                WxPayData res = new WxPayData();
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "回调时attach参数没有返回");//存应收款Id
                LogHelper.Error(this.GetType().ToString(), "回调时attach参数没有返回, " + res.ToXml());
                page.Response.Write(res.ToXml());
                page.Response.End();
              
            }
            string transaction_id = notifyData.GetValue("transaction_id").ToString();
            string recid = notifyData.GetValue("attach").ToString();
            string total_fee = notifyData.GetValue("total_fee").ToString();
            ReceivablesData receivData = new ReceivablesData();
            DataRow recRow = receivData.GetDataRow("Finance_Receivables", "Id", recid);
            if(recRow==null)
            {
                //若订单查询失败,理论上调试成功后不允许出现为空的情况。       
                WxPayData res = new WxPayData();
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", "没找到应收款id=" + recid);
                LogHelper.Error(this.GetType().ToString(), "没找到应收款id=" + recid);
                page.Response.Write(res.ToXml());
                page.Response.End();
            }
            string payStatus = recRow["PayStatus"].ToString();
后面还有 80 行代码,解锁后查看完整代码

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

AI 解读 AI

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

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