feat: 完成支付宝接入
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user