Пример #1
0
        /// <summary>
        /// 创建支付
        /// </summary>
        /// <returns>返回二维码内容</returns>
        public override string StartPay(PayParameter parameter)
        {
            if (parameter.TradeID.IsNullOrEmpty())
            {
                throw new Exception("交易编号为空");
            }

            Config config = new Alipay.Config(PayFactory.GetInterfaceXmlConfig(PayInterfaceType.AlipayScanQRCode, parameter.TradeID));
            IAlipayTradeService serviceClient = config.AppConfig.CreateClientInstance();

            AlipayTradePrecreateContentBuilder builder = BuildPrecreateContent(config, parameter);
            string out_trade_no = builder.out_trade_no;

            //回掉通知页面
            string notifyUrl = string.Format("http://{0}/{1}", HttpContext.Current.Request.Url.Authority, Alipay_ScanPay_HttpModule.NotifyPageName);

            AlipayF2FPrecreateResult precreateResult = serviceClient.tradePrecreate(builder, notifyUrl);

            PayFactory.OnLog(parameter.TradeID, precreateResult.response.Body);
            if (precreateResult.response.QrCode.IsNullOrEmpty())
            {
                //如果没有生成二维码内容,认为失败
                throw new Exception(precreateResult.response.SubMsg);
            }

            if (precreateResult.Status == ResultEnum.FAILED)
            {
                throw new Exception(precreateResult.response.SubMsg);
            }

            return(precreateResult.response.QrCode);
        }
Пример #2
0
 /// <summary>
 /// 根据TradeID检查支付状态
 /// </summary>
 public virtual void CheckPayState(PayParameter parameter)
 {
     try
     {
         Config config = new Alipay.Config(PayFactory.GetInterfaceXmlConfig(PayInterfaceType.AlipayBarcode, parameter.TradeID));
         checkPayStateByConfig(parameter, config);
     }
     catch
     {
     }
 }
Пример #3
0
        public virtual RefoundResult Refound(RefoundParameter parameter)
        {
            if (parameter.TradeID.IsNullOrEmpty())
            {
                throw new Exception("TradeID is null");
            }
            Config config        = new Alipay.Config(PayFactory.GetInterfaceXmlConfig(PayInterfaceType.AlipayBarcode, parameter.TradeID));
            var    serviceClient = config.AppConfig.CreateClientInstance();

            AlipayTradeRefundContentBuilder builder = new AlipayTradeRefundContentBuilder();

            //支付宝交易号与商户网站订单号不能同时为空
            builder.out_trade_no = parameter.TradeID;

            //退款金额
            builder.refund_amount = parameter.Amount.ToString();

            builder.refund_reason = parameter.Reason;

            AlipayF2FRefundResult refundResult = serviceClient.tradeRefund(builder);

            RefoundResult finallyResult = new RefoundResult();

            //请在这里加上商户的业务逻辑程序代码
            //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
            switch (refundResult.Status)
            {
            case ResultEnum.SUCCESS:
                finallyResult.Result        = RefoundResult.ResultEnum.SUCCESS;
                finallyResult.ServerMessage = refundResult.response.Body;
                break;

            case ResultEnum.FAILED:
                finallyResult.Result        = RefoundResult.ResultEnum.FAIL;
                finallyResult.ServerMessage = refundResult.response.Body;
                finallyResult.Error         = refundResult.response.SubMsg;
                break;

            case ResultEnum.UNKNOWN:
                finallyResult.Result = RefoundResult.ResultEnum.FAIL;
                if (refundResult.response == null)
                {
                    finallyResult.Error = "配置或网络异常,请检查";
                }
                else
                {
                    finallyResult.Error = "系统异常,请走人工退款流程";
                }
                break;
            }

            return(finallyResult);
        }
Пример #4
0
 /// <summary>
 /// 检查订单状态
 /// </summary>
 public override void CheckPayState(PayParameter parameter)
 {
     try
     {
         Config config = new Alipay.Config(PayFactory.GetInterfaceXmlConfig(PayInterfaceType.AlipayScanQRCode, parameter.TradeID));
         IAlipayTradeService serviceClient = config.AppConfig.CreateClientInstance();
         var result = serviceClient.tradeQuery(parameter.TradeID);
         PayFactory.OnLog(parameter.TradeID, result.response.Body);
         //客户没有扫码之前,会返回交易不存在
         if (result.Status == ResultEnum.SUCCESS)
         {
             PayFactory.OnPaySuccessed(parameter.TradeID, result.response.Body);
         }
     }
     catch
     {
     }
 }
Пример #5
0
        public string StartPay(PayParameter parameter)
        {
            if (parameter.TradeID.IsNullOrEmpty())
            {
                throw new Exception("交易编号为空");
            }
            Config config = new Alipay.Config(PayFactory.GetInterfaceXmlConfig(PayInterfaceType.AlipayWebPay, parameter.TradeID));
            //回掉通知页面
            string notifyUrl = string.Format("http://{0}/{1}", HttpContext.Current.Request.Url.Authority, Alipay_WebPay_HttpModule.NotifyPageName);

            string returnUrl = string.Format("http://{0}/{1}", HttpContext.Current.Request.Url.Authority, Alipay_WebPay_HttpModule.ReturnPageName);

            //把请求参数打包成数组
            SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>();

            sParaTemp.Add("service", config.WebConfig.service);
            sParaTemp.Add("partner", config.WebConfig.pid);
            sParaTemp.Add("seller_id", config.WebConfig.seller_id);
            sParaTemp.Add("_input_charset", config.WebConfig.input_charset.ToLower());
            sParaTemp.Add("payment_type", config.WebConfig.payment_type);
            sParaTemp.Add("notify_url", notifyUrl);
            sParaTemp.Add("return_url", returnUrl);
            sParaTemp.Add("anti_phishing_key", config.WebConfig.anti_phishing_key);
            sParaTemp.Add("exter_invoke_ip", config.WebConfig.exter_invoke_ip);
            sParaTemp.Add("out_trade_no", parameter.TradeID);
            sParaTemp.Add("subject", parameter.TradeName); //订单名称
            sParaTemp.Add("total_fee", parameter.Amount.ToString());
            sParaTemp.Add("body", parameter.Description);  //商品描述


            //其他业务参数根据在线开发文档,添加参数.文档地址:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.O9yorI&treeId=62&articleId=103740&docType=1
            //如sParaTemp.Add("参数名","参数值");

            //建立请求
            var    submitBuilder = new Com.Alipay.Submit(config);
            string sHtmlText     = submitBuilder.BuildRequest(sParaTemp, "get", "确认");

            Alipay_WebPay_HttpModule.ReturnUrlConfigs.Add(parameter.TradeID, parameter.ReturnUrl);

            return(sHtmlText);
        }