Пример #1
0
        public void MakeQR(string provider)
        {
            PayProvider pay = LoadProvider(provider);

            if (pay != null)
            {
                try
                {
                    IPayOrder order = GetPayOrder(pay.Key);
                    if (order == null)
                    {
                        throw new Exception("获取订单信息错误!");
                    }
                    string url = pay.MakeQR(order);
                    if (string.IsNullOrEmpty(url))
                    {
                        throw new Exception(string.Concat("第三方支付\"", provider, "\"暂不支持扫码支付或未实现!"));
                    }
                    OnMakeQR(url, order.TradeNo);
                }
                catch (Exception ex)
                {
                    OnError(ex.Message);
                }
            }
            else
            {
                OnError(string.Concat("第三方支付\"", provider, "\"不被支持或已禁用!"));
            }
        }
Пример #2
0
        public void Submit(string provider)
        {
            PayProvider pay = LoadProvider(provider);

            if (pay != null)
            {
                if (pay.IsNeedSubmit)
                {
                    try
                    {
                        IPayOrder order = GetPayOrder(pay.Key);
                        if (order == null)
                        {
                            throw new Exception("获取订单信息错误!");
                        }
                        if (pay.IsOnlinePay)
                        {
                            OnSubmit(pay.Submit(this, pay.PackData(order), SubmitText, ReturnUrl));
                        }
                        else
                        {
                            PaymentResult result;
                            bool          value;
                            if (pay.IsCheckMoney)
                            {
                                value = CheckMoney(order, out result);
                            }
                            else
                            {
                                result = new PayResult()
                                {
                                    TradeNo    = order.TradeNo,
                                    PayTradeNo = order.TradeNo,
                                    Status     = "Success",
                                    TotalFee   = order.TotalFee
                                };
                                value = true;
                            }
                            OnCallback(pay, value, result);
                            OnRedirect(this, pay, result, value);
                            //try { Response.Redirect(ReturnUrl, true); }
                            //catch (Exception) { }
                        }
                    }
                    catch (Exception ex)
                    {
                        OnError(ex.Message);
                    }
                }
                else
                {
                    OnError(string.Concat("第三方支付\"", provider, "\"不支持提交!"));
                }
            }
            else
            {
                OnError(string.Concat("第三方支付\"", provider, "\"不被支持或已禁用!"));
            }
        }
Пример #3
0
        public OrderPay(IBuilderOrder builderOder, IPayOrder payOrder)
        {
            // TODO: Complete member initialization
            this.builderOder = builderOder;
            this.payOrder    = payOrder;
            IList <Product> b = builderOder.GetOrder();

            foreach (Product p in b)
            {
                payOrder.Pay(p);
            }
        }
Пример #4
0
        public sealed override SortedDictionary <string, string> PackData(IPayOrder order)
        {
            SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>();

            sParaTemp.Add("service", Service);
            sParaTemp.Add("partner", Partner);
            sParaTemp.Add("_input_charset", Charset);

            sParaTemp.Add("notify_url", AsyncCallbackUrl);
            sParaTemp.Add("return_url", CallbackUrl);

            PackData(sParaTemp);

            sParaTemp.Add("out_trade_no", order.TradeNo);
            sParaTemp.Add("subject", order.Subject);
            sParaTemp.Add("payment_type", "1");
            sParaTemp.Add("total_fee", order.TotalFee.ToString("F2"));
            sParaTemp.Add("seller_id", PartnerId);

            sParaTemp.Add("sign", BuildRequestMysign(FilterPara(sParaTemp)));
            sParaTemp.Add("sign_type", SignType);

            return(sParaTemp);
        }
Пример #5
0
 protected virtual bool CheckMoney(IPayOrder order, out PaymentResult result)
 {
     result = null;
     return(false);
 }
Пример #6
0
 public override SortedDictionary <string, string> PackData(IPayOrder order)
 {
     throw new NotSupportedException();
 }
Пример #7
0
 public virtual string MakeQR(IPayOrder order)
 {
     return(null);
 }
Пример #8
0
 /// <summary>
 /// 打包支付信息
 /// </summary>
 /// <returns></returns>
 public abstract SortedDictionary <string, string> PackData(IPayOrder order);