예제 #1
0
        protected virtual void OnNotifyEvent(NotifyEventArgs e)

        {
            ProcessNotifyEventHandler eventHandler = eventList[notifyEventKey] as ProcessNotifyEventHandler;

            if (eventHandler != null)
            {
                eventHandler(this, e);
            }
        }
 /// <summary>
 /// 修改交易价格
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void ap_ModifyTradeBaseTotalFee(object sender, NotifyEventArgs e)
 {
     log.Info("修改交易价格,订单号为:" + e.Out_Trade_No);
     CommOrderModel omodel = obll.GetModel(e.Out_Trade_No);
     if (omodel.PayMethod == PayMethType.支付宝)
     {
         if (e.Is_Total_Fee_Adjust == "T")
         {
             if (obll.ModifyTotalFee(e.Out_Trade_No, e.Total_Fee ?? 0))
             {
                 string remark = String.Format("修改订单金额,修改前总价为:{0},修改后的的总价为:{1},相关状态为:{2}",
                     omodel.Paysum, e.Total_Fee, e.Trade_Status + " " + e.Refund_Status);
                 lbll.Add(e.Out_Trade_No, remark, "议价", "alipay");
             }
         }
     }
 }
 /// <summary>
 /// 买家申请退款
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void ap_WaitSellerAgree(object sender, NotifyEventArgs e)
 {
     log.Info("买家申请退款,订单号为:" + e.Out_Trade_No);
     CommOrderModel omodel = obll.GetModel(e.Out_Trade_No);
     if (omodel.PayMethod == PayMethType.支付宝)
     {
         if (obll.ChangePayStatus(e.Out_Trade_No, PayStatus.退款申请中))
         {
             lbll.Add(e.Out_Trade_No, e.Trade_Status + " " + e.Refund_Status, PayStatus.退款申请中.ToString(), "alipay");
         }
     }
 }
 /// <summary>
 /// 交易创建,等待买家付款
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void ap_WaitBuyerPay(object sender, NotifyEventArgs e)
 {
     log.Info("交易创建,等待买家付款,订单号为:" + e.Out_Trade_No);
     CommOrderModel omodel = obll.GetModel(e.Out_Trade_No);
     if (omodel.PayMethod == PayMethType.支付宝)
     {
         if (obll.ChangeOrderStatus(e.Out_Trade_No, OrderStatus.已创建) && obll.SetPayOrderId(e.Out_Trade_No, e.Trade_No))
         {
             string remark = e.Trade_Status + " " + e.Refund_Status;
             lbll.Add(e.Out_Trade_No, remark, OrderStatus.已创建.ToString(), "alipay");
         }
     }
 }
 /// <summary>
 /// 交易成功结束
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void ap_TradeFinished(object sender, NotifyEventArgs e)
 {
     log.Info("交易成功结束,订单号为:" + e.Out_Trade_No);
     CommOrderModel omodel = obll.GetModel(e.Out_Trade_No);
     if (omodel.PayMethod == PayMethType.支付宝)
     {
         if (obll.ChangeOrderStatus(e.Out_Trade_No, OrderStatus.交易完成))
         {
             string remark = e.Trade_Status + " " + e.Refund_Status;
             lbll.Add(e.Out_Trade_No, remark, OrderStatus.交易完成.ToString(), "alipay");
         }
     }
 }
 /// <summary>
 /// 退款成功
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void ap_RefundSuccess(object sender, NotifyEventArgs e)
 {
     log.Info("退款成功,订单号为:" + e.Out_Trade_No);
     CommOrderModel omodel = obll.GetModel(e.Out_Trade_No);
     if (omodel.PayMethod == PayMethType.支付宝)
     {
         if (obll.ChangePayStatus(e.Out_Trade_No, PayStatus.退款完成))
         {
             lbll.Add(e.Out_Trade_No, e.Trade_Status + " " + e.Refund_Status, PayStatus.退款完成.ToString(), "alipay");
         }
     }
 }
