/// <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); }
/// <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 { } }
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); }
/// <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 { } }
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); }