如何在支付网关微服务中实现代码重用



我正在解决的问题是希望在微服务中的不同支付网关之间重用代码。假设我想在我的控制器中有一个makePayment((方法。添加一些关于代码外观的粗略方法:

控制器

Response makePayment(@RequestBody request){
if(request.gateway == PAYU){
// call PayU service
}
else if(request.gateway == Paypal){
}
}

服务

Entity payuservice(request){
// request.method ??
}

实体

class Entity {
String mode; // CC,DC, Wallet
String status;
...
}

存储库

interface PayuRepository {
}

所以我的问题加起来就是

  1. 我想在不同的支付网关之间重用代码。当我在请求中有网关名称以及表单中的付款详细信息时,我可以在这里做什么
  2. 我需要在后端考虑不同的方法吗?对于不同的方法,实体只会有不同的值?例如,UPI会有一个额外的字段3( 对于不同的网关或不同的表,我需要不同的存储库吗

您可以通过混合使用Adapter和Strategy设计模式来实现一些不错的效果。该策略将决定运行哪种特定于网关的代码,适配器将把支付请求转换为网关模型(反之亦然(。

最新更新