註冊博客園已經幾年了 看得多 寫的少 這幾年一直瞎忙着 唉異步
相信不少人都作過支付寶,塊錢這類型交易平臺的接口,開始的時候,接口很差測試,找相關技術人員很差找,接口裏涉及的業務不清不楚。測試
這裏描述下我作這些的思路,設計的很差的地方歡迎吐槽啊spa
底層接口設計設計
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); } }
第三方交易平臺枚舉orm
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 } }
交易返回結果對象BusinessResultParamblog
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 } }
下班要有事了 暫時就寫這麼多 改天跟進..