Payment
.NET에서 제공하는 3자 결제를 사용하여 프로젝트의 요구에 따라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
유형이므로 이 문제는 어렵지 않습니다. 어떻게 생각하시나요?