2017-04-21 8 views
0

私たちはMagentoにいくつかの拡張機能を使用しています。その1つはPaypalplusであり、必須です。Magento Paypalplus - PHP経由で支払い方法を無効にする

今、私たちは、ギフトクーポンを販売したいと思います。これは明らかにPaypalによって禁じられています。 PayPayplusを無効にするか、少なくとも支払い方法のいくつかを無効にする必要があります。

最初に完全に非アクティブにして、Javascriptが壊れてしまい、Magentoによって注文が拒否されました。 PPPが有効になっていると、他のビルトインメソッドはJをロードせず、代わりにカートにギフトクーポンが存在するときにロードされていないPPP-Jを使用しようとします。

私はそれ自身のすべてのメソッドをレンダリングする独自のJを使用して、禁止された支払いメソッドを無効にしようとしました。

window.ppp = PAYPAL.apps.PPP({ ... }) 

これは、PPP Jsを設定する必要があります。しかし、私はそれが不可能であるかどうか、オブジェクトに渡される引数、または部分的にまたは完全に無効化することを知っていません 独自の支払方法。誰でもそれを教えてもらえますか?私はしばらく時間を探しますが、このAPIに関するドキュメントを見つけることができません。ここで

は、MagentoのPPP-拡張に含まれ、PPPをレンダリングする必要があり、完全なコードです:

<div id="ppplus"></div> 
<script type="text/javascript"> 
    if(typeof payment == 'undefined') { 
     var payment = {}; 
    } 
    function selectMethod(code) { 
     try { 
      if(typeof awOSCPayment != "undefined") { 
       awOSCPayment.currentMethod = code; 
      } 
     } catch (e) { 

     } 
     document.getElementById('p_method_' + code).click(); 
    } 
    window.externMethodEnabled = false; 
    window.startPPP = function() { 
     if(typeof window.thirdPartyObject == 'undefined') { 
      window.thirdPartyObject = <?php echo $this->getThirdPartyJsonObject(); ?>; 
      window.thirdPartyMethodObject = <?php echo $this->getThirdPartyMethodJsonObject(); ?>; 
     } 
     document.cookie = 'paypalplus_session=; Path=/checkout/onepage; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 
     document.cookie = 'paypalplus_session=; Path=/checkout; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 
     document.cookie = 'paypalplus_session=; Path=/firecheckout; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 
     document.cookie = 'paypalplus_session=; Path=/onestepcheckout; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 
     window.pppId = '<?php echo $this->getPayPalPaymentId(); ?>'; 
     selectMethod('<?php echo Iways_PayPalPlus_Model_Payment::METHOD_CODE; ?>'); 
     window.ppp = PAYPAL.apps.PPP(
      { 
       approvalUrl: "<?php echo $paymentExperience; ?>", 
       placeholder: "ppplus", 
       mode: "<?php echo Mage::getStoreConfig('iways_paypalplus/api/mode'); ?>", 
       useraction:"commit", 
       buttonLocation:"outside", 
       <?php if($this->isPuiSandboxMode()) : ?> 
       showPuiOnSandbox: true, 
       <?php endif; ?> 
       <?php if($this->showLoadingIndicator()) : ?> 
       showLoadingIndicator: true, 
       <?php endif; ?> 
       country:"<?php echo $this->getCountryId(); ?>", 
       language:"<?php echo $this->getLanguage(); ?>", 
       onContinue: function() { 
        payment.save() 
       }, 
       onThirdPartyPaymentMethodSelected:function (data) { 
        this.lastCall = 'onThirdPartyPaymentMethodSelected'; 
        selectMethod(window.thirdPartyObject[data.thirdPartyPaymentMethod]); 
       }, 
       enableContinue: function (data) { 
        if(this.lastCall != 'onThirdPartyPaymentMethodSelected') { 
         selectMethod('<?php echo Iways_PayPalPlus_Model_Payment::METHOD_CODE; ?>'); 
        } 
        this.lastCall = 'enableContinue'; 
        try { 
         if($$('#payment-buttons-container > button').length > 0) { 
          $$('#payment-buttons-container > button')[0].enable(); 
         } 
         if($('onestepcheckout-place-order') != null) { 
          $('onestepcheckout-place-order').enable(); 
         } 
         if($$('#review-buttons-container > button').length > 0) { 
          $$('#review-buttons-container > button')[0].enable(); 
         } 
         if($('onestepcheckout-button-place-order') != null) { 
          $('onestepcheckout-button-place-order').enable(); 
         } 
         if($$('#checkout-review-submit > button.opc-btn-checkout').length > 0) { 
          $$('#checkout-review-submit > button.opc-btn-checkout')[0].enable(); 
         } 
         if($$('#aw-onestepcheckout-place-order-button').length > 0) { 
          $$('#aw-onestepcheckout-place-order-button')[0].enable(); 
         } 
        }catch (e) { 
         console.log(e); 
        } 
       }, 
       disableContinue: function (data) { 
        if(!window.externMethodEnabled) { 
         try { 
          if($$('#payment-buttons-container > button').length > 0) { 
           $$('#payment-buttons-container > button')[0].disable(); 
          } 
          if($('onestepcheckout-place-order') != null) { 
           $('onestepcheckout-place-order').disable(); 
          } 
          if($$('#review-buttons-container > button').length > 0) { 
           $$('#review-buttons-container > button')[0].disable(); 
          } 
          if($('onestepcheckout-button-place-order') != null) { 
           $('onestepcheckout-button-place-order').disable(); 
          } 
          if($$('#checkout-review-submit > button.opc-btn-checkout').length > 0) { 
           $$('#checkout-review-submit > button.opc-btn-checkout')[0].disable(); 
          } 
          if($$('#aw-onestepcheckout-place-order-button').length > 0) { 
           $$('#aw-onestepcheckout-place-order-button')[0].disable(); 
          } 
         }catch (e) { 
          console.log(e); 
         } 
        } 
       }, 
       <?php echo $this->getThirdPartyMethods(); ?> 
      }); 
    } 
    window.startPPP(); 
    function checkStep() { 
     try { 
      if(typeof window.checkout != 'undefined' && typeof window.lastStep == 'undefined') { 
       window.lastStep = window.checkout.accordion.currentSection; 
      } 
      if (typeof window.lastStep != 'undefined' && window.lastStep != window.checkout.accordion.currentSection) { 
       window.lastStep = checkout.accordion.currentSection; 
       if (checkout.accordion.currentSection == "opc-payment") { 
        window.startPPP(); 
       } 
      } 
     } catch(e) { 
     } 
    } 
    window.setInterval(checkStep, 1000); 

</script> 

ご清聴ありがとうございました。

答えて

0

さて、支払い方法を部分的に無効にするために合格するという議論はないことが分かりました。私は難しい道をつぶやく別の方法を見つけました。引数onLoadはiframeの準備ができたら呼び出される関数を取ります。ギフトクーポンがカートに入っている場合はいつでも、お支払い方法をiframe DOMから手動で削除します。これは最適な解決策ではありませんが、機能します。

希望すると、そのペイパルは、devsより制御を与えるために、彼らのAPIを拡張します。

関連する問題