From 4cb523bee320f335100c63df4c8f51ed09fca9eb Mon Sep 17 00:00:00 2001
From: lingling <kety1122@163.com>
Date: 星期四, 20 三月 2025 16:47:07 +0800
Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/LifePaymentApi
---
LifePayment/LifePayment.Domain.Shared/Ali/GetPayQrCodeInput.cs | 10
LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs | 2
LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml | 183 +++++++++++++
LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs | 64 ++++
LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs | 23 +
LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs | 4
LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs | 41 +++
LifePayment/LifePayment.Domain.Shared/WeChat/WxPayPostBaseModel.cs | 10
LifePayment/LifePayment.Domain/Ali/AlipayApiConstant.cs | 2
LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs | 197 +++++++++++++++
LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYConstant.cs | 15 +
LifePayment/LifePayment.Application.Contracts/User/CreateBackClientUserInput.cs | 1
LifePayment/LifePayment.Domain/Ali/IAliPayApi.cs | 2
LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs | 16 +
LifePayment/LifePayment.Domain/Ali/AliPayApi.cs | 6
LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs | 25 +
LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml | 7
LifePayment/LifePayment.Application/LifePay/LifePayService.cs | 125 ++++++++-
LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs | 4
19 files changed, 696 insertions(+), 41 deletions(-)
diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs
index 00d88e3..5fd06b6 100644
--- a/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs
+++ b/LifePayment/LifePayment.Application.Contracts/LifePay/ILifePayService.cs
@@ -10,6 +10,10 @@
public interface ILifePayService : IApplicationService
{
+
+
+ //Task<ElectricParValueResponse> GetTopStatistics();
+
/// <summary>
/// 鑾峰彇鐢佃垂闈㈠��
/// </summary>
@@ -54,8 +58,10 @@
/// <param name="orderNo"></param>
/// <param name="acoolyOrderNo"></param>
/// <param name="status"></param>
+ /// <param name="acoolyStatus"></param>
+ /// <param name="payAmount"></param>
/// <returns></returns>
- Task ACOOLYOrderNotifyHandler(string orderNo, string acoolyOrderNo, LifePayOrderStatusEnum status);
+ Task ACOOLYOrderNotifyHandler(string orderNo, string acoolyOrderNo, LifePayOrderStatusEnum status, ACOOLYStatusEnum acoolyStatus, decimal payAmount);
/// <summary>
/// 鍒涘缓鐢熸椿缂磋垂璇濊垂璁㈠崟
@@ -188,6 +194,14 @@
/// <returns></returns>
Task<PageOutput<LifePayOrderListOutput>> GetLifePayOrderPage(QueryLifePayOrderListInput input);
+
+ /// <summary>
+ /// 鑾峰彇璁㈠崟璇︽儏
+ /// </summary>
+ /// <param name="orderNo"></param>
+ /// <returns></returns>
+ Task<LifePayOrderOutput> GetLifePayOrderDetail(string orderNo);
+
/// <summary>
/// 鏍规嵁璁㈠崟鍙疯幏鍙栨敮浠樼姸鎬�
/// </summary>
diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs
index b9f5cef..5d12f06 100644
--- a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs
+++ b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayInput.cs
@@ -293,6 +293,7 @@
public string RefundCheckRemark { get; set; }
}
+
public class RefundUserLifePayOrderInput : ChannelsBaseInput
{
public Guid Id { get; set; }
@@ -403,7 +404,8 @@
/// <summary>
/// 娉ㄥ唽鏃堕棿
/// </summary>
- public DateTime? CreationTime { get; set; }
+ public DateTime? CreationTimeBegin { get; set; }
+ public DateTime? CreationTimeEnd { get; set; }
}
public class Model_UserAccountExtraProperties
diff --git a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs
index b1fc7b3..6bbd71c 100644
--- a/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs
+++ b/LifePayment/LifePayment.Application.Contracts/LifePay/LifePayOutput.cs
@@ -181,6 +181,11 @@
public decimal RechargeAmount { get; set; }
/// <summary>
+ /// 瀹為檯鍏呭�奸噾棰�
+ /// </summary>
+ public decimal? ActualRechargeAmount { get; set; }
+
+ /// <summary>
/// 浼樻儬閲戦
/// </summary>
public decimal DiscountAmount { get; set; }
@@ -194,6 +199,12 @@
/// 鏀粯鏃堕棿
/// </summary>
public DateTime? PayTime { get; set; }
+
+
+ /// <summary>
+ /// 骞冲彴鎵f閲戦
+ /// </summary>
+ public decimal? PlatformDeductionAmount { get; set; }
/// <summary>
/// 鏀粯鐘舵��
@@ -230,13 +241,30 @@
/// </summary>
public DateTime? RefundTime { get; set; }
-
+ /// <summary>
+ /// 鐢宠閫�娆惧師鍥�
+ /// </summary>
public string RefundApplyRemark { get; set; }
+ /// <summary>
+ /// 椹冲洖鍘熷洜
+ /// </summary>
public string RefundCheckRemark { get; set; }
+ /// <summary>
+ /// 渚涘簲鍟嗚鍗曞彿
+ /// </summary>
public string ACOOLYOrderNo { get; set; }
+ /// <summary>
+ /// 渚涘簲鍟嗚鍗曠姸鎬�
+ /// </summary>
+ public ACOOLYStatusEnum? ACOOLYStatus { get; set; }
+
+ /// <summary>
+ /// 骞冲彴閫�娆剧姸鎬�
+ /// </summary>
+ public LifePayRefundStatusEnum? LifePayRefundStatus { get; set; }
}
public class LifePayOrderListTemplate
@@ -424,6 +452,158 @@
public string ACOOLYOrderNo { get; set; }
}
+public class LifePayOrderOutput
+{
+ public Guid Id { get; set; }
+
+ /// <summary>
+ /// 鐢ㄦ埛璐﹀彿
+ /// </summary>
+ public string UserPhoneNumber { get; set; }
+
+ public string UserName { get; set; }
+
+ public string LifePayChannle { get; set; }
+ /// <summary>
+ /// 鐢熸椿缂磋垂鏀粯绫诲瀷
+ /// </summary>
+ public LifePayTypeEnum? LifePayType { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟绫诲瀷
+ /// </summary>
+ public LifePayOrderTypeEnum LifePayOrderType { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟鍙�
+ /// </summary>
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 鍏呭�奸噾棰�
+ /// </summary>
+ public decimal RechargeAmount { get; set; }
+
+ /// <summary>
+ /// 浼樻儬閲戦
+ /// </summary>
+ public decimal DiscountAmount { get; set; }
+
+ /// <summary>
+ /// 瀹炰粯閲戦
+ /// </summary>
+ public decimal PayAmount { get; set; }
+
+ /// <summary>
+ /// 鏀粯鏃堕棿
+ /// </summary>
+ public DateTime? PayTime { get; set; }
+
+ /// <summary>
+ /// 鏀粯鐘舵��
+ /// </summary>
+ public LifePayStatusEnum PayStatus { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟鐘舵��
+ /// </summary>
+ public LifePayOrderStatusEnum LifePayOrderStatus { get; set; }
+
+ /// <summary>
+ /// 瀹屾垚鏃堕棿
+ /// </summary>
+ public DateTime? FinishTime { get; set; }
+
+ /// <summary>
+ /// 澶栭儴璁㈠崟鍙�
+ /// </summary>
+ public string OutOrderNo { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟璇︾粏鏁版嵁
+ /// </summary>
+ public string OrderParamDetailJsonStr { get; set; }
+
+ /// <summary>
+ /// 涓嬪崟鏃堕棿
+ /// </summary>
+ public DateTime? CreationTime { get; set; }
+
+ /// <summary>
+ /// 閫�娆炬椂闂�
+ /// </summary>
+ public DateTime? RefundTime { get; set; }
+
+ /// <summary>
+ /// 閫�娆惧嚟璇�
+ /// </summary>
+ public string RefundCredentialsImgUrl { get; set; }
+
+
+ public string RefundApplyRemark { get; set; }
+
+ public string RefundCheckRemark { get; set; }
+
+ /// <summary>
+ /// 娓犻亾娴佹按鍙�
+ /// </summary>
+ public string ACOOLYOrderNo { get; set; }
+
+ /// <summary>
+ /// 骞冲彴閫�娆剧姸鎬�
+ /// </summary>
+ public LifePayRefundStatusEnum? LifePayRefundStatus { get; set; }
+
+
+ /// <summary>
+ /// 瀹為檯鍏呭�奸噾棰�
+ /// </summary>
+ public decimal? ActualRechargeAmount { get; set; }
+
+ /// <summary>
+ /// 閫�娆鹃噾棰�
+ /// </summary>
+ public decimal? RefundPrice { get; set; }
+
+ /// <summary>
+ /// 骞冲彴鎶樻墸姣斾緥
+ /// </summary>
+ public decimal? PlatformRate { get; set; }
+
+ /// <summary>
+ /// 骞冲彴鎵f閲戦
+ /// </summary>
+ public decimal? PlatformPrice { get; set; }
+
+ /// <summary>
+ /// 娓犻亾鎶樻墸
+ /// </summary>
+ public decimal? ChannleRate { get; set; }
+
+
+ /// <summary>
+ /// 娓犻亾浣i噾姣斾緥
+ /// </summary>
+ public decimal? ChannlesRakeRate { get; set; }
+
+ /// <summary>
+ /// 娓犻亾浣i噾
+ /// </summary>
+ public decimal? ChannlesRakePrice { get; set; }
+
+ /// <summary>
+ /// 鎵嬬画璐规瘮渚�
+ /// </summary>
+ public decimal PremiumRate { get; set; }
+
+ /// <summary>
+ /// 鎵嬬画璐�
+ /// </summary>
+ public decimal PremiumPrice { get; set; }
+
+ public decimal? Profit { get; set; }
+}
+
public class CreateLifePayOrderOutput
{
public string OrderNo { get; set; }
@@ -504,4 +684,19 @@
public DateTime CreationTime { get; set; }
public bool IsDeleted { get; set; }
+}
+
+public class TopStatisticsOutput
+{
+ /// <summary>
+ /// 璐︽埛浣欓
+ /// </summary>
+ public string Amount { get; set; }
+
+ /// <summary>
+ /// 绱鏀舵
+ /// </summary>
+ public string AccumulatedReceipts { get; set; }
+
+
}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Application.Contracts/User/CreateBackClientUserInput.cs b/LifePayment/LifePayment.Application.Contracts/User/CreateBackClientUserInput.cs
index 89d0e22..2dbdc47 100644
--- a/LifePayment/LifePayment.Application.Contracts/User/CreateBackClientUserInput.cs
+++ b/LifePayment/LifePayment.Application.Contracts/User/CreateBackClientUserInput.cs
@@ -15,6 +15,7 @@
/// 鎵嬫満鍙�
/// </summary>
public string PhoneNumber { get; set; }
+ public string Password { get; set; }
/// <summary>
/// 璐︽埛
diff --git a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
index 4a42663..037418e 100644
--- a/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
+++ b/LifePayment/LifePayment.Application/LifePay/LifePayService.cs
@@ -19,7 +19,10 @@
using Volo.Abp.EventBus.Distributed;
using Z.EntityFramework.Plus;
using ZeroD.Util;
+using Alipay.EasySDK.Payment.Common.Models;
using static LifePayment.Domain.Shared.LifePaymentConstant;
+using ZeroD.Util.Fadd;
+using Nest;
namespace LifePayment.Application;
@@ -166,7 +169,8 @@
{
return await _channelFilter.GetChannelLifePayUserFilter(_lifePayUserRepository).Where(x => x.IsDeleted == false)
.WhereIf(!string.IsNullOrEmpty(input.QueryCondition), x => x.PhoneNumber.Contains(input.QueryCondition) || x.Name.Contains(input.QueryCondition))
- .WhereIf(input.CreationTime.HasValue, x => x.CreationTime.ToString("yyyy-MM-dd") == input.CreationTime.Value.ToString("yyyy-MM-dd"))
+ .WhereIf(input.CreationTimeBegin.HasValue, x => x.CreationTime >= input.CreationTimeBegin)
+ .WhereIf(input.CreationTimeEnd.HasValue, x => x.CreationTime <= input.CreationTimeEnd)
.Select(x =>
new UserListOutput()
{
@@ -218,7 +222,6 @@
/// <returns></returns>
public async Task<PageOutput<LifePayOrderListOutput>> GetLifePayOrderPage(QueryLifePayOrderListInput input)
{
-
var result = await (from a in _channelFilter.GetChannelLifePayOrderFilter(_lifePayOrderRepository)
.WhereIf(input.BeginFinishTime.HasValue, x => x.FinishTime >= input.BeginFinishTime)
.WhereIf(input.EndFinishTime.HasValue, x => x.FinishTime <= input.EndFinishTime)
@@ -254,8 +257,62 @@
RefundCheckRemark = a.RefundCheckRemark,
RefundApplyRemark = a.RefundApplyRemark,
RefundTime = a.RefundTime,
- ChannelName = b.ChannlesName
+ ChannelName = b.ChannlesName,
+ ActualRechargeAmount = a.ActualRechargeAmount,
+ PlatformDeductionAmount = a.PlatformDeductionAmount,
+ ACOOLYStatus = a.ACOOLYStatus,
+ LifePayRefundStatus = a.LifePayRefundStatus,
}).GetPageResult(input.PageModel);
+
+ return result;
+ }
+
+ public async Task<LifePayOrderOutput> GetLifePayOrderDetail(string orderNo)
+ {
+ var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync();
+ var platformRate = await _lifePayRateRepository.FirstOrDefaultAsync(r => r.RateType == LifePayRateTypeEnum.渚涘簲鍟嗘姌鎵d环);
+ var channle = await _lifePayChannlesRep.FirstOrDefaultAsync(r => r.ChannlesNum == order.ChannelId);
+ var premium = await _lifePayPremiumRepository.Where(x => x.IsDeleted == false && x.PremiumType == order.LifePayType).FirstOrDefaultAsync();
+ CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "璁㈠崟涓嶅瓨鍦�");
+ var user = await _lifePayUserRepository.FirstOrDefaultAsync(x => x.Id == order.UserId);
+
+ var channlesRakePrice = (order.PayAmount - (order.PlatformDeductionAmount == null ? 0 : order.PlatformDeductionAmount)) * channle.ChannlesRakeRate / 100;
+ var result = new LifePayOrderOutput()
+ {
+ UserName = user.Name,
+ UserPhoneNumber = user.PhoneNumber,
+ DiscountAmount = order.DiscountAmount,
+ FinishTime = order.FinishTime,
+ Id = order.Id,
+ OutOrderNo = order.OutOrderNo,
+ LifePayChannle = channle.ChannlesName,
+ LifePayOrderStatus = order.LifePayOrderStatus,
+ LifePayOrderType = order.LifePayOrderType,
+ LifePayType = order.LifePayType,
+ OrderNo = order.OrderNo,
+ PayAmount = order.PayAmount,
+ RechargeAmount = order.RechargeAmount,
+ PayStatus = order.PayStatus,
+ PayTime = order.PayTime,
+ OrderParamDetailJsonStr = order.OrderParamDetailJsonStr,
+ RefundCredentialsImgUrl = order.RefundCredentialsImgUrl.GetOssPath(),
+ CreationTime = order.CreationTime,
+ RefundCheckRemark = order.RefundCheckRemark,
+ RefundApplyRemark = order.RefundApplyRemark,
+ RefundTime = order.RefundTime,
+ ACOOLYOrderNo = order.ACOOLYOrderNo,
+ LifePayRefundStatus = order.LifePayRefundStatus,
+ ActualRechargeAmount = order.ActualRechargeAmount,
+ RefundPrice = order.RefundPrice,
+ PlatformRate = platformRate.Rate,
+ PlatformPrice = order.PlatformDeductionAmount,
+ ChannleRate = channle.ChannlesRate,
+ ChannlesRakeRate = channle.ChannlesRakeRate,
+ ChannlesRakePrice = channlesRakePrice.HasValue ? 0 : Math.Round(channlesRakePrice.Value, 2),
+ PremiumRate = premium == null ? 0 : premium.Rate,
+ PremiumPrice = premium == null ? 0 : Math.Round(order.PayAmount * premium.Rate, 2),
+ Profit = (order.PayAmount - order.PlatformDeductionAmount) * (1.00m - channle.ChannlesRakeRate / 100) - (premium == null ? 0 : Math.Round(order.PayAmount * premium.Rate, 2))
+ };
return result;
}
@@ -336,6 +393,8 @@
return result;
}
+
+
/// <summary>
/// 鏍规嵁璁㈠崟鍙疯幏鍙栨敮浠樼姸鎬�
@@ -549,7 +608,7 @@
var orderInput = new CreateLifePayOrderInput
{
- OrderNo = CreateOrderNo(),
+ OrderNo = channle.ChannlesNum + CreateOrderNo(),
LifePayOrderStatus = LifePayOrderStatusEnum.寰呯‘璁�,
LifePayOrderType = LifePayOrderTypeEnum.璇濊垂璁㈠崟,
//LifePayType = input.LifePayType,
@@ -593,7 +652,7 @@
var orderInput = new CreateLifePayOrderInput
{
- OrderNo = CreateOrderNo(),
+ OrderNo = channle.ChannlesNum + CreateOrderNo(),
LifePayOrderStatus = LifePayOrderStatusEnum.寰呯‘璁�,
LifePayOrderType = LifePayOrderTypeEnum.鐢佃垂璁㈠崟,
// LifePayType = input.LifePayType,
@@ -637,7 +696,7 @@
var orderInput = new CreateLifePayOrderInput
{
- OrderNo = CreateOrderNo(),
+ OrderNo = channle.ChannlesNum + CreateOrderNo(),
LifePayOrderStatus = LifePayOrderStatusEnum.寰呯‘璁�,
LifePayOrderType = LifePayOrderTypeEnum.鐕冩皵璁㈠崟,
// LifePayType = input.LifePayType,
@@ -967,7 +1026,7 @@
/// <param name="orderNo"></param>
/// <param name="outOrderNo"></param>
/// <returns></returns>
- public async Task ACOOLYOrderNotifyHandler(string orderNo, string acoolyOrderNo, LifePayOrderStatusEnum status)
+ public async Task ACOOLYOrderNotifyHandler(string orderNo, string acoolyOrderNo, LifePayOrderStatusEnum status, ACOOLYStatusEnum acoolyStatus, decimal payAmount)
{
var order = await _lifePayOrderRepository.Where(x => x.OrderNo == orderNo).FirstOrDefaultAsync();
CheckExtensions.IfTrueThrowUserFriendlyException(order == null, "璁㈠崟涓嶅瓨鍦�");
@@ -978,6 +1037,8 @@
}
order.LifePayOrderStatus = status;
+ order.ACOOLYStatus = acoolyStatus;
+ order.PlatformDeductionAmount = payAmount;
if (acoolyOrderNo.IsNotNullOrEmpty())
{
order.ACOOLYOrderNo = acoolyOrderNo;
@@ -1017,15 +1078,44 @@
throw new UserFriendlyException("褰撳墠璁㈠崟鐘舵�佹棤娉曢��娆�");
}
- /// TODO 閫�娆捐姹傚畬鎴愬悗濡備綍鎿嶄綔
- /// var refundResult = await WxPayDomesticRefunds(order.OrderNo, order.RefundApplyRemark, Convert.ToInt32(order.PayAmount * 100), Convert.ToInt32(order.PayAmount * 100));
+ switch (order.LifePayType)
+ {
+ case LifePayTypeEnum.WxPay:
+ var wxRefundResult = await WxPayDomesticRefunds(order.OrderNo, order.RefundApplyRemark, Convert.ToInt32(order.PayAmount * 100), Convert.ToInt32(order.PayAmount * 100));
+ if (wxRefundResult.Status == "SUCCESS")
+ {
+ order.PayStatus = LifePayStatusEnum.宸查��娆�;
+ order.LifePayOrderStatus = LifePayOrderStatusEnum.宸查��娆�;
+ }
+ else if (wxRefundResult.Status == "PROCESSING")
+ {
+ order.PayStatus = LifePayStatusEnum.閫�娆句腑;
+ order.LifePayOrderStatus = LifePayOrderStatusEnum.閫�娆句腑;
+ }
+ else
+ {
+ throw new UserFriendlyException("閫�娆惧け璐�");
+ }
- order.PayStatus = LifePayStatusEnum.宸查��娆�;
- order.LifePayOrderStatus = LifePayOrderStatusEnum.宸查��娆�;
+ break;
+ case LifePayTypeEnum.AliPay:
+ var aliRefundResult = await AliTradeRefund(new AlipayTradeRefundRequest() { OutTradeNo = order.OrderNo, RefundAmount = order.PayAmount.ToString() });
+ if (aliRefundResult.Code != AlipayResultCode.Success)
+ {
+ throw new UserFriendlyException("閫�娆惧け璐�");
+ }
+
+ order.PayStatus = LifePayStatusEnum.宸查��娆�;
+ order.LifePayOrderStatus = LifePayOrderStatusEnum.宸查��娆�;
+ break;
+ default: throw new UserFriendlyException("閫�娆惧け璐�");
+ }
+
order.RefundCredentialsImgUrl = input.RefundCredentialsImgUrl;
order.RefundCheckRemark = input.RefundCheckRemark;
order.RefundTime = DateTime.Now;
order.RefundCheckUserId = CurrentUser.Id;
+ order.RefundPrice = order.PayAmount;
await _lifePayOrderRepository.UpdateAsync(order);
@@ -1065,7 +1155,7 @@
order.LifePayOrderStatus = LifePayOrderStatusEnum.閫�娆惧緟瀹℃牳;
order.RefundApplyRemark = input.RefundApplyRemark;
- order.RefundTime = DateTime.Now;
+ order.RefundApplyTime = DateTime.Now;
await _lifePayOrderRepository.UpdateAsync(order);
}
@@ -1099,7 +1189,10 @@
return res;
}
-
+ private async Task<AlipayTradeRefundResponse> AliTradeRefund(AlipayTradeRefundRequest input)
+ {
+ return await _aliPayApi.TradeRefund(input);
+ }
public async Task<int> AddUpdateUserAccount(AddUpdateUserAccountInput input)
{
@@ -1371,10 +1464,10 @@
private (decimal PayAmont, decimal DiscountAmount, decimal RechargeAmount) CalculateAmount(decimal amount, decimal rate)
{
/// 姝e父鏀粯
- var payAmount = decimal.Round(amount * rate / 100, 2, MidpointRounding.AwayFromZero);
+ //var payAmount = decimal.Round(amount * rate / 100, 2, MidpointRounding.AwayFromZero);
/// 1鍒嗛挶鏀粯
- //decimal payAmount = 0.01m;
+ decimal payAmount = 0.01m;
CheckExtensions.IfTrueThrowUserFriendlyException(payAmount < 0.01m, "鏀粯閲戦閿欒");
@@ -1494,7 +1587,6 @@
CheckExtensions.IfTrueThrowUserFriendlyException(amount <= 0,
CustomeErrorMessage.SometingMustSometing,
"鑾峰彇鏀粯浜岀淮鐮佹椂閲戦", "澶т簬0");
-
var res = await _wxPayApi.PayTransactionsH5(new PayTransactionsNativeH5
{
Appid = _wxPayOptions.AppID,
@@ -1547,6 +1639,7 @@
return res.QrCode;
}
+
/// <summary>
/// 鏋勯�犲緟绛惧悕瀛楃涓�
/// </summary>
diff --git a/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYConstant.cs b/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYConstant.cs
index 8d96436..8ed9b72 100644
--- a/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYConstant.cs
+++ b/LifePayment/LifePayment.Domain.Shared/ACOOLY/ACOOLYConstant.cs
@@ -62,5 +62,20 @@
public const string PROCESSING = "PROCESSING";
}
+ public static class Status
+ {
+ public const string 鍏呭�兼垚鍔� = "SUCCESS";
+
+ public const string 鍏呭�间腑 = "PROCESSING";
+
+ public const string 鍏呭�煎け璐� = "FAIL";
+
+ public const string 閫�娆句腑 = "REFUNDING";
+
+ public const string 閫�娆惧畬鎴� = "REFUND_CLOSE";
+
+ public const string 澶辫触鍏抽棴 = "FAIL_CLOSE";
+ }
+
public const string NotifyUrl = "/api/ACOOLYNotify/ACOOLYNotify";
}
diff --git a/LifePayment/LifePayment.Domain.Shared/Ali/GetPayQrCodeInput.cs b/LifePayment/LifePayment.Domain.Shared/Ali/GetPayQrCodeInput.cs
index cd0fbd3..d8f195a 100644
--- a/LifePayment/LifePayment.Domain.Shared/Ali/GetPayQrCodeInput.cs
+++ b/LifePayment/LifePayment.Domain.Shared/Ali/GetPayQrCodeInput.cs
@@ -25,4 +25,14 @@
/// </summary>
public string OutTradeNo { get; set; }
}
+
+ public class AlipayTradeRefundRequest
+ {
+ /// <summary>
+ /// 浜ゆ槗鍒涘缓鏃朵紶鍏ョ殑鍟嗘埛璁㈠崟鍙�
+ /// </summary>
+ public string OutTradeNo { get; set; }
+
+ public string RefundAmount { get; set; }
+ }
}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs b/LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs
index 69ba26d..585f39d 100644
--- a/LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs
+++ b/LifePayment/LifePayment.Domain.Shared/Enum/LifePay/LifePayEnum.cs
@@ -35,7 +35,10 @@
寰呴��娆� = 30,
[Description("宸查��娆�")]
- 宸查��娆� = 40,
+ 宸查��娆� = 40,
+
+ [Description("閫�娆句腑")]
+ 閫�娆句腑 = 50,
}
public enum LifePayOrderStatusEnum
@@ -57,6 +60,26 @@
[Description("閫�娆惧け璐�")]
閫�娆惧け璐� = 60,
+
+
+ [Description("閫�娆句腑")]
+ 閫�娆句腑 = 70,
+}
+
+public enum ACOOLYStatusEnum
+{
+ [Description("鍏呭�间腑")]
+ 鍏呭�间腑 = 10,
+ [Description("鍏呭�兼垚鍔�")]
+ 鍏呭�兼垚鍔� = 20,
+ [Description("宸插畬鎴�")]
+ 宸插畬鎴� = 30,
+ [Description("閮ㄥ垎鍏呭�兼垚鍔�")]
+ 閮ㄥ垎鍏呭�兼垚鍔� = 40,
+ [Description("鍏呭�煎け璐�")]
+ 鍏呭�煎け璐� = 50,
+ [Description("宸查��娆�")]
+ 宸查��娆� = 60,
}
public enum LifePayRefundStatusEnum
diff --git a/LifePayment/LifePayment.Domain.Shared/WeChat/WxPayPostBaseModel.cs b/LifePayment/LifePayment.Domain.Shared/WeChat/WxPayPostBaseModel.cs
index 88a9193..d9e2d8b 100644
--- a/LifePayment/LifePayment.Domain.Shared/WeChat/WxPayPostBaseModel.cs
+++ b/LifePayment/LifePayment.Domain.Shared/WeChat/WxPayPostBaseModel.cs
@@ -600,11 +600,6 @@
/// </summary>
public class WxPayDomesticRefundsRequest
{
- /// <summary>
- /// 寰俊鏀粯璁㈠崟鍙� 鍜宱ut_trade_no蹇呴』浜岄�変竴杩涜浼犲弬
- /// </summary>
- [JsonProperty("transaction_id")]
- public string TransactionId { get; set; }
/// <summary>
/// 鍟嗘埛璁㈠崟鍙� 鍜宱ut_trade_no蹇呴』浜岄�変竴杩涜浼犲弬
@@ -630,11 +625,6 @@
[JsonProperty("notify_url")]
public string NotifyUrl { get; set; }
- /// <summary>
- /// 閫�娆捐祫閲戞潵婧�
- /// </summary>
- [JsonProperty("funds_account")]
- public string FundsAccount { get; set; }
/// <summary>
/// 閲戦淇℃伅 蹇呭~
diff --git a/LifePayment/LifePayment.Domain/Ali/AliPayApi.cs b/LifePayment/LifePayment.Domain/Ali/AliPayApi.cs
index 40ccd7c..a64cc72 100644
--- a/LifePayment/LifePayment.Domain/Ali/AliPayApi.cs
+++ b/LifePayment/LifePayment.Domain/Ali/AliPayApi.cs
@@ -33,5 +33,11 @@
AlipayTradeQueryResponse response = Factory.Payment.Common().Query(input.OutTradeNo);
return response;
}
+
+ public async Task<AlipayTradeRefundResponse> TradeRefund(AlipayTradeRefundRequest input)
+ {
+ AlipayTradeRefundResponse response = Factory.Payment.Common().Refund(input.OutTradeNo,input.RefundAmount);
+ return response;
+ }
}
}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Domain/Ali/AlipayApiConstant.cs b/LifePayment/LifePayment.Domain/Ali/AlipayApiConstant.cs
index 7598a2f..482b9fe 100644
--- a/LifePayment/LifePayment.Domain/Ali/AlipayApiConstant.cs
+++ b/LifePayment/LifePayment.Domain/Ali/AlipayApiConstant.cs
@@ -26,6 +26,8 @@
internal const string DataBillErceiptApply = "alipay.data.bill.ereceiptagent.apply";
internal const string DataBillEreceiptQuery = "alipay.data.bill.accountbookereceipt.query";
internal const string DataDataserviceBillDownloadUrlQuery = "alipay.data.dataservice.bill.downloadurl.query";
+
+
}
public class AlipayResultCode
diff --git a/LifePayment/LifePayment.Domain/Ali/IAliPayApi.cs b/LifePayment/LifePayment.Domain/Ali/IAliPayApi.cs
index 13d9afd..8759070 100644
--- a/LifePayment/LifePayment.Domain/Ali/IAliPayApi.cs
+++ b/LifePayment/LifePayment.Domain/Ali/IAliPayApi.cs
@@ -11,5 +11,7 @@
Task<AlipayTradePrecreateResponse> GetAliPayQRCode(GetPayQrCodeInput input);
AlipayTradeQueryResponse OrderInQuiry(OrderInQuiryInput input);
+
+ Task<AlipayTradeRefundResponse> TradeRefund(AlipayTradeRefundRequest input);
}
}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs b/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs
index f48715e..11f6a11 100644
--- a/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs
+++ b/LifePayment/LifePayment.Domain/LifePay/LifePayOrder.cs
@@ -38,6 +38,8 @@
/// </summary>
public decimal RechargeAmount { get; set; }
+
+
/// <summary>
/// 浼樻儬閲戦
/// </summary>
@@ -47,6 +49,11 @@
/// 瀹炰粯閲戦
/// </summary>
public decimal PayAmount { get; set; }
+
+ /// <summary>
+ /// 骞冲彴鎵f閲戦
+ /// </summary>
+ public decimal? PlatformDeductionAmount { get; set; }
/// <summary>
/// 鏀粯鏃堕棿
@@ -74,6 +81,11 @@
public LifePayOrderStatusEnum LifePayOrderStatus { get; set; }
/// <summary>
+ /// 骞冲彴鐘舵��
+ /// </summary>
+ public ACOOLYStatusEnum? ACOOLYStatus { get; set; }
+
+ /// <summary>
/// 瀹屾垚鏃堕棿
/// </summary>
public DateTime? FinishTime { get; set; }
@@ -98,12 +110,41 @@
/// </summary>
public DateTime? RefundTime { get; set; }
+ /// <summary>
+ /// 閫�娆剧敵璇峰師鍥�
+ /// </summary>
public string RefundApplyRemark { get; set; }
+ /// <summary>
+ /// 閫�娆剧敵璇锋椂闂�
+ /// </summary>
+ public DateTime? RefundApplyTime { get; set; }
+
+ /// <summary>
+ /// 椹冲洖鍘熷洜
+ /// </summary>
public string RefundCheckRemark { get; set; }
+ /// <summary>
+ /// 閫�娆惧鏍镐汉
+ /// </summary>
public Guid? RefundCheckUserId { get; set; }
public string? ChannelId { get; set; }
+
+ /// <summary>
+ /// 閫�娆鹃噾棰�
+ /// </summary>
+ public decimal? RefundPrice { get; set; }
+
+ /// <summary>
+ /// 瀹為檯鍏呭�奸噾棰�
+ /// </summary>
+ public decimal? ActualRechargeAmount { get; set; }
+
+ /// <summary>
+ /// 骞冲彴閫�娆剧姸鎬�
+ /// </summary>
+ public LifePayRefundStatusEnum? LifePayRefundStatus { get; set; }
}
}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml b/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml
index d63ca45..760101a 100644
--- a/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml
+++ b/LifePayment/LifePayment.Host/LifePaymentService.HttpApi.xml
@@ -124,6 +124,13 @@
<param name="input"></param>
<returns></returns>
</member>
+ <member name="M:LifePayment.HttpApi.LifePayController.GetLifePayOrderDetail(System.String)">
+ <summary>
+ 鑾峰彇璁㈠崟璇︽儏
+ </summary>
+ <param name="orderNo"></param>
+ <returns></returns>
+ </member>
<member name="M:LifePayment.HttpApi.LifePayController.GetUserLifePayOrderPage(LifePayment.Application.Contracts.QueryLifePayOrderListInput)">
<summary>
鑾峰彇鎴戠殑璁㈠崟鍒嗛〉鏁版嵁
diff --git a/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml b/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml
index 0dad992..863e3a7 100644
--- a/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml
+++ b/LifePayment/LifePayment.Host/LifePaymentServices.Application.Contracts.xml
@@ -42,13 +42,15 @@
<param name="outOrderNo"></param>
<returns></returns>
</member>
- <member name="M:LifePayment.Application.Contracts.ILifePayService.ACOOLYOrderNotifyHandler(System.String,System.String,LifePayment.Domain.Shared.LifePayOrderStatusEnum)">
+ <member name="M:LifePayment.Application.Contracts.ILifePayService.ACOOLYOrderNotifyHandler(System.String,System.String,LifePayment.Domain.Shared.LifePayOrderStatusEnum,LifePayment.Domain.Shared.ACOOLYStatusEnum,System.Decimal)">
<summary>
鏀粯鎴愬姛鍥炶皟澶勭悊
</summary>
<param name="orderNo"></param>
<param name="acoolyOrderNo"></param>
<param name="status"></param>
+ <param name="acoolyStatus"></param>
+ <param name="payAmount"></param>
<returns></returns>
</member>
<member name="M:LifePayment.Application.Contracts.ILifePayService.CreateLifePayPhoneOrder(LifePayment.Application.Contracts.CreateLifePayOrderInput{LifePayment.Application.Contracts.LifePhoneData})">
@@ -173,6 +175,13 @@
鑾峰彇璁㈠崟鍒嗛〉鏁版嵁
</summary>
<param name="input"></param>
+ <returns></returns>
+ </member>
+ <member name="M:LifePayment.Application.Contracts.ILifePayService.GetLifePayOrderDetail(System.String)">
+ <summary>
+ 鑾峰彇璁㈠崟璇︽儏
+ </summary>
+ <param name="orderNo"></param>
<returns></returns>
</member>
<member name="M:LifePayment.Application.Contracts.ILifePayService.GetPayStatusByOrderNo(System.String)">
@@ -501,7 +510,7 @@
鎵嬫満鍙�/鐢ㄦ埛鍚�
</summary>
</member>
- <member name="P:LifePayment.Application.Contracts.QueryUserPageInput.CreationTime">
+ <member name="P:LifePayment.Application.Contracts.QueryUserPageInput.CreationTimeBegin">
<summary>
娉ㄥ唽鏃堕棿
</summary>
@@ -621,6 +630,11 @@
鍏呭�奸噾棰�
</summary>
</member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.ActualRechargeAmount">
+ <summary>
+ 瀹為檯鍏呭�奸噾棰�
+ </summary>
+ </member>
<member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.DiscountAmount">
<summary>
浼樻儬閲戦
@@ -634,6 +648,11 @@
<member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.PayTime">
<summary>
鏀粯鏃堕棿
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.PlatformDeductionAmount">
+ <summary>
+ 骞冲彴鎵f閲戦
</summary>
</member>
<member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.PayStatus">
@@ -669,6 +688,31 @@
<member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.RefundTime">
<summary>
閫�娆炬椂闂�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.RefundApplyRemark">
+ <summary>
+ 鐢宠閫�娆惧師鍥�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.RefundCheckRemark">
+ <summary>
+ 椹冲洖鍘熷洜
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.ACOOLYOrderNo">
+ <summary>
+ 渚涘簲鍟嗚鍗曞彿
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.ACOOLYStatus">
+ <summary>
+ 渚涘簲鍟嗚鍗曠姸鎬�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderListOutput.LifePayRefundStatus">
+ <summary>
+ 骞冲彴閫�娆剧姸鎬�
</summary>
</member>
<member name="P:LifePayment.Application.Contracts.LifePayOrderListTemplate.CreationTime">
@@ -786,6 +830,131 @@
娓犻亾娴佹按鍙�
</summary>
</member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.LifePayType">
+ <summary>
+ 鐢熸椿缂磋垂鏀粯绫诲瀷
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.LifePayOrderType">
+ <summary>
+ 璁㈠崟绫诲瀷
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.OrderNo">
+ <summary>
+ 璁㈠崟鍙�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.RechargeAmount">
+ <summary>
+ 鍏呭�奸噾棰�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.DiscountAmount">
+ <summary>
+ 浼樻儬閲戦
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.PayAmount">
+ <summary>
+ 瀹炰粯閲戦
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.PayTime">
+ <summary>
+ 鏀粯鏃堕棿
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.PayStatus">
+ <summary>
+ 鏀粯鐘舵��
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.LifePayOrderStatus">
+ <summary>
+ 璁㈠崟鐘舵��
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.FinishTime">
+ <summary>
+ 瀹屾垚鏃堕棿
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.OrderParamDetailJsonStr">
+ <summary>
+ 璁㈠崟璇︾粏鏁版嵁
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.CreationTime">
+ <summary>
+ 涓嬪崟鏃堕棿
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.RefundTime">
+ <summary>
+ 閫�娆炬椂闂�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.RefundCredentialsImgUrl">
+ <summary>
+ 閫�娆惧嚟璇�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.ACOOLYOrderNo">
+ <summary>
+ 娓犻亾娴佹按鍙�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.LifePayRefundStatus">
+ <summary>
+ 骞冲彴閫�娆剧姸鎬�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.ActualRechargeAmount">
+ <summary>
+ 瀹為檯鍏呭�奸噾棰�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.RefundPrice">
+ <summary>
+ 閫�娆鹃噾棰�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.PlatformRate">
+ <summary>
+ 骞冲彴鎶樻墸姣斾緥
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.PlatformPrice">
+ <summary>
+ 骞冲彴鎵f閲戦
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.ChannleRate">
+ <summary>
+ 娓犻亾鎶樻墸
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.ChannlesRakeRate">
+ <summary>
+ 娓犻亾浣i噾姣斾緥
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.ChannlesRakePrice">
+ <summary>
+ 娓犻亾浣i噾
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.PremiumRate">
+ <summary>
+ 鎵嬬画璐规瘮渚�
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.LifePayOrderOutput.PremiumPrice">
+ <summary>
+ 鎵嬬画璐�
+ </summary>
+ </member>
<member name="P:LifePayment.Application.Contracts.UserLifePayOrderRefundOutput.Id">
<summary>
璁㈠崟缂栧彿
@@ -851,6 +1020,16 @@
鍒涘缓鏃堕棿
</summary>
</member>
+ <member name="P:LifePayment.Application.Contracts.TopStatisticsOutput.Amount">
+ <summary>
+ 璐︽埛浣欓
+ </summary>
+ </member>
+ <member name="P:LifePayment.Application.Contracts.TopStatisticsOutput.AccumulatedReceipts">
+ <summary>
+ 绱鏀舵
+ </summary>
+ </member>
<member name="P:LifePayment.Application.Contracts.RecordOperateHistoryEto.RelationId">
<summary>
鍏宠仈鍏崇郴ID
diff --git a/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs b/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs
index 8e0e2b9..f9c6aca 100644
--- a/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs
+++ b/LifePayment/LifePayment.HttpApi/LifePay/ACOOLYNotifyController.cs
@@ -53,7 +53,9 @@
var baseInfo = JsonConvert.DeserializeObject<ACOOLYRequestBaseResponse>(body);
var orderNo = string.Empty;
var status = LifePayOrderStatusEnum.寰呯‘璁�;
+ var acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
var acoolyOrderNo = string.Empty;
+ decimal payAmount = 0;
_logger.LogError("ACOOLY鍥炶皟閫氬鐞嗙被鍨嬶細" + baseInfo.Service);
_logger.LogError("ACOOLY鍥炶皟鍐呭锛�" + body);
switch (baseInfo.Service)
@@ -62,29 +64,33 @@
var confirmElectricOrderResponse = JsonConvert.DeserializeObject<ConfirmElectricOrderResponse>(body);
orderNo = confirmElectricOrderResponse.ElectricChargeOrder.OutOrderNo;
acoolyOrderNo = confirmElectricOrderResponse.ElectricChargeOrder.BusiOrderNo;
+ payAmount = confirmElectricOrderResponse.ElectricChargeOrder.PayAmount;
_logger.LogError("ACOOLY鍥炶皟閫氬鐞嗙粨鏋滅姸鎬侊細" + confirmElectricOrderResponse.ElectricChargeOrder.Status);
- /// TODO 鐘舵�佷笉姝g‘
if (!confirmElectricOrderResponse.Success
|| (confirmElectricOrderResponse.Code != ACOOLYConstant.Code.SUCCESS && confirmElectricOrderResponse.Code != ACOOLYConstant.Code.PROCESSING))
{
status = LifePayOrderStatusEnum.宸插け璐�;
+ acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
}
else
- if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Code.SUCCESS)
+ if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.鍏呭�兼垚鍔�)
{
status = LifePayOrderStatusEnum.宸插畬鎴�;
+ acoolyStatus = ACOOLYStatusEnum.鍏呭�兼垚鍔�;
}
else
- if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Code.PROCESSING)
+ if (confirmElectricOrderResponse.ElectricChargeOrder.Status == ACOOLYConstant.Status.鍏呭�间腑)
{
status = LifePayOrderStatusEnum.寰呯‘璁�;
+ acoolyStatus = ACOOLYStatusEnum.鍏呭�间腑;
}
else
{
status = LifePayOrderStatusEnum.宸插け璐�;
+ acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
}
break;
@@ -92,35 +98,81 @@
var confirmPhoneOrderResponse = JsonConvert.DeserializeObject<ConfirmPhoneOrderResponse>(body);
orderNo = confirmPhoneOrderResponse.PhoneChargeOrder.OutOrderNo;
acoolyOrderNo = confirmPhoneOrderResponse.PhoneChargeOrder.BusiOrderNo;
+ payAmount = confirmPhoneOrderResponse.PhoneChargeOrder.PayAmount;
_logger.LogError("ACOOLY鍥炶皟閫氬鐞嗙粨鏋滅姸鎬侊細" + confirmPhoneOrderResponse.PhoneChargeOrder.Status);
if (!confirmPhoneOrderResponse.Success
|| (confirmPhoneOrderResponse.Code != ACOOLYConstant.Code.SUCCESS && confirmPhoneOrderResponse.Code != ACOOLYConstant.Code.PROCESSING))
{
status = LifePayOrderStatusEnum.宸插け璐�;
+ acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
}
else
- if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Code.SUCCESS)
+ if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.鍏呭�兼垚鍔�)
{
status = LifePayOrderStatusEnum.宸插畬鎴�;
+ acoolyStatus = ACOOLYStatusEnum.鍏呭�兼垚鍔�;
}
else
- if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Code.PROCESSING)
+ if (confirmPhoneOrderResponse.PhoneChargeOrder.Status == ACOOLYConstant.Status.鍏呭�间腑)
{
status = LifePayOrderStatusEnum.寰呯‘璁�;
+ acoolyStatus = ACOOLYStatusEnum.鍏呭�间腑;
}
else
{
status = LifePayOrderStatusEnum.宸插け璐�;
+ acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
}
break;
+ case ACOOLYConstant.Sevice.ConfirmGasOrder:
+ var confirmGasOrderResponse = JsonConvert.DeserializeObject<ConfirmGasOrderResponse>(body);
+ orderNo = confirmGasOrderResponse.GasChargeOrder.OutOrderNo;
+ acoolyOrderNo = confirmGasOrderResponse.GasChargeOrder.BusiOrderNo;
+ payAmount = confirmGasOrderResponse.GasChargeOrder.PayAmount;
+ _logger.LogError("ACOOLY鍥炶皟閫氬鐞嗙粨鏋滅姸鎬侊細" + confirmGasOrderResponse.GasChargeOrder.Status);
+ if (!confirmGasOrderResponse.Success
+ || (confirmGasOrderResponse.Code != ACOOLYConstant.Code.SUCCESS && confirmGasOrderResponse.Code != ACOOLYConstant.Code.PROCESSING))
+ {
+ status = LifePayOrderStatusEnum.宸插け璐�;
+ }
+ else
+ if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.鍏呭�兼垚鍔�)
+ {
+ status = LifePayOrderStatusEnum.宸插畬鎴�;
+ // TODO 纭浠�涔堟儏鍐典笅鍙互鍒ゆ柇鏄儴鍒嗗厖鍊兼垚鍔�
+
+ //if (confirmGasOrderResponse.GasChargeOrder.ParValue == confirmGasOrderResponse.GasChargeOrder.PayAmount)
+ //{
+
+ // acoolyStatus = ACOOLYStatusEnum.鍏呭�兼垚鍔�;
+ //}
+ //else
+ //{
+ // acoolyStatus = ACOOLYStatusEnum.閮ㄥ垎鍏呭�兼垚鍔�;
+ //}
+ acoolyStatus = ACOOLYStatusEnum.鍏呭�兼垚鍔�;
+ }
+ else
+
+ if (confirmGasOrderResponse.GasChargeOrder.Status == ACOOLYConstant.Status.鍏呭�间腑)
+ {
+ status = LifePayOrderStatusEnum.寰呯‘璁�;
+ acoolyStatus = ACOOLYStatusEnum.鍏呭�间腑;
+ }
+ else
+ {
+ status = LifePayOrderStatusEnum.宸插け璐�;
+ acoolyStatus = ACOOLYStatusEnum.鍏呭�煎け璐�;
+ }
+ break;
default:
break;
}
- await _lifePayService.ACOOLYOrderNotifyHandler(orderNo, acoolyOrderNo, status);
+ await _lifePayService.ACOOLYOrderNotifyHandler(orderNo, acoolyOrderNo, status, acoolyStatus, payAmount);
}
}
}
\ No newline at end of file
diff --git a/LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs b/LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs
index e057499..28aee15 100644
--- a/LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs
+++ b/LifePayment/LifePayment.HttpApi/LifePay/AliPayNotifyController.cs
@@ -51,7 +51,7 @@
//var serializeRequest = "{\"gmt_create\":\"2025-02-25 13:18:59\",\"charset\":\"UTF-8\",\"seller_email\":\"zfb1@818nb.com\",\"subject\":\"鐢熸椿缂磋垂-璇濊垂\",\"sign\":\"Sp06G1GxrAfDvoHPz9l3DJ20SxhvRzEGFeCGu4LHrSWmEG4OY7MHMx+iJi54ETbdXV0YsyDH9JZD7PWN3HCpEq/wGO4Wh4VSYSe7lqxD6r4f/HFiB0YlrdQoSzjZgYPzLjy6bcdlKRRHOeDkgs2i7TfvIsxWxHs9t0xuS0RlkpdZfb7d7m0EuZ/3v2Cbsj5AHjxb1S2PkO0oQyriYgGQdmkPqILZHwieST+tNEHS4dGFKYu2nkfctAGjWIDv/hKQNY7jEUxsEeG0SnK4TPU8zNplFR9/aKM0Wfwp1pdlaiP2u/d8vOtNh5q+emvaYbKrUkIEFBok8pDLNDta7ZjtVw==\",\"invoice_amount\":\"0.01\",\"buyer_open_id\":\"071xYXDfXBLAI9U11jg_WrH1K6hWq8HYGz0u85xBivf3Sce\",\"notify_id\":\"2025022501222131904087711494539601\",\"fund_bill_list\":\"[{\\\"amount\\\":\\\"0.01\\\",\\\"fundChannel\\\":\\\"ALIPAYACCOUNT\\\"}]\",\"notify_type\":\"trade_status_sync\",\"trade_status\":\"TRADE_SUCCESS\",\"receipt_amount\":\"0.01\",\"buyer_pay_amount\":\"0.01\",\"app_id\":\"2021004171602214\",\"sign_type\":\"RSA2\",\"seller_id\":\"2088050542042301\",\"gmt_payment\":\"2025-02-25 13:19:03\",\"notify_time\":\"2025-02-25 13:44:34\",\"merchant_app_id\":\"2021004171602214\",\"version\":\"1.0\",\"out_trade_no\":\"JF202502251318555214671\",\"total_amount\":\"0.01\",\"trade_no\":\"2025022522001487711401331043\",\"auth_app_id\":\"2021004171602214\",\"buyer_logon_id\":\"130****2238\",\"point_amount\":\"0.00\"}";
var input = JsonConvert.DeserializeObject<AliRechargeNotifyInput>(serializeRequest);
- if (input.OutTradeNo.StartsWith("JF") && Regex.IsMatch(input.OutTradeNo, @"^JF\d+$"))
+ if (input.OutTradeNo.Contains("JF"))
{
if (input.TradeStatus == LifePaymentConstant.AliPayStatus.鏀粯鎴愬姛)
{
@@ -72,7 +72,7 @@
[AllowAnonymous]
public async Task<ContentResult> TestAliRechargeNotify(string outTradeNo, string tradeNo, bool success)
{
- if (outTradeNo.StartsWith("JF") && Regex.IsMatch(outTradeNo, @"^JF\d+$"))
+ if (outTradeNo.Contains("JF"))
{
if (success)
{
diff --git a/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs b/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs
index 78fcb0a..0f24eca 100644
--- a/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs
+++ b/LifePayment/LifePayment.HttpApi/LifePay/LifePayController.cs
@@ -36,6 +36,17 @@
#region 鏌ヨ
/// <summary>
+ /// 鑾峰彇椤堕儴缁熻鏁版嵁
+ /// </summary>
+ /// <returns></returns>
+ //[HttpGet]
+ //[AllowAnonymous]
+ //public async Task<TopStatisticsOutput> GetTopStatistics()
+ //{
+ // return await _lifePayService.GetTopStatistics();
+ //}
+
+ /// <summary>
/// 鑾峰彇鐢佃垂闈㈠��
/// </summary>
/// <returns></returns>
@@ -181,6 +192,18 @@
}
/// <summary>
+ /// 鑾峰彇璁㈠崟璇︽儏
+ /// </summary>
+ /// <param name="orderNo"></param>
+ /// <returns></returns>
+ [HttpGet]
+ public async Task<LifePayOrderOutput> GetLifePayOrderDetail(string orderNo)
+ {
+ return await _lifePayService.GetLifePayOrderDetail(orderNo);
+ }
+
+
+ /// <summary>
/// 鑾峰彇鎴戠殑璁㈠崟鍒嗛〉鏁版嵁
/// </summary>
/// <param name="input"></param>
diff --git a/LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs b/LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs
index 54d3114..430f3ac 100644
--- a/LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs
+++ b/LifePayment/LifePayment.HttpApi/LifePay/WxPayNotifyController.cs
@@ -48,7 +48,7 @@
var data = _wxPayApi.AesGcmDecrypt(input.Resource.AssociatedData, input.Resource.Nonce, input.Resource.Ciphertext);
var wxPayNotice = JsonConvert.DeserializeObject<WxPayNotice>(data);
- if (wxPayNotice.OutTradeNo.StartsWith("JF") && Regex.IsMatch(wxPayNotice.OutTradeNo, @"^JF\d+$"))
+ if (wxPayNotice.OutTradeNo.Contains("JF") )
{
if (wxPayNotice.TradeState == LifePaymentConstant.WxPayStatus.鏀粯鎴愬姛)
{
--
Gitblit v1.9.1