2017-12-28 7 views
1

일부 사용자 기준에 따라 특정 지불 방법을 조건부로 숨길 수 있습니까? 예를 들어NopCommerce - 조건부로 지불 옵션을 숨기기

:

if (!_workContext.CurrentCustomer.IsRegistered()){ 
    // Hide Credit Card payment method 
} 

위의 그냥 예입니다,하지만 난 내가 보여줄 필요가 몇 가지 다른 일에 맞춤 결제 방법 플러그인을 생성하고, 기반 한/숨기기 말했다 프론트 엔드에서 지불 방법 . 생각?

답변

1

예, 여러 가지 방법이 있습니다. 지불 방법 코드 Nop.Web > View > Checkout > opcPaymentMethods.cshtml(한 페이지 체크 아웃)에있는 nopCommerce 3.90

<ul class="method-list" id="payment-method-block"> 
    @for (int i = 0; i < Model.PaymentMethods.Count; i++) 
    { 
     var paymentMethod = Model.PaymentMethods[i]; 
     var paymentMethodName = paymentMethod.Name; 
     if (!String.IsNullOrEmpty(paymentMethod.Fee)) 
     { 
      paymentMethodName = T("Checkout.SelectPaymentMethod.MethodAndFee", paymentMethodName, paymentMethod.Fee).Text; 
      ... 
      .... 
     } 
    } 
</ul> 

내가 IsRegistered 속성을 찾을 수 없습니다, 그래서 내가 조건 경우, 여기에 이메일 주소를 사용하고, 플러그인 시스템의 이름으로 확인 해요 일치하면 해당 지불 방법을 건너 뜁니다.

@using Nop.Core.Infrastructure; 
@using Nop.Core; 

<ul class="method-list" id="payment-method-block"> 
    @for (int i = 0; i < Model.PaymentMethods.Count; i++) 
    {      
     var customerEmail = EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer.Email; 

     var paymentMethod = Model.PaymentMethods[i]; 

     string _paymentMethodSystemName = paymentMethod.PaymentMethodSystemName; 

     if(customerEmail == "[email protected]") 
     { 
     if (_paymentMethodSystemName == "Payments.CheckMoneyOrder") 
     { 
      continue; 
     } 
     } 

     var paymentMethodName = paymentMethod.Name; 
    } 
    ... 
    ..... 

이제 관리자가 CheckMoneyOrder를로드하지 않습니다.

+0

감사합니다. 이것이 내가 필요로 한 것입니다. 답변으로 표시되었습니다. –

+0

다행스럽게 도울 수있었습니다! –