باستخدام الدفع ثلاثي الأطراف الذي توفره .NET، يوفر
Payment
إمكانات الدفع الأساسية نظرًا لاحتياجات المشروع، بناءً علىPayment
، يتم توسيع دعم Fuyou (Payment.Fuiou
) وYinshengbao (Payment.Unspay
) بالطبع. يمكن للمستخدمين أيضًا توسيع قنوات الدفع الأخرى بناءً على الدفع؛
لا أعرف ما إذا كان الطلاب الذين قاموا بالدفع يشعرون بنفس الشعور الذي أشعر به، وأعتقد أن الجوانب المتعلقة بالدفع هي كما يلي:
باختصار، سيساعدنا التقسيم المعقول في العمل في الخطوة التالية، وكيفية تقليل الاقتران بين الوحدات وكيفية زيادة قابلية التوسع هو مبدأنا؛ ومبادئ القيام بالأشياء واضحة بالفعل خارج ما يجب القيام به.
هذه هي الطريقة للقيام بالأشياء، ونحن نبذل قصارى جهدنا لتحقيق ذلك، ففي النهاية، التأثير غير متوقع، فلنتحدث عن هذا المشروع أدناه.
إن ما يسمى بالمرونة يعني أولاً تلبية الوضع الحالي والماضي، وتسويته في الوقت المناسب دون ترك أي ديون فنية.
سيجد الطلاب الذين قرأوا الكود المصدري أن السجل قد تم التعليق عليه، وذلك لأن هذا البرنامج عبارة عن نسخة مقطوعة ويعتمد بشدة على سجل النظام الأساسي. وهذا أمر بسيط جدًا ويمكننا إضافته بأنفسنا بالطبع طريقة الاتصال ليست http، في هذا الوقت يمكننا أن نذكر طبقة أخرى من ICommunicate،
原则是一样的,但是富有很强的灵活性,使我们所需掌握的
!
خذ المعلمات المتغيرة كمثال:
/// <summary>
/// 支付基础参数
/// </summary>
public abstract class BaseParemetor : AbsAccount
{
#region Abstract Method
/// <summary>
/// 获取格式数据
/// </summary>
/// <returns></returns>
public abstract IDictionary < string , string > GetFormatData ( ) ;
/// <summary>
/// 获取访问的路径
/// </summary>
/// <returns></returns>
public abstract string GetRequestUrl ( ) ;
#endregion
}
public class FuiouParemetor : BaseParemetor
{
.. . .. .
/// <summary>
/// 获取签名数据
/// </summary>
/// <returns></returns>
public virtual string GetSignature ( )
{
.. . .. .
}
/// <summary>
/// 获取富有格式数据
/// </summary>
/// <returns></returns>
public override IDictionary < string , string > GetFormatData ( )
{
.. . .. .
}
public override string GetRequestUrl ( )
{
.. . .. .
}
.. . .. .
}
/// <summary>
/// 参数:42 商户P2P网站免登录用户更换银行卡接口
/// </summary>
public class ChangeCardParemetor : FuiouParemetor
{
/// <summary>
/// 个人用户
/// </summary>
[ Paremetor ( "login_id" ) ]
public string User { get ; set ; }
/// <summary>
/// 商户返回地址
/// </summary>
[ Paremetor ( "page_notify_url" ) ]
public string NotifyUrl { get ; set ; }
/// <summary>
/// 字段
/// </summary>
/// <returns></returns>
protected override string [ ] GetDataFields ( )
{
return new string [ ] { "login_id" , "mchnt_cd" , "mchnt_txn_ssn" , "page_notify_url" , "signature" } ;
}
/// <summary>
/// 获取访问的路径
/// </summary>
/// <returns></returns>
public override string GetRequestUrl ( )
{
return FuiouConfig . ApiAddress [ "Fuyou.ChangeCard.Action" ] ;
}
/// <summary>
/// 设置验证字段
/// </summary>
/// <returns></returns>
protected override IEnumerable < VALIDATE > SetValiDateFields ( )
{
yield return VALIDATE . NOTNULLANDLIMITLENGTH ( this . User , 11 , "用户登录ID" ) ;
yield return VALIDATE . NOTNULLANDLIMITLENGTH ( this . NotifyUrl , 200 , "商户前端接收交易结果地址" ) ;
}
}
/// <summary>
/// 银生宝基础接口
/// </summary>
public class UnspayParemetor : BaseParemetor
{
.. . .. .
/// <summary>
/// 获取签名数据
/// </summary>
/// <returns></returns>
public virtual string GetSignature ( )
{
.. . .. .
}
public override IDictionary < string , string > GetFormatData ( )
{
.. . .. .
}
.. . .. .
}
var response = new Provider ( ) . Process ( new Payment . Fuiou . Paremetors . ChangeCardParemetor ( ) ) ;
هل هي بسيطة ومريحة؟ لكن...؟ ماذا علي أن أفعل إذا قمت بتغيير هذا الحساب إلى Yinshengbao؟ أو ماذا أفعل إذا قمت بالتغيير إلى طريقة دفع أخرى؟
إذا وجدت هذه المشكلة، فيمكننا التواصل بعد كل شيء، هذه المشكلة ليست صعبة، لأن المعلمة من نوع
AbsAccount
بعد كل شيء، ما رأيك؟