using Fuel.Payment.Core;
using Fuel.Payment.Core.Enum;
using Fuel.Payment.Core.Models;
using Fuel.Payment.Service.Factory;
using Org.BouncyCastle.Asn1.X509;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using WayneCloud.Models;
using ElectronicOrderModel = Fuel.Payment.Core.Models.ElectronicOrderModel;
using FuelOrderDetailModel = Fuel.Payment.Core.Models.FuelOrderDetailModel;
namespace Fuel.Payment.Service.Pay
{
public class PayService: IPayService
{
///
/// 支付处理
///
///
///
public async Task PerformElectronicProcess(string AuthCode)
{
string billNumber = SequenceNumber.Next();
ElectronicOrderModel eOrder = new ElectronicOrderModel
{
Channel = "ALL_IN_SCAN",
IsRefund = false,
AuthCode = AuthCode,
BillNumber = billNumber,
NetAmount = 0.01M,
Title = "Wayne Payment",
FuelOrderDetails = new List(),
OperatorId = "001",
SiteId = "66668888",
Config = ""
};
var eProcessor = AsyncPaymentProcessorFactory.Default.Get(eOrder);
//var payConfig = await eProcessor.Initialize(eOrder).ConfigureAwait(false);
//eOrder.Config = payConfig.electronicOrderModel?.Config;
var genericResponseAlipay = await eProcessor.Process(eOrder).ConfigureAwait(false);
//var Result = await eProcessor.PaymentResult(genericResponseAlipay, eOrder).ConfigureAwait(false);
return new ServiceResponse { StatusCode = HttpStatusCode.OK, Data = genericResponseAlipay };
}
private string GetPaymentChannelByPaymentId(PaymentID paymentID)
{
var channel = String.Empty;
switch (paymentID)
{
case PaymentID.AliPay:
channel = "ALI_SCAN";
break;
case PaymentID.AliPayQrScan:
channel = "ALI_ORDER_SCAN";
break;
case PaymentID.WechatPay:
channel = "WX_SCAN";
break;
case PaymentID.WechatQrScan:
channel = "WX_ORDER_SCAN";
break;
case PaymentID.AllInPay:
channel = "ALL_IN_SCAN";
break;
case PaymentID.AllInPayV2:
channel = "ALL_IN_SCAN_V2";
break;
case PaymentID.MembershipMobilePay:
case PaymentID.MiniProgram:
channel = "WECHAT_MINIPROGRAM_PAY";
break;
case PaymentID.IcbcPay:
channel = "ICBC_SCAN";
break;
case PaymentID.IcbcPayQrScan:
channel = "ICBC_ORDER_SCAN";
break;
case PaymentID.MiniUnionPay:
channel = "UNION_MINI";
break;
case PaymentID.UnionPay:
channel = "UNION_SCAN";
break;
case PaymentID.GrgbankingPay:
channel = "GRG_SCAN";
break;
default:
break;
}
return channel;
}
}
}