123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 |
- //using System;
- //using System.Threading.Tasks;
- //using System.Web;
- //using Com.Alipay.Domain;
- //using Com.Alipay.Business;
- //using Com.Alipay;
- //using Com.Alipay.Model;
- //using System.Collections.Generic;
- //using PaymentGatewaySharedLibs;
- //using TradeStatus = PaymentGatewaySharedLibs.TradeStatus;
- //namespace PaymentGateway.GatewayApp
- //{
- // public class AlipayPaymentProcessor : IPaymentProcessor
- // {
- // private readonly NLog.Logger _logger = NLog.LogManager.GetLogger("Main");
- // private static volatile Dictionary<AliPayConfig, IAlipayTradeService> clients = new Dictionary<AliPayConfig, IAlipayTradeService>();
- // public static IAlipayTradeService Clients(AliPayConfig config)
- // {
- // if (!clients.ContainsKey(config))
- // {
- // var newClient = F2FBiz.CreateClientInstance(config.serverUrl,
- // config.appId,
- // config.merchant_private_key,
- // config.version,
- // config.sign_type,
- // config.alipay_public_key,
- // config.charset);
- // clients.Add(config, newClient);
- // return newClient;
- // }
- // else
- // {
- // return clients[config];
- // }
- // }
- // public async Task<GenericProcessResponse> Process(ElectronicOrderModel order)
- // {
- // order.TradeStatus = TradeStatus.PAYERROR;
- // _logger.Info("Alipay is processing order " + order.BillNumber);
- // var config = (AliPayConfig)order.Config;
- // AlipayTradePayContentBuilder builder = BuildPayContent(order);
- // AlipayF2FPayResult payResult = Clients(config).tradePay(builder);
- // switch (payResult.Status)
- // {
- // case ResultEnum.SUCCESS:
- // order.TradeStatus = TradeStatus.SUCCESS;
- // break;
- // case ResultEnum.FAILED:
- // _logger.Info("Request failed with result: ResultEnum.FAILED");
- // break;
- // case ResultEnum.UNKNOWN:
- // _logger.Info("Failed due to unknown reason, plesae check your network configuration and cable connection, " +
- // "then retry with a new order number");
- // break;
- // }
- // _logger.Info("The final Alipay response is :\r\n" + HttpUtility.UrlDecode(payResult.response?.Body));
- // return new GenericProcessResponse()
- // {
- // AopResponse = payResult.response
- // };
- // }
- // public async Task<GenericProcessResponse> UnifiedOrder(ElectronicOrderModel order)
- // {
- // order.TradeStatus = TradeStatus.PAYERROR;
- // _logger.Info("UnifiedOrder is processing order " + order.BillNumber);
- // var config = (AliPayConfig)order.Config;
- // AlipayTradePrecreateContentBuilder builder = BuildPrecreateContent(order);
- // AlipayF2FPrecreateResult payResult = Clients(config).tradePrecreate(builder);
- // switch (payResult.Status)
- // {
- // case ResultEnum.SUCCESS:
- // order.TradeStatus = TradeStatus.SUCCESS;
- // break;
- // case ResultEnum.FAILED:
- // _logger.Info("Request failed with result: ResultEnum.FAILED");
- // break;
- // case ResultEnum.UNKNOWN:
- // _logger.Info("Failed due to unknown reason, plesae check your network configuration and cable connection, " +
- // "then retry with a new order number");
- // break;
- // }
- // _logger.Info("The final Alipay response is :\r\n" + HttpUtility.UrlDecode(payResult.response?.Body));
- // return new GenericProcessResponse()
- // {
- // AopResponse = payResult.response
- // };
- // }
- // public async Task<GenericProcessResponse> Return(ElectronicOrderModel order)
- // {
- // _logger.Info("Alipay is processing refund, BillNumber = " + order.BillNumber);
- // AlipayTradeRefundContentBuilder builder = BuildRefundContent(order);
- // AlipayF2FRefundResult refundResult = Clients((AliPayConfig)order.Config).tradeRefund(builder);
- // //请在这里加上商户的业务逻辑程序代码
- // switch (refundResult.Status)
- // {
- // case ResultEnum.SUCCESS:
- // order.TradeStatus = TradeStatus.SUCCESS;
- // break;
- // case ResultEnum.FAILED:
- // _logger.Info("Request failed with result: ResultEnum.FAILED");
- // break;
- // case ResultEnum.UNKNOWN:
- // if (refundResult.response == null)
- // {
- // _logger.Info("Failed due to unknown reason, plesae check your network configuration and cable connection, " +
- // "then retry with a new order number");
- // }
- // else
- // {
- // _logger.Info("System error, please try refunding mannualy");
- // }
- // break;
- // }
- // _logger.Info("The final Alipay refund response is :\r\n" + refundResult.response?.Body);
- // return new GenericProcessResponse()
- // {
- // AopResponse = refundResult.response
- // };
- // }
- // public async Task<GenericProcessResponse> Query(ElectronicOrderModel order)
- // {
- // return await Query(order, 1, 2000);
- // }
- // public async Task<GenericProcessResponse> Query(ElectronicOrderModel order, int count, int interval)
- // {
- // order.TradeStatus = TradeStatus.PAYERROR;
- // _logger.Info("Ali Query is processing order: " + order.BillNumber);
- // //商户订单号
- // string out_trade_no = order.BillNumber;
- // //商户网站订单系统中唯一订单号,必填
- // var queryResult = Clients((AliPayConfig)order.Config).tradeLoopQuery(out_trade_no, count, interval);
- // if (queryResult.TradeStatus == "TRADE_FINISHED" ||
- // queryResult.TradeStatus == "TRADE_SUCCESS")
- // {
- // order.TradeStatus = TradeStatus.SUCCESS;
- // }
- // else
- // {
- // _logger.Info("Failed due to unknown reason, plesae check your network configuration and cable connection, " +
- // "then retry with a new order number");
- // }
- // _logger.Info("Ali Query process complete, result : \r\n" + queryResult != null ? queryResult.Body : "");
- // return new GenericProcessResponse()
- // {
- // AopResponse = queryResult
- // };
- // }
- // public async Task<GenericProcessResponse> Cancel(ElectronicOrderModel cancelOrder)
- // {
- // _logger.Info("Ali CodePay failure, reverse order " + cancelOrder.BillNumber);
- // return new GenericProcessResponse();
- // }
-
- // /// <summary>
- // /// 构造支付请求数据
- // /// </summary>
- // /// <returns>请求数据集</returns>
- // private AlipayTradePayContentBuilder BuildPayContent(ElectronicOrderModel order)
- // {
- // //线上联调时,请输入真实的外部订单号。
- // string out_trade_no = order.BillNumber;
- // var config = (AliPayConfig)order.Config;
- // //扫码枪扫描到的用户手机钱包中的付款条码
- // AlipayTradePayContentBuilder builder = new AlipayTradePayContentBuilder();
- // //收款账号
- // builder.seller_id = config.pid;
- // //订单编号
- // builder.out_trade_no = out_trade_no;
- // //支付场景,无需修改
- // builder.scene = "bar_code";
- // //支付授权码,付款码
- // builder.auth_code = order.AuthCode.Trim();
- // //订单总金额
- // builder.total_amount = order.NetAmount.ToString();
- // //参与优惠计算的金额
- // //builder.discountable_amount = "";
- // //不参与优惠计算的金额
- // //builder.undiscountable_amount = "";
- // //订单名称
- // builder.subject = order.Title;
- // //自定义超时时间
- // builder.timeout_express = "30m";
- // //订单描述
- // builder.body = "";
- // //门店编号,很重要的参数,可以用作之后的营销
- // builder.store_id = order.SiteId;
- // //操作员编号,很重要的参数,可以用作之后的营销
- // builder.operator_id = order.OperatorId;
- // //传入商品信息详情
- // List<GoodsInfo> gList = new List<GoodsInfo>();
- // order.FuelOrderDetails.ForEach(i =>
- // {
- // GoodsInfo goods = new GoodsInfo();
- // goods.goods_id = i.FuelProductId;
- // goods.goods_name = i.FuelProductName;
- // goods.price = i.Amount.ToString();
- // goods.quantity = i.Qualtity.ToString();
- // gList.Add(goods);
- // });
- // builder.goods_detail = gList;
- // //系统商接入可以填此参数用作返佣
- // //ExtendParams exParam = new ExtendParams();
- // //exParam.sysServiceProviderId = "20880000000000";
- // //builder.extendParams = exParam;
- // return builder;
- // }
- // /// <summary>
- // /// 构造支付请求数据
- // /// </summary>
- // /// <returns>请求数据集</returns>
- // private AlipayTradePrecreateContentBuilder BuildPrecreateContent(ElectronicOrderModel order)
- // {
- // //线上联调时,请输入真实的外部订单号。
- // string out_trade_no = order.BillNumber;
- // var config = (AliPayConfig)order.Config;
- // //扫码枪扫描到的用户手机钱包中的付款条码
- // var builder = new AlipayTradePrecreateContentBuilder();
- // //收款账号
- // builder.seller_id = config.pid;
- // //订单编号
- // builder.out_trade_no = out_trade_no;
- // //订单总金额
- // builder.total_amount = order.NetAmount.ToString();
- // //参与优惠计算的金额
- // //builder.discountable_amount = "";
- // //不参与优惠计算的金额
- // //builder.undiscountable_amount = "";
- // //订单名称
- // builder.subject = order.Title;
- // //自定义超时时间
- // builder.timeout_express = "30m";
- // //订单描述
- // builder.body = "";
- // //门店编号,很重要的参数,可以用作之后的营销
- // builder.store_id = order.SiteId;
- // //操作员编号,很重要的参数,可以用作之后的营销
- // builder.operator_id = order.OperatorId;
- // //传入商品信息详情
- // List<GoodsInfo> gList = new List<GoodsInfo>();
- // order.FuelOrderDetails.ForEach(i =>
- // {
- // GoodsInfo goods = new GoodsInfo();
- // goods.goods_id = i.FuelProductId;
- // goods.goods_name = i.FuelProductName;
- // goods.price = i.Amount.ToString();
- // goods.quantity = i.Qualtity.ToString();
- // gList.Add(goods);
- // });
- // builder.goods_detail = gList;
- // //系统商接入可以填此参数用作返佣
- // //ExtendParams exParam = new ExtendParams();
- // //exParam.sysServiceProviderId = "20880000000000";
- // //builder.extendParams = exParam;
- // return builder;
- // }
- // /// <summary>
- // /// 构造退款请求数据
- // /// </summary>
- // /// <returns>请求数据集</returns>
- // private AlipayTradeRefundContentBuilder BuildRefundContent(ElectronicOrderModel order)
- // {
- // AlipayTradeRefundContentBuilder builder = new AlipayTradeRefundContentBuilder();
- // //支付宝交易号与商户网站订单号不能同时为空
- // builder.out_trade_no = order.BillNumber;
- // //退款请求单号保持唯一性。
- // builder.out_request_no = order.BillNumber + DateTime.Now.ToString();
- // //退款金额
- // builder.refund_amount = order.NetAmount.ToString();
- // builder.refund_reason = "refund from POS";
- // return builder;
- // }
- // }
- //}
|