|
@@ -1,14 +1,23 @@
|
|
|
-using Fuel.Payment.Core.Models;
|
|
|
+using Fuel.Payment.Core;
|
|
|
+using Fuel.Payment.Core.Enum;
|
|
|
+using Fuel.Payment.Core.Models;
|
|
|
+using Fuel.Payment.Core.Models.AllInPay;
|
|
|
using Fuel.Payment.Service;
|
|
|
using Fuel.Payment.Service.AllInPayProcessor.AllInPay.Models;
|
|
|
using Fuel.Payment.Service.AllInPayProcessor.AllInPay.Util;
|
|
|
using Fuel.Payment.Service.Factory;
|
|
|
using Newtonsoft.Json;
|
|
|
+using Org.BouncyCastle.Asn1.X509;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
+using System.Globalization;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
using System.Threading.Tasks;
|
|
|
+using WayneCloud.Models;
|
|
|
+using ElectronicOrderModel = Fuel.Payment.Core.Models.ElectronicOrderModel;
|
|
|
+using ElectronicOrderProcessResultModel = Fuel.Payment.Core.Models.ElectronicOrderProcessResultModel;
|
|
|
+using TradeStatus = Fuel.Payment.Core.Models.TradeStatus;
|
|
|
|
|
|
namespace Fuel.Payment.Service.AllInPayProcessor.AllInPay
|
|
|
{
|
|
@@ -25,15 +34,59 @@ namespace Fuel.Payment.Service.AllInPayProcessor.AllInPay
|
|
|
AllInPayResponse = null
|
|
|
};
|
|
|
}
|
|
|
- public override async Task<GenericProcessResponse> Initialize(ElectronicOrderModel order)
|
|
|
+ /// <summary>
|
|
|
+ /// 支付结果处理
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="processResponse"></param>
|
|
|
+ /// <param name="eOrder"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ protected override async Task<ElectronicOrderModel> PaymentResult(GenericProcessResponse processResponse, ElectronicOrderModel eOrder)
|
|
|
{
|
|
|
- string config = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<AliPayConfig xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <alipay_public_key>alipay_rsa_public_key_dev.pem</alipay_public_key>\r\n <merchant_private_key>rsa_private_key_dev.pem</merchant_private_key>\r\n <merchant_public_key>rsa_public_key_dev.pem</merchant_public_key>\r\n <appId>2021003112655779</appId>\r\n <serverUrl>https://openapi.alipay.com/gateway.do</serverUrl>\r\n <mapiUrl>https://mapi.alipay.com/gateway.do</mapiUrl>\r\n <pid>2088222976038113</pid>\r\n <charset>utf-8</charset>\r\n <sign_type>RSA2</sign_type>\r\n <version>1.0</version>\r\n</AliPayConfig>";
|
|
|
+ var returnCode = ReturnCode.PAY_ERROR;
|
|
|
+ var response = processResponse.AllInPayResponse;
|
|
|
+ if (response != null && eOrder.TradeStatus == TradeStatus.SUCCESS)
|
|
|
+ {
|
|
|
+ returnCode = ReturnCode.OK;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ returnCode = ReturnCode.PAY_ERROR;
|
|
|
+
|
|
|
+ if (!eOrder.IsRefund)
|
|
|
+ {
|
|
|
+ //cancelOrder = true;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<ElectronicOrderProcessResultModel> electronicOrderProcessResultModels = new List<ElectronicOrderProcessResultModel>();
|
|
|
+ electronicOrderProcessResultModels.Add(new ElectronicOrderProcessResultModel()
|
|
|
+ {
|
|
|
+ BillNumber = eOrder.BillNumber,
|
|
|
+ ResultCode = ((int)returnCode).ToString(CultureInfo.InvariantCulture),
|
|
|
+ ResultMessage = returnCode.ToString(),
|
|
|
+ ErrorDetail = response != null && response.ContainsKey("retmsg") ? response["retmsg"] : "",
|
|
|
+ RawResult = response != null && response.ContainsKey("errmsg") ? response["errmsg"] : ""
|
|
|
+ });
|
|
|
+ eOrder.ProcessResults = electronicOrderProcessResultModels;
|
|
|
+ return eOrder;
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// 初始化参数
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="order"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ protected override async Task<GenericProcessResponse> Initialize(ElectronicOrderModel order)
|
|
|
+ {
|
|
|
+ string config = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<TongLianPayConfig xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <appId>00261178</appId>\r\n <subAppId>wx32dbc8c959199561</subAppId>\r\n <cusId>660332055410P91</cusId>\r\n <appKey>qwe1234567</appKey>\r\n <apiVersion>11</apiVersion>\r\n <apiUrl>https://vsp.allinpay.com/apiweb/unitorder</apiUrl>\r\n <notifyUrl></notifyUrl>\r\n <queryInterval>3</queryInterval>\r\n <queryTimeout>90</queryTimeout>\r\n</TongLianPayConfig>";
|
|
|
+ TongLianPayConfig aliPayConfig = TongLianPayConfig.DeserializeFromXmlString(config);
|
|
|
+ order.Config = aliPayConfig;
|
|
|
return new GenericProcessResponse() {
|
|
|
electronicOrderModel = order
|
|
|
};
|
|
|
}
|
|
|
public override async Task<GenericProcessResponse> Process(ElectronicOrderModel order)
|
|
|
{
|
|
|
+ order.Config= Initialize(order).Result?.electronicOrderModel?.Config;
|
|
|
order.TradeStatus = TradeStatus.PAYERROR;
|
|
|
var response = new Dictionary<string, string>();
|
|
|
try
|