Используя трехстороннюю оплату, предоставляемую .NET,
Payment
предоставляет базовые возможности оплаты. В связи с потребностями проекта, на основеPayment
, расширяется поддержка Fuyou (Payment.Fuiou
) и Yinshengbao (Payment.Unspay
). пользователи также могут расширять другие каналы оплаты на основе оплаты;
Я не знаю, чувствуют ли студенты, осуществившие оплату, то же самое, что и я. Я думаю, что аспекты, связанные с оплатой, следующие:
Короче говоря, разумное разделение поможет нам работать на следующем этапе. Как уменьшить связанность между модулями и как повысить масштабируемость — это наш принцип, модули разделены, и принципы работы, я думаю, мы уже поняли. что делать.
Таков образ действий, и мы делаем все возможное, чтобы это произошло. В конце концов, эффект неожиданный, давайте поговорим об этом проекте ниже.
Так называемый agile означает сначала удовлетворение текущей ситуации и прошлой, а также своевременную сортировку, не оставляя технического долга.
Студенты, прочитавшие исходный код, обнаружат, что журнал закомментирован. Это связано с тем, что эта программа является урезанной версией и сильно зависит от журнала платформы. Это очень просто, и мы, конечно, можем добавить его самостоятельно; метод связи не 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 ( ) ) ;
Это просто и удобно? Но... Что мне делать, если я сменю эту учетную запись на Иньшэнбао? Или что мне делать, если я перейду на другой способ оплаты?
Если вы обнаружите эту проблему, мы сможем связаться. В конце концов, эта проблема не сложная, потому что параметр все-таки имеет тип
AbsAccount
, что вы думаете?