|
@@ -14,11 +14,13 @@ using WingPaymentService.Common;
|
|
|
using WingInterfaceLibrary.Enum;
|
|
|
using WingInterfaceLibrary.Request;
|
|
|
using WingPaymentService.Common.WeChat;
|
|
|
+using WingInterfaceLibrary.Request.Courses;
|
|
|
|
|
|
namespace WingPaymentService.Service
|
|
|
{
|
|
|
public class PaymentService : JsonRpcService, IPaymentService
|
|
|
{
|
|
|
+ private IEducationService _educationService;
|
|
|
private IAuthenticationService _authenticationService;
|
|
|
private IPaymentDBService _paymentDBService;
|
|
|
private AlipayCommon _alipayCommon;
|
|
@@ -30,6 +32,7 @@ namespace WingPaymentService.Service
|
|
|
base.Load(jsonRpcClientPool);
|
|
|
_paymentDBService = GetProxy<IPaymentDBService>();
|
|
|
_authenticationService = GetProxy<IAuthenticationService>();
|
|
|
+ _educationService = GetProxy<IEducationService>();
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 购买接口
|
|
@@ -176,10 +179,11 @@ namespace WingPaymentService.Service
|
|
|
var totalAmount = keyValuePairs.GetValueOrDefault("total_amount");
|
|
|
var paymentRecordCode = keyValuePairs.GetValueOrDefault("pay_record_code");
|
|
|
var payStatus = keyValuePairs.GetValueOrDefault("trade_status") == "TRADE_SUCCESS" ? WingInterfaceLibrary.Enum.PayStatusEnum.Paid : WingInterfaceLibrary.Enum.PayStatusEnum.NoPay;
|
|
|
- await UpdatePayStatus(paymentRecordCode, payStatus, uriParams);
|
|
|
+ var payTime = DateTime.UtcNow;
|
|
|
+ await UpdatePayStatus(paymentRecordCode, payStatus, uriParams, payTime);
|
|
|
if(payStatus == PayStatusEnum.Paid)
|
|
|
{
|
|
|
- return await UpdateOrderStatus(payOutTradeNo, payStatus, totalAmount);
|
|
|
+ return await UpdateOrderStatus(payOutTradeNo, payStatus, totalAmount, payTime);
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
@@ -193,15 +197,17 @@ namespace WingPaymentService.Service
|
|
|
var totalAmount = (double.Parse(paramValues.GetValueOrDefault("total_fee")?.ToString())/100).ToString("0.00");
|
|
|
var payRecordCode = paramValues.GetValueOrDefault("pay_record_code")?.ToString();
|
|
|
var payStatus = paramValues.GetValueOrDefault("result_code")?.ToString() == "SUCCESS" ? PayStatusEnum.Paid : PayStatusEnum.NoPay;
|
|
|
- await UpdatePayStatus(payRecordCode, payStatus, request);
|
|
|
+ var payTime = DateTime.UtcNow;
|
|
|
+ await UpdatePayStatus(payRecordCode, payStatus, request, payTime);
|
|
|
if(payStatus == PayStatusEnum.Paid)
|
|
|
{
|
|
|
- return await UpdateOrderStatus(payOutTradeNo, payStatus, totalAmount);
|
|
|
+ var result = await UpdateOrderStatus(payOutTradeNo, payStatus, totalAmount, payTime);
|
|
|
+ return result;
|
|
|
}
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- private async Task<bool> UpdateOrderStatus(string orderCode, PayStatusEnum payStatus, string totalAmount)
|
|
|
+ private async Task<bool> UpdateOrderStatus(string orderCode, PayStatusEnum payStatus, string totalAmount, DateTime payTime)
|
|
|
{
|
|
|
var orderInfo = await _paymentDBService.GetOrderDetailAsync(new GetOrderDetailDBRequest{ OrderCode = orderCode});
|
|
|
if(orderInfo.OrderAmount.ToString("0.00") != totalAmount)
|
|
@@ -213,14 +219,19 @@ namespace WingPaymentService.Service
|
|
|
OrderCode = orderCode,
|
|
|
PayStatus = payStatus
|
|
|
});
|
|
|
+ await _educationService.PaymentCallbackAsync(new PaymentCallbackRequest{
|
|
|
+ PaymentOrderCode = orderCode,
|
|
|
+ PayStatus = payStatus,
|
|
|
+ PayTime = payTime
|
|
|
+ });
|
|
|
return result.IsSuccess;
|
|
|
}
|
|
|
|
|
|
- private async Task<UpdatePaymentRecordResultDTO> UpdatePayStatus(string paymentRecordCode, PayStatusEnum payStatus, string payResContent)
|
|
|
+ private async Task<UpdatePaymentRecordResultDTO> UpdatePayStatus(string paymentRecordCode, PayStatusEnum payStatus, string payResContent, DateTime payTime)
|
|
|
{
|
|
|
var updateRecordInfo = new UpdatePaymentRecordDBRequest();
|
|
|
updateRecordInfo.Code = paymentRecordCode;
|
|
|
- updateRecordInfo.PayTime = DateTime.UtcNow;
|
|
|
+ updateRecordInfo.PayTime = payTime;
|
|
|
updateRecordInfo.PayStatus = payStatus;
|
|
|
updateRecordInfo.PayResContent = payResContent;
|
|
|
return await _paymentDBService.UpdatePaymentRecordAsync(updateRecordInfo);
|