Validación de campo personalizado de pago de Magento 2

11

Pago Magento2: ¿cuál es el mejor método para agregar validación para mi campo de pago personalizado que depende del método de envío seleccionado?

Por ejemplo, estoy agregando el campo al formulario de dirección en LayoutProcessor donde puedo especificar reglas de validación. Necesito hacer que este campo sea obligatorio si se selecciona mi operador personalizado.

Mi objetivo es evitar que el usuario vaya al siguiente paso si mi campo personalizado no está lleno. Sé que puedo agregar validaciones personalizadas antes de realizar el pedido (paso Revisión y pagos) pero necesito validarlo un paso antes.

Maciej Domski
fuente
Hola como resolviste esto
simonthesorcerer
@ maciej-domski ¿Resolviste esto?
Ranjit Shinde
Esto puede ayudar a otros magento.stackexchange.com/questions/262239/…
Prathap Gunasekaran
@Maciej Domski revisa mi respuesta. Lo probé para el correo electrónico de confirmación y es un código que funciona
Ketan Borada

Respuestas:

1

intente esto, solo agregue 'validation' => ['required-entry' => true] como a continuación en el complemento LayoutProcessor

'config' => [
                'customScope' => 'shippingAddress',
                'template' => 'ui/form/field',
                'elementTmpl' => 'ui/form/element/input',
                'options' => [],
                'id' => 'custom_field'
            ],
            'dataScope' => 'customfield',
            'label' => 'custom field # :',
            'provider' => 'checkoutProvider',
            'validation' => ['required-entry' => true],
            'visible' => true,
            'sortOrder' => 250,
            'id' => 'custom_field'
Tirth Patel
fuente
0

sí, es posible cambiando en Magento_Checkout / js / model / shipping-save-processor / default.js

He agregado un campo confirm emailque debe ser el mismo emaily es un campo obligatorio en el pago, puede personalizarlo según los requisitos.

app\code\Ketan\Checkout\view\frontend\requirejs-config.js

var config = {
    "map": {
       "*": {
           "Magento_Checkout/js/model/shipping-save-processor/default" : "Ketan_Checkout/js/shipping-save-processor"
       }
   }
}

extender js file app\code\Ketan\Checkout\view\frontend\web\js\shipping-save-processor.js

/*
* *
*  @author DCKAP Team
*  @copyright Copyright (c) 2018 DCKAP (https://www.dckap.com)
*  @package Dckap_CustomFields
*/
define(
   [
       'ko',
       'Magento_Checkout/js/model/quote',
       'Magento_Checkout/js/model/resource-url-manager',
       'mage/storage',
       'Magento_Checkout/js/model/payment-service',
       'Magento_Checkout/js/model/payment/method-converter',
       'Magento_Checkout/js/model/error-processor',
       'Magento_Checkout/js/model/full-screen-loader',
       'Magento_Checkout/js/action/select-billing-address',
       'jquery'
   ],
   function (
       ko,
       quote,
       resourceUrlManager,
       storage,
       paymentService,
       methodConverter,
       errorProcessor,
       fullScreenLoader,
       selectBillingAddressAction,
       $
   ) {
       'use strict';

       return {
           saveShippingInformation: function () {
               var payload;

               var username = $("#customer-email").val();
               var conformusername = $("#conformusername").val();

              /*============ Customization Start =============*/
              //if(quote.shippingMethod().method_code=='flaterate'){ // Check if flaterate is selected
                if(conformusername != username){
                  $("#conformusername-error").show(); // show hidden message
                  $("#conformusername").focus();      // move cursor to the point
                  return false;
                 }
              // }
              /*============ Customization End =============*/


               if (!quote.billingAddress()) {
                   selectBillingAddressAction(quote.shippingAddress());
               }
               payload = {
                   addressInformation: {
                       shipping_address: quote.shippingAddress(),
                       billing_address: quote.billingAddress(),
                       shipping_method_code: quote.shippingMethod().method_code,
                       shipping_carrier_code: quote.shippingMethod().carrier_code
                   }
               };
               fullScreenLoader.startLoader();

               return storage.post(
                   resourceUrlManager.getUrlForSetShippingInformation(quote),
                   JSON.stringify(payload)
               ).done(
                   function (response) {
                       quote.setTotals(response.totals);
                       paymentService.setPaymentMethods(methodConverter(response.payment_methods));
                       fullScreenLoader.stopLoader();
                   }
               ).fail(
                   function (response) {
                       errorProcessor.process(response);
                       fullScreenLoader.stopLoader();
                   }
               );
           }
       };
   }
);
Ketan Borada
fuente