Bagisto Forum

    Bagisto

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    create new payment method

    Bug Report
    3
    12
    789
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      ber.dev last edited by

      Event::listen('bagisto.shop.checkout.payment-method.after', function($viewRenderEventManager) {
          $viewRenderEventManager->addTemplate('checkout::checkout.onepage.checkout-card');
      }); 
      

      doesn't load my js file

      1 Reply Last reply Reply Quote 0
      • devansh-webkul
        devansh-webkul last edited by

        Hi @ber-dev,

        Can you share the full steps that you are trying todo?

        B 1 Reply Last reply Reply Quote 0
        • B
          ber.dev last edited by ber.dev

          Hi I am trying to create a new payment method for the checkout.com payment gateway and I have followed the same procedure as the paypal package

          1. I need to embed the Frames payment form in my payment page.
            In (Webkul\Velocity\src\Resources\views\shop\checkout\onepage.blade.php)
            I added this part of code for my card form :

                         <div class="mt10" id="payment-card">
                             <div id="payment-form">
                                 <div class="one-liner">
                                     <div class="card-frame">
                                         <!-- form will be added here -->
                                     </div>
                                     <!-- add submit button -->
                                     <button id="pay-button" disabled>
                                         PAY
                                     </button>
                                 </div>
                             </div>
                         </div>
            

          just after :

                      <div class="paypal-button-container mt10"></div>
          

          In (packages\ACME\CheckoutDotCom\src\Resources\views\checkout\onepage\checkout-card.blade.php)
          I added my script to embed my form :

          <script src="https://cdn.checkout.com/js/framesv2.min.js"></script>
          <script>
          window.onload = (function() {
          eventBus.$on('after-payment-method-selected', function(payment) {
          var payButton = document.getElementById("pay-button");
          var form = document.getElementById("payment-form");

                  Frames.init("pk_test_19cf87d3-f7c7-4f9e-b13c-d39f1eaf6138");
                  Frames.addEventHandler(
                      Frames.Events.CARD_VALIDATION_CHANGED,
                      function(event) {
                          console.log("CARD_VALIDATION_CHANGED: %o", event);
                          payButton.disabled = !Frames.isCardValid();
                      }
                  );
                  form.addEventListener("submit", function(event) {
                      event.preventDefault();
                      Frames.submitCard()
                          .then(function(data) {
                              Frames.addCardToken(form, data.token);
                              console.log(data.token);
                              alert(data.token);
                              document.getElementById('tokcard').value = data.token;
                              form.submit();
                          })
                          .catch(function(error) {
                              // handle error
                              console.log(error);
                          });
                  });
          
              });
          });
          

          </script>

          I create EventServiceProvider.php in (packages\ACME\CheckoutDotCom\src\Providers\EventServiceProvider.php)
          for loading my script

          <?php

          namespace ACME\CheckoutDotCom\Providers;

          use Illuminate\Support\Facades\View;
          use Illuminate\Support\ServiceProvider;
          use Illuminate\Support\Facades\Event;
          use Webkul\Theme\ViewRenderEventManager;

          class EventServiceProvider extends ServiceProvider
          {
          /**
          * Bootstrap services.
          *
          * @return void
          */
          public function boot()
          {
          // Event::listen('bagisto.shop.layout.head', static function(ViewRenderEventManager $viewRenderEventManager) {
          // $viewRenderEventManager->addTemplate('checkout::checkout.onepage.layouts.style');
          // });

              Event::listen('bagisto.shop.layout.body.after', static function(ViewRenderEventManager $viewRenderEventManager) {
                  $viewRenderEventManager->addTemplate('checkout::checkout.onepage.checkout-card');
              });
          }
          

          }
          Result :
          2021-03-23 (1)_LI.jpg image url)
          and my submit button doesn'twork (it doesn't submit my card form for generate a token card)
          I think this is because of my script because it is loading before my form
          this is my structure :
          2021-03-23 (2).png

          1 Reply Last reply Reply Quote 0
          • B
            ber.dev @devansh-webkul last edited by

            Hi @devansh-webkul can you help me please

            1 Reply Last reply Reply Quote 0
            • devansh-webkul
              devansh-webkul last edited by

              Hi @ber-dev,

              But if your views are loading then js should also work. Please check once again.

              May I know where you have added all your script?

              B 1 Reply Last reply Reply Quote 0
              • B
                ber.dev @devansh-webkul last edited by

                @devansh-webkul
                I have added my script in that file of my package (packages\ACME\CheckoutDotCom\src\Resources\views\checkout\onepage\checkout-card.blade.php)

                1 Reply Last reply Reply Quote 0
                • devansh-webkul
                  devansh-webkul last edited by

                  Hi @ber-dev,

                  Share the full file of this path packages\ACME\CheckoutDotCom\src\Resources\views\checkout\onepage\checkout-card.blade.php.

                  B 1 Reply Last reply Reply Quote 0
                  • B
                    ber.dev @devansh-webkul last edited by

                    @devansh-webkul said in create new payment method:

                    Share the full file of this path
                    This file contains the script needed for embed the card form

                    <script src="https://cdn.checkout.com/js/framesv2.min.js"></script>
                    <script>
                    window.onload = (function() {
                    eventBus.$on('after-payment-method-selected', function(payment) {
                    var payButton = document.getElementById("pay-button");
                    var form = document.getElementById("checkout-form");
                    if(form)
                    {
                    alert('exist');
                    }
                    Frames.init("pk_test_19cf87d3-f7c7-4f9e-b13c-d39f1eaf6138");
                    Frames.addEventHandler(
                    Frames.Events.CARD_VALIDATION_CHANGED,
                    function(event) {
                    console.log("CARD_VALIDATION_CHANGED: %o", event);
                    payButton.disabled = !Frames.isCardValid();
                    }
                    );
                    form.addEventListener("submit", function(event) {
                    event.preventDefault();
                    Frames.submitCard()
                    .then(function(data) {
                    Frames.addCardToken(form, data.token);
                    console.log(data.token);
                    alert(data.token);
                    document.getElementById('tokcard').value = data.token;
                    form.submit();
                    })
                    .catch(function(error) {
                    // handle error
                    console.log(error);
                    });
                    });

                        });
                    });
                    

                    </script>

                    1 Reply Last reply Reply Quote 0
                    • devansh-webkul
                      devansh-webkul last edited by

                      Hi @ber-dev,

                      The code seems to be fine. For debugging, I suggest you take step by step, start with the alert boxes and check whether execution has been done or not.

                      B 1 Reply Last reply Reply Quote 0
                      • B
                        ber.dev @devansh-webkul last edited by

                        @devansh-webkul Thank you my script is working fine now.
                        but I have another problem when I click place order I get this route not defined
                        I have try the same solution as https://forums.bagisto.com/topic/2280/getting-route-not-defined-for-custom-payment-method by runing php artisan optimize and I get this error

                        2021-03-26.png

                        B 1 Reply Last reply Reply Quote 0
                        • B
                          ber.dev @ber.dev last edited by

                          Hi I have solved the problem by importing the Route facade (Illuminate\Support\Facades\Route;) instead of (Illuminate\Routing\Route;)
                          in (packages\Webkul\Shop\src\Http\routes.php)
                          Thanks !

                          1 Reply Last reply Reply Quote 0
                          • T
                            tashiw045 last edited by

                            Hello, i have created a payment method. when a customer selects that method, it should show options to upload and screenshot of the payment made. Where do i start from?

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post