feat: 完成支付宝接入

This commit is contained in:
chenchun
2025-08-13 12:07:35 +08:00
parent 9332b17fc1
commit 0ba4e3240b
14 changed files with 751 additions and 21 deletions

View File

@@ -0,0 +1,92 @@
using System;
using System.Reflection;
namespace Yi.Framework.AiHub.Domain.Shared.Enums;
/// <summary>
/// 价格特性
/// </summary>
[AttributeUsage(AttributeTargets.Field)]
public class PriceAttribute : Attribute
{
public decimal Price { get; }
public PriceAttribute(double price)
{
Price = (decimal)price;
}
}
/// <summary>
/// 显示名称特性
/// </summary>
[AttributeUsage(AttributeTargets.Field)]
public class DisplayNameAttribute : Attribute
{
public string DisplayName { get; }
public DisplayNameAttribute(string displayName)
{
DisplayName = displayName;
}
}
/// <summary>
/// 商品枚举
/// </summary>
public enum GoodsTypeEnum
{
[Price(29.9)]
[DisplayName("意心Vip会员1个月")]
YiXinVip1 = 1,
[Price(80.7)]
[DisplayName("意心Vip会员3个月")]
YiXinVip3 = 3,
[Price(143.9)]
[DisplayName("意心Vip会员6个月")]
YiXinVip6 = 6,
[Price(199.9)]
[DisplayName("意心Vip会员10个月")]
YiXinVip10 = 10
}
public static class GoodsTypeEnumExtensions
{
/// <summary>
/// 获取商品总金额
/// </summary>
/// <param name="goodsType">商品类型</param>
/// <returns>总金额</returns>
public static decimal GetTotalAmount(this GoodsTypeEnum goodsType)
{
var fieldInfo = goodsType.GetType().GetField(goodsType.ToString());
var priceAttribute = fieldInfo?.GetCustomAttribute<PriceAttribute>();
return priceAttribute?.Price ?? 0m;
}
/// <summary>
/// 获取商品价格描述
/// </summary>
/// <param name="goodsType">商品类型</param>
/// <returns>价格描述</returns>
public static string GetPriceDescription(this GoodsTypeEnum goodsType)
{
var price = goodsType.GetTotalAmount();
return $"¥{price:F1}";
}
/// <summary>
/// 获取商品名称
/// </summary>
/// <param name="goodsType">商品类型</param>
/// <returns>商品名称</returns>
public static string GetDisplayName(this GoodsTypeEnum goodsType)
{
var fieldInfo = goodsType.GetType().GetField(goodsType.ToString());
var displayNameAttribute = fieldInfo?.GetCustomAttribute<DisplayNameAttribute>();
return displayNameAttribute?.DisplayName ?? goodsType.ToString();
}
}

View File

@@ -0,0 +1,29 @@
namespace Yi.Framework.AiHub.Domain.Shared.Enums;
public enum TradeStatusEnum
{
/// <summary>
/// 准备发起
/// </summary>
WAIT_TRADE = 0,
/// <summary>
/// 交易创建
/// </summary>
WAIT_BUYER_PAY = 10,
/// <summary>
/// 交易关闭
/// </summary>
TRADE_CLOSED = 20,
/// <summary>
/// 交易成功
/// </summary>
TRADE_SUCCESS = 100,
/// <summary>
/// 交易结束
/// </summary>
TRADE_FINISHED = -10
}