Beispiel #1
0
        /// <summary>
        /// 回调处理
        /// </summary>
        /// <param name="app"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public PaySysResult CallBack(App app, object data)
        {
            string            xml      = data as string;
            PayNotifyResponse response = Utility.Get <PayNotifyResponse>(xml, app.Key, app.SignType);

            return(new WeChatPayNotifyResult
            {
                Attach = response.Attach,
                BankType = response.BankType,
                CashFee = response.CashFee,
                CashFeeType = response.CashFeeType,
                CouponCount = response.CouponCount,
                CouponFee = response.CouponFee,
                FeeType = response.FeeType,
                IsSubscribe = response.IsSubscribe,
                OutTradeNo = response.OutTradeNo,
                SettlementTotalFee = response.SettlementTotalFee,
                TimeEnd = DateTime.ParseExact(response.TimeEnd, "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture),
                TotalFee = response.TotalFee,
                TradeType = response.TradeType,
                TransactionId = response.TransactionId
            });
        }
Beispiel #2
0
        /// <summary>
        /// 支付结果回调
        /// </summary>
        /// <param name="payNotifyResponse"></param>
        public void PayNotify(PayNotifyResponse payNotifyResponse)
        {
            var tbl_Order = Get(payNotifyResponse.OutTradeNo);

            if (tbl_Order == null || tbl_Order.OrderStatus != (int)OrderStatusType.NoPay)
            {
                return;
            }
            if (tbl_Order.OrderType == (int)OrderType.Recharge)
            {
                UpdateOrder(tbl_Order, payNotifyResponse.TransactionId);
                _orderDetailService.UpdateForPay(payNotifyResponse.OutTradeNo);
                _weiXinUserService.UpdateForBalanceRecharge(tbl_Order);
                _integralDetailsService.AddForRecharge(tbl_Order);
            }
            else
            {
                UpdateOrder(tbl_Order, payNotifyResponse.TransactionId);
                _orderDetailService.UpdateForPay(payNotifyResponse.OutTradeNo);
                _weiXinUserService.UpdateForSaleMoney(tbl_Order);
                _integralDetailsService.AddForWechatConsumption(tbl_Order);
            }
        }
Beispiel #3
0
        /// <summary>
        /// 支付通知
        /// </summary>
        /// <param name="xml">xml</param>
        /// <returns>结果</returns>
        public static PayNotifyResponse ConvertToPayNotifyRresult(string xml)
        {
            PayNotifyResponse payNotifyResponse = new PayNotifyResponse();
            PayNotifyResult   payNotifyRresult  = new PayNotifyResult();
            SortedDictionary <string, string> signParanmeters = new SortedDictionary <string, string>();

            xml = xml.Replace("coupon_id_$n", "coupon_id_xmln").Replace("coupon_fee_$n", "coupon_fee_xmln");
            XElement doc = XElement.Parse(xml);

            if (doc.Element("return_code").GetString() == "SUCCESS")
            {
                if (doc.Element("result_code").GetString() == "SUCCESS")
                {
                    payNotifyRresult.IsSuccess     = true;
                    payNotifyRresult.Appid         = doc.Element("appid").GetString();
                    payNotifyRresult.MchId         = doc.Element("mch_id").GetString();
                    payNotifyRresult.DeviceInfo    = doc.Element("device_info").GetString();
                    payNotifyRresult.NonceStr      = doc.Element("nonce_str").GetString();
                    payNotifyRresult.Sign          = doc.Element("sign").GetString();
                    payNotifyRresult.TradeType     = doc.Element("trade_type").GetString();
                    payNotifyRresult.BankType      = doc.Element("bank_type").GetString();
                    payNotifyRresult.TotalFee      = doc.Element("total_fee").GetInt();
                    payNotifyRresult.TransactionId = doc.Element("transaction_id").GetString();
                    payNotifyRresult.OutTradeNo    = doc.Element("out_trade_no").GetString();
                    payNotifyRresult.TimeEnd       = doc.Element("time_end").GetString();

                    signParanmeters.Add("return_code", doc.Element("result_code").GetString());
                    signParanmeters.Add("appid", doc.Element("appid").GetString());
                    signParanmeters.Add("mch_id", doc.Element("mch_id").GetString());
                    if (!string.IsNullOrEmpty(doc.Element("device_info").GetString()))
                    {
                        signParanmeters.Add("device_info", doc.Element("device_info").GetString());
                    }
                    signParanmeters.Add("nonce_str", doc.Element("nonce_str").GetString());
                    signParanmeters.Add("sign", doc.Element("sign").GetString());
                    signParanmeters.Add("result_code", doc.Element("result_code").GetString());
                    signParanmeters.Add("openid", doc.Element("openid").GetString());
                    if (!string.IsNullOrEmpty(doc.Element("is_subscribe").GetString()))
                    {
                        signParanmeters.Add("is_subscribe", doc.Element("is_subscribe").GetString());
                    }
                    signParanmeters.Add("trade_type", doc.Element("trade_type").GetString());
                    signParanmeters.Add("bank_type", doc.Element("bank_type").GetString());
                    signParanmeters.Add("total_fee", doc.Element("total_fee").GetString());
                    if (!string.IsNullOrEmpty(doc.Element("fee_type").GetString()))
                    {
                        signParanmeters.Add("fee_type", doc.Element("fee_type").GetString());
                    }
                    signParanmeters.Add("cash_fee", doc.Element("cash_fee").GetString());
                    if (!string.IsNullOrEmpty(doc.Element("coupon_fee").GetString()))
                    {
                        signParanmeters.Add("coupon_fee", doc.Element("coupon_fee").GetString());
                    }
                    if (!string.IsNullOrEmpty(doc.Element("coupon_count").GetString()))
                    {
                        signParanmeters.Add("coupon_count", doc.Element("coupon_count").GetString());
                    }
                    if (!string.IsNullOrEmpty(doc.Element("coupon_id_xmln").GetString()))
                    {
                        signParanmeters.Add("coupon_id_$n", doc.Element("coupon_id_xmln").GetString());
                    }
                    if (!string.IsNullOrEmpty(doc.Element("coupon_fee_xmln").GetString()))
                    {
                        signParanmeters.Add("coupon_fee_$n", doc.Element("coupon_fee_xmln").GetString());
                    }
                    signParanmeters.Add("transaction_id", doc.Element("transaction_id").GetString());
                    signParanmeters.Add("out_trade_no", doc.Element("out_trade_no").GetString());
                    if (!string.IsNullOrEmpty(doc.Element("attach").GetString()))
                    {
                        signParanmeters.Add("attach", doc.Element("attach").GetString());
                    }
                    signParanmeters.Add("time_end", doc.Element("time_end").GetString());
                }
                else
                {
                    payNotifyRresult.IsSuccess = false;
                    payNotifyRresult.Message   = doc.Element("err_code_des").GetString();
                }
            }
            else
            {
                payNotifyRresult.IsSuccess = false;
                payNotifyRresult.Message   = doc.Element("return_msg").GetString();
            }
            payNotifyResponse.PayNotifyRresult = payNotifyRresult;
            payNotifyResponse.SignParanmeters  = signParanmeters;
            return(payNotifyResponse);
        }