예제 #7
0
        /// <summary>
        /// 处理返回的Notify
        /// </summary>
        /// <param name="page">传如Page对象</param>
        /// <param name="verifyUrl">验证的地址,如:https://www.alipay.com/cooperate/gateway.do</param>
        /// <param name="key">账户的交易安全校验码(key)</param>
        /// <param name="verify">verify对象</param>
        /// <param name="encode">编码</param>
        /// <exception cref="SignVerifyFailedException">支付宝通知签名验证失败</exception>
        /// <exception  cref="CommonAliPayBaseException">支付宝通知验证失败</exception>
        public void ProcessNotify(Page page, string verifyUrl, string key, Verify verify, string encode)
        {
            if (VerifyNotify(verifyUrl, verify))  //验证成功
            {
                NotifyEventArgs dn = new NotifyEventArgs();
                dn = ParseNotify(GetReqParas(page), dn);//构造事件参数


                //SortedList<string, string> sortedList = GetParam(dn);
                SortedList <string, string> sortedList = GetParamFromReqPara(GetReqParas(page));

                string param = GetUrlParam(sortedList, false);
#if (DEBUG)
                Log4net.log.Error(param + "param");
#endif

                string sign = GetMd5Sign(encode, param + key);
                if (sign == dn.Sign)//验证签名
                {
                    // 交易状态处理
                    switch (dn.Trade_Status)
                    {
                    case "WAIT_SELLER_SEND_GOODS":
                        OnWaitSellerSendGoods(dn);
                        break;

                    case "WAIT_BUYER_PAY":
                        OnWaitBuyerPay(dn);
                        break;

                    case "WAIT_SELLER_CONFIRM_TRADE":
                        OnWaitSellerConfirmTrade(dn);
                        break;

                    case "WAIT_SYS_CONFIRM_PAY":
                        OnWaitSysConfirmPay(dn);
                        break;

                    case "WAIT_BUYER_CONFIRM_GOODS":
                        OnWaitBuyerConfirmGoods(dn);
                        break;

                    case "WAIT_SYS_PAY_SELLER":
                        OnWaitSysPaySeller(dn);
                        break;

                    case "TRADE_FINISHED":
                        OnTradeFinished(dn);
                        break;

                    case "TRADE_CLOSED":
                        OnTradeClosed(dn);
                        break;

                    case "modify.tradeBase.totalFee":
                        OnModifyTradeBaseTotalFee(dn);
                        break;

                    default:
                        throw new NotImplementedException(dn.Trade_Status);
                    }
                    // 退款状态处理
                    switch (dn.Refund_Status)
                    {
                    case "REFUND_CLOSED":
                        OnRefundClose(dn);
                        break;

                    case "REFUND_SUCCESS":
                        OnRefundSuccess(dn);
                        break;

                    case "WAIT_SELLER_AGREE":
                        OnWaitSellerAgree(dn);
                        break;
                    }


                    page.Response.Write("success");
                }

                else
                {
                    page.Response.Write("fail");
                    throw new CommonAliPayBaseException("支付宝通知签名验证失败", 102);
 #if (DEBUG)
                    Log4net.log.Error("支付宝通知签名验证失败");
#endif
                }
            }
            else
            {
                page.Response.Write("fail");
                throw new CommonAliPayBaseException("支付宝通知验证失败", 101);
            }
        }
 /// <summary>
 /// 确认买家付款中,请勿操作
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void ap_WaitSysConfirmPay(object sender, NotifyEventArgs e)
 {
     log.Info("确认买家付款中,请勿操作,订单号为:" + e.Out_Trade_No);
 }
예제 #9
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="e"></param>
 protected virtual void OnTradeFinished(NotifyEventArgs e)
 {
     ProcessNotifyEventHandler eventHandler = eventList[tradeFinishedKey] as ProcessNotifyEventHandler;
     if (eventHandler != null)
     {
         eventHandler(this, e);
     }
 }
예제 #10
0
 protected virtual void OnRefundSuccess(NotifyEventArgs e)
 {
     ProcessNotifyEventHandler eventHandler = eventList[refundSuccessKey] as ProcessNotifyEventHandler;
     if (eventHandler != null)
     {
         eventHandler(this, e);
     }
 }
예제 #11
0
 protected virtual void OnNotifyEvent(NotifyEventArgs e)
 {
     ProcessNotifyEventHandler eventHandler = eventList[notifyEventKey] as ProcessNotifyEventHandler;
     if (eventHandler != null)
     {
         eventHandler(this, e);
     }
 }
예제 #12
0
 protected virtual void OnModifyTradeBaseTotalFee(NotifyEventArgs e)
 {
     ProcessNotifyEventHandler eventHandler = eventList[modifyTradeBaseTotalFeeKey] as ProcessNotifyEventHandler;
     if (eventHandler != null)
     {
         eventHandler(this, e);
     }
 }
예제 #13
0
        /// <summary>
        /// ������ص�Notify
        /// </summary>
        /// <param name="page">����Page����</param>
        /// <param name="verifyUrl">��֤�ĵ�ַ���磺https://www.alipay.com/cooperate/gateway.do</param>
        /// <param name="key">�˻��Ľ��װ�ȫУ���루key��</param>
        /// <param name="verify">verify����</param>
        /// <param name="encode">����</param>
        /// <exception cref="SignVerifyFailedException">֧����֪ͨǩ����֤ʧ��</exception>
        /// <exception  cref="CommonAliPayBaseException">֧����֪ͨ��֤ʧ��</exception>
        public void ProcessNotify(Page page, string verifyUrl, string key, Verify verify, string encode)
        {
            if (VerifyNotify(verifyUrl, verify))  //��֤�ɹ�
            {
                NotifyEventArgs dn = new NotifyEventArgs();
                dn = ParseNotify(GetReqParas(page), dn);//�����¼�����

                //SortedList<string, string> sortedList = GetParam(dn);
                SortedList<string, string> sortedList = GetParamFromReqPara(GetReqParas(page));

                string param = GetUrlParam(sortedList, false);
            #if (DEBUG)
                Log4net.log.Error(param + "param");
            #endif

                string sign = GetMd5Sign(encode, param + key);
                if (sign == dn.Sign)//��֤ǩ��
                {
                    // ����״̬����
                    switch (dn.Trade_Status)
                    {
                        case "WAIT_SELLER_SEND_GOODS":
                            OnWaitSellerSendGoods(dn);
                            break;
                        case "WAIT_BUYER_PAY":
                            OnWaitBuyerPay(dn);
                            break;
                        case "WAIT_SELLER_CONFIRM_TRADE":
                            OnWaitSellerConfirmTrade(dn);
                            break;
                        case "WAIT_SYS_CONFIRM_PAY":
                            OnWaitSysConfirmPay(dn);
                            break;
                        case "WAIT_BUYER_CONFIRM_GOODS":
                            OnWaitBuyerConfirmGoods(dn);
                            break;
                        case "WAIT_SYS_PAY_SELLER":
                            OnWaitSysPaySeller(dn);
                            break;

                        case "TRADE_FINISHED":
                            OnTradeFinished(dn);
                            break;
                        case "TRADE_CLOSED":
                            OnTradeClosed(dn);
                            break;
                        case "modify.tradeBase.totalFee":
                            OnModifyTradeBaseTotalFee(dn);
                            break;
                        default:
                            throw new NotImplementedException(dn.Trade_Status);
                    }
                    // �˿�״̬����
                    switch (dn.Refund_Status)
                    {
                        case "REFUND_CLOSED":
                            OnRefundClose(dn);
                            break;
                        case "REFUND_SUCCESS":
                            OnRefundSuccess(dn);
                            break;
                        case "WAIT_SELLER_AGREE":
                            OnWaitSellerAgree(dn);
                            break;
                    }

                    page.Response.Write("success");
                }

               else
                {

                    page.Response.Write("fail");
                    throw new CommonAliPayBaseException("֧����֪ͨǩ����֤ʧ��", 102);
             #if (DEBUG)
                    Log4net.log.Error("֧����֪ͨǩ����֤ʧ��");
            #endif
                }

            }
            else
            {

                page.Response.Write("fail");
                throw new CommonAliPayBaseException("֧����֪ͨ��֤ʧ��", 101);
            }
        }
예제 #14
0
        /// <summary>
        /// ������ص�Notify
        /// </summary>
        /// <param name="page">����Page����</param>
        /// <param name="verifyUrl">��֤�ĵ�ַ���磺https://www.alipay.com/cooperate/gateway.do</param>
        /// <param name="key">�˻��Ľ��װ�ȫУ���루key��</param>
        /// <param name="verify">verify����</param>
        /// <param name="encode">����</param>
        /// <exception cref="SignVerifyFailedException">֧����֪ͨǩ����֤ʧ��</exception>
        /// <exception  cref="CommonAliPayBaseException">֧����֪ͨ��֤ʧ��</exception>
        public void CommonProcessNotify(Page page, string verifyUrl, string key, Verify verify, string encode)
        {
            if (VerifyNotify(verifyUrl, verify))  //��֤�ɹ�
            {
                NotifyEventArgs dn = new NotifyEventArgs();
                dn = ParseNotify(page.Request.Form, dn);//�����¼�����
                SortedList<string, string> sortedList = GetParam(dn);
                string param = GetUrlParam(sortedList, false);
            #if (DEBUG)
                Log4net.log.Error(param + "param");
            #endif
                string sign = GetMd5Sign(encode, param + key);
                if (sign == dn.Sign)//��֤ǩ��
                {
                   OnNotifyEvent(dn);
                }
                else
                {
                    throw new SignVerifyFailedException("֧����֪ͨǩ����֤ʧ��", 102);
                }

            }
            else
            {
                throw new CommonAliPayBaseException("֧����֪ͨ��֤ʧ��", 101);
            }
        }
 /// <summary>
 /// 交易已创建,等待卖家确认
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void ap_WaitSellerConfirmTrade(object sender, NotifyEventArgs e)
 {
     log.Info("交易已创建,等待卖家确认,订单号为:" + e.Out_Trade_No);
 }
 /// <summary>
 /// 买家付款成功
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void ap_WaitSellerSendGoods(object sender, NotifyEventArgs e)
 {
     log.Info("买家付款成功,等待卖家发货,订单号为:" + e.Out_Trade_No);
     CommOrderModel omodel = obll.GetModel(e.Out_Trade_No);
     if (omodel.PayMethod == PayMethType.支付宝)
     {
         if (obll.ChangePayStatus(e.Out_Trade_No, PayStatus.支付成功))
         {
             string remark = e.Trade_Status + " " + e.Refund_Status;
             lbll.Add(e.Out_Trade_No, remark, OrderStatus.交易关闭.ToString(), "alipay");
         }
     }
 }
예제 #17
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="e"></param>
 protected virtual void OnWaitBuyerConfirmGoods(NotifyEventArgs e)
 {
     ProcessNotifyEventHandler eventHandler = eventList[waitBuyerConfirmGoodsKey] as ProcessNotifyEventHandler;
     if (eventHandler != null)
     {
         eventHandler(this, e);
     }
 }
 /// <summary>
 /// 买家确认收到货,等待支付宝打款给卖家
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void ap_WaitSysPaySeller(object sender, NotifyEventArgs e)
 {
     log.Info("买家确认收到货,等待支付宝打款给卖家,订单号为:" + e.Out_Trade_No);
     CommOrderModel omodel = obll.GetModel(e.Out_Trade_No);
     if (omodel.PayMethod == PayMethType.支付宝)
     {
         if (obll.ChangeOrderStatus(e.Out_Trade_No, OrderStatus.买家确认))
         {
             string remark = e.Trade_Status + " " + e.Refund_Status;
             lbll.Add(e.Out_Trade_No, remark, OrderStatus.买家确认.ToString(), "alipay");
         }
     }
 }
예제 #19
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="e"></param>
 protected virtual void OnWaitSysPaySeller(NotifyEventArgs e)
 {
     ProcessNotifyEventHandler eventHandler = eventList[waitSysPaySellerKey] as ProcessNotifyEventHandler;
     if (eventHandler != null)
     {
         eventHandler(this, e);
     }
 }
 /// <summary>
 /// 退款关闭
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void ap_RefundClose(object sender, NotifyEventArgs e)
 {
     log.Info("退款关闭,订单号为:" + e.Out_Trade_No);
     CommOrderModel omodel = obll.GetModel(e.Out_Trade_No);
     if (omodel.PayMethod == PayMethType.支付宝)
     {
         if (obll.ChangePayStatus(e.Out_Trade_No, PayStatus.支付成功))
         {
             string remark = "退款关闭,订单重置为支付成功," + e.Trade_Status + " " + e.Refund_Status;
             lbll.Add(e.Out_Trade_No, remark, PayStatus.支付成功.ToString(), "alipay");
         }
     }
 }
 void ap_NotifyEvent(object sender, NotifyEventArgs e)
 {
     Response.Redirect("~/member/ShowOrder.aspx?orderId=" + e.Out_Trade_No);
 }