注册博客园已经几年了 看得多 写的少 这几年一直瞎忙着 唉
相信很多人都做过支付宝,块钱这类型交易平台的接口,开始的时候,接口不好测试,找相关技术人员不好找,接口里涉及的业务不清不楚。
这里描述下我做这些的思路,设计的不好的地方欢迎吐槽啊
底层接口设计
namespace Business
{
using System;
using System.Collections.Specialized;
/// <summary>
/// 接口: 交易底层规范
/// 编写: leizhongliang
/// </summary>
public interface IBusiness
{
/// <summary>
/// 交易第三方
/// </summary>
BusinessThirdParty ThirdParty { get; }
/// <summary>
/// 交易类型
/// </summary>
BusinessType Type { get; }
/// <summary>
/// 交易返回结果
/// 注意: 每个第三方交易平台的每个业务都有自己的结果类型
/// </summary>
BusinessResultParam Result { get; }
/// <summary>
/// 交易请求
/// </summary>
/// <param name="requestParam">请求配置: 每个第三方交易平台的每个业务都有自己的配置</param>
/// <returns>BusinessSign == SUCCESS 标识成功(唯一标识)</returns>
BusinessSign Request(BusinessRequestParam requestParam);
/// <summary>
/// 用户异步接收第三方返回结果
/// </summary>
/// <param name="coll">返回数据</param>
/// <param name="partner">合作者在第三方身分ID</param>
/// <param name="key">合作伙伴key</param>
/// <returns>BusinessSign == SUCCESS 标识成功(唯一标识)</returns>
BusinessSign Receive(NameValueCollection coll, string partner, string key);
}
}
第三方交易平台枚举
namespace Business
{
using System;
/// <summary>
/// 枚举: 第三方交易平台
/// 编写: leizhongliang
/// </summary>
public enum BusinessThirdParty
{
/// <summary>
/// 空
/// </summary>
Null = 0,
/// <summary>
/// 支付宝
/// </summary>
AliPay = 1,
/// <summary>
/// 财付通
/// </summary>
TenPay = 2,
/// <summary>
/// 汇付天下
/// </summary>
ChinaPay = 3
}
}
第三方交易平台业务枚举 做过统计大体业务都差不多
namespace Business
{
using System;
/// <summary>
/// 枚举: 交易业务
/// 编写: leizhongliang
/// </summary>
public enum BusinessType
{
/// <summary>
/// 即时到账交易
/// 目的: 让支付的钱存在中间帐号, 等待订单操作完成分账
/// </summary>
Payment,
/// <summary>
/// 分账
/// 目的: 当订单操作完成后分账
/// </summary>
Assign,
/// <summary>
/// 支付并分账
/// </summary>
PaymentAndAssign,
/// <summary>
/// 冻结
/// 目的: 分销商申请退款后, 冻结供应商或者平台账户里此个订单的交易金额
/// </summary>
Freeze,
/// <summary>
/// 解除冻结
/// 目的: 平台或者供应商退款前, 解除此订单开始冻结的金额
/// </summary>
UnFreeze,
/// <summary>
/// 分账退回
/// 目的: 退款接口, 退回分账账户的订单交易金额, 退款回中间帐号
/// </summary>
AssignCallBack,
/// <summary>
/// 平台退款
/// 目的: 退款接口, 分账退回完成后, 从中间账户退款回付款账户
/// </summary>
PlatformRefund
}
}
交易返回结果对象BusinessResultParam
BusinessResultParam是个抽象类,每个业务的返回对象都继承这个抽象类
namespace Business
{
using System;
/// <summary>
/// 抽象: 第三方返回结果
/// 编写: leizhongliang
/// </summary>
public abstract class BusinessResultParam { }
}
请求配置对象BusinessRequestParam
BusinessRequestParam是个抽象类 每个业务的请求配置都继承这个抽象类
namespace Business
{
using System;
/// <summary>
/// 第三方交易请求对象抽象
/// 编写: leizhongliang
/// </summary>
public abstract class BusinessRequestParam
{
/// <summary>
/// 提交第三方http/https地址,网关
/// </summary>
public string gateway
{
get;
set;
}
/// <summary>
/// 合作者在第三方身分ID
/// </summary>
public string partner
{
get;
set;
}
/// <summary>
/// 合作伙伴key
/// </summary>
public string key
{
get;
set;
}
}
}
交易业务成功失败标识枚举 BusinessSign
namespace Business
{
using System;
/// <summary>
/// 枚举: 交易标识
/// 编写: leizhongliang
/// </summary>
public enum BusinessSign
{
/// <summary>
/// 成功
/// </summary>
[SignAttribute(CodeDirections = "成功")]
SUCCESS = 0,
/// <summary>
/// 请求参数为空
/// </summary>
[SignAttribute(CodeDirections = "请求参数对象为空")]
PARAM_IS_NULL = 1,
/// <summary>
/// 请求参数订单号码为空
/// </summary>
[SignAttribute(CodeDirections = "请求参数订单号码为空")]
PARAM_OUT_ORDER_IS_NULL = 2
}
}
下班要有事了 暂时就写这么多 改天跟进..