Si en algún momento te ha salido un Error Code Mapping te daremos la satisfacción pasarela de pago tiene códigos de error o mensajes que tienen que transformarse en mensajes simples de utilizar. Cuando se produce un error, Magento distribución el mensaje a la audiencia correcta para que el cliente o comerciante logre solucionar algún inconveniente. Puede modificar cada incorporación de pago para conceder los códigos y mensajes de error originarios en conjuntos de cadenas de texto. Como resultado, puede asegurarse de que solo la audiencia correcta (solo comerciantes, solo usuarios o todos) vea cada mensaje de error. De manera ya establecida, el mensaje de error nivel

An error occurred on the server. Please try to place the order again.) exhibe si una operación de pago falla y es imposible hallar un mensaje asignado concreto.

Magento proporciona la \Magento\Payment\Gateway\ErrorMapper\ErrorMessageMapperInterfaceinterfaz y la implementación del asignador predeterminado \Magento\Payment\Gateway\ErrorMapper\ErrorMessageMapperpara habilitar las personalizaciones.

Este tema usa ejemplos basados ​​en la incorporación de pagos de Magento Braintree para ilustrar cómo activar la asignación de códigos de error.

Implementar archivos de error Code Mapping

En la mayor parte de las situaciones, debe determinar uno o más ficheros de Error Code Mapping y modificar la utilización ya establecida del ErrorMessageMapperInterfaceuso del di.xmlarchivo del módulo . Alternativamente, puede llevar a cabo una satisfacción programática descrita en Recobrar códigos de error del validador de respuestas .

Mapear los mensajes

Lo primero que hay que hacer es hacer uno o más ficheros XML que asignen códigos de mensaje a mensajes. Magento sugiere denominar estos ficheros <gateway_name>_error_mapping.xml, pero puede utilizar el nombre que quiera. Si crea bastante más de un archivo de asignación, cada archivo debe tener el mismo nombre de archivo. Use la siguiente tabla para saber dónde ubicar los ficheros de mapping:

Audienciaubicación
Todos los usuarios<module>/etc
Mercantes<module>/adminhtml
Clientes<module>/frontend

Los ficheros localizados en los directorios admin html y frontend garantizan que los usuarios y los gestores de la tienda solo vean mensajes particulares de la audiencia. Entre otras cosas, un cliente debería ver los mensajes de error cuando una tarjeta de crédito falla la verificación gracias a datos ingresados ​​incorrectamente y causas semejantes. El gestor de la tienda debe tener especificaciones más detalladas de por qué falló el intento de hacer una factura o un reembolso.

El archivo braintree_error_mapping.xml proporciona una colección de ejemplo:

<mapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Payment:etc/error_mapping.xsd">
    <message_list>
        <message code="81703" translate="true">Credit card type is not accepted by this merchant account.</message>
        <message code="81706" translate="true">CVV is required.</message>
        <message code="81707" translate="true">CVV must be 4 digits for American Express and 3 digits for other card types.</message>
        ...
    </message_list>
</mapping>

Las definiciones de los mensajes se fundamentan en el esquema error_mapping.xsd . Los mensajes tienen que realizar la siguiente estructura:

  • message_list– El nodo raíz. Puede contener una lista de mensajes específicos.
  • message – El nodo, que contiene el mensaje personalizado y dos atributos.
    • code– el código de error devuelto desde la pasarela de pago. El valor puede ser numérico o cadena.
    • translate – un atributo booleano que determina si se deben recopilar todas las traducciones de mensajes

Configurar inyección de dependencia.

Luego de conceder los mensajes, debe detallar la localidad del archivo o ficheros de asignación de fallos para el lector de configuración. Para llevar a cabo esto, creauna virtualTypedefinición para \Magento\Payment\Gateway\ErrorMapper\VirtualConfigReaderen el di.xmlarchivo del módulo :

<virtualType name="Magento\Braintree\Gateway\ErrorMapper\VirtualConfigReader" type="Magento\Payment\Gateway\ErrorMapper\VirtualConfigReader">
    <arguments>
        <argument name="fileName" xsi:type="string">braintree_error_mapping.xml</argument>
    </arguments>
</virtualType>

Además, especifique una instancia de configuración para el lector de datos. Además puede proveer el de el propio cacheId, lo que le facilita guardar todos los mensajes analizados en un archivos temporales.

<virtualType name="Magento\Braintree\Gateway\ErrorMapper\VirtualMappingData" type="Magento\Payment\Gateway\ErrorMapper\MappingData">
    <arguments>
        <argument name="reader" xsi:type="object">Magento\Braintree\Gateway\ErrorMapper\VirtualConfigReader</argument>
        <argument name="cacheId" xsi:type="string">braintree_error_mapper</argument>
    </arguments>
</virtualType>

Luego personalice el valor predeterminado a ErrorMessageMappertravés del tipo virtual y especifique el lector de datos:

<virtualType name="Magento\Braintree\Gateway\ErrorMapper\VirtualErrorMessageMapper" type="Magento\Payment\Gateway\ErrorMapper\ErrorMessageMapper">
    <arguments>
        <argument name="messageMapping" xsi:type="object">Magento\Braintree\Gateway\ErrorMapper\VirtualMappingData</argument>
    </arguments>
</virtualType>

Debido a que la integración de Braintree usa el valor predeterminado Magento\Payment\Gateway\Command\GatewayCommand, inyecte el grupo de asignadores creado en el comando de puerta de enlace requerido como un argumento:

<virtualType name="BraintreeAuthorizeCommand" type="Magento\Payment\Gateway\Command\GatewayCommand">
    <arguments>
        ...
        <argument name="errorMessageMapper" xsi:type="object">Magento\Braintree\Gateway\ErrorMapper\VirtualErrorMessageMapper</argument>
    </arguments>
</virtualType>

Le Magento\Payment\Gateway\Command\GatewayCommandpermite recuperar múltiples mensajes de error, pero si su integración no utiliza esta función, puede inyectarla ErrorMessageMapperInterfacecomo argumento. Luego, implemente su propia lógica a los códigos de error del asignador.

La incorporación de pago en este momento debería recobrar los códigos de error de la respuesta de la pasarela de pago.

Recuperar códigos de error del validador de respuestas.

Puede recobrar códigos de error usando un validador de respuesta . Un validador de respuestas corrobora los códigos de respuesta desde la pasarela de pago. Tiene diferentes responsabilidades y no debe conceder mensajes, debido a que trabaja en la cubierta inferior de comunicación entre Magento y la pasarela de pago. Es compromiso de un comando de puerta de link llamar a un servicio correspondiente.

Por ejemplo, Magento proporciona un validador de respuesta para Braintree: \Magento\Braintree\Gateway\Validator\GeneralResponseValidator. Su implementación permite recuperar códigos de error de una respuesta.

Primero, crea un nuevo proveedor de código. Puede ser una clase fácil con un procedimiento público que debe devolver una lista de códigos de error por la respuesta proporcionada:

class ErrorCodeProvider
{
    /**
     * Retrieves list of error codes from Braintree response.
     *
     * @param Successful|Error $response
     * @return array
     */
    public function getErrorCodes($response): array
    {
        $result = [];
        if (!$response instanceof Error) {
            return $result;
        }

        /** @var ErrorCollection $collection */
        $collection = $response->errors;

        /** @var Validation $error */
        foreach ($collection->deepAll() as $error) {
            $result[] = $error->code;
        }

        return $result;
    }
}

Luego agregue el proveedor creado como una dependencia a la GeneralResponseValidatorclase:

class GeneralResponseValidator extends AbstractValidator
{
    public function __construct(
        ResultInterfaceFactory $resultFactory,
        SubjectReader $subjectReader,
        ErrorCodeProvider $errorCodeProvider
    ) {
        parent::__construct($resultFactory);
        $this->subjectReader = $subjectReader;
        $this->errorCodeProvider = $errorCodeProvider;
    }

    public function validate(array $validationSubject)
    {
        /** @var Successful|Error $response */
        $response = $this->subjectReader->readResponseObject($validationSubject);
    
        $isValid = true;
        $errorMessages = [];

        foreach ($this->getResponseValidators() as $validator) {
            $validationResult = $validator($response);

            if (!$validationResult[0]) {
                $isValid = $validationResult[0];
                $errorMessages = array_merge($errorMessages, $validationResult[1]);
            }
        }
        $errorCodes = $this->errorCodeProvider->getErrorCodes($response);
    
        return $this->createResult($isValid, $errorMessages, $errorCodes);
    }
}

Las GeneralResponseValidatordeclaraciones de una implementación de \Magento\Payment\Gateway\Validator\ResultInterface y el \Magento\Payment\Gateway\Command\GatewayCommandmétodo utiliza ResultInterface::getErrorCodes()el método para asignar códigos de error para mensajes fácil de usar.

🌟 ¡Descubre, Aprende y Disfruta! 🌟 🔥 Sumérgete en un mundo de contenido fascinante y déjate cautivar por artículos emocionantes que abarcan desde tecnología hasta cultura. ¡La aventura te espera! 🔥
Bienvenido a la guía definitiva sobre los mejores códigos de música de Roblox para el mes de febrero de 2024 ...
Si estás buscando un contador con redirección implementado en HTML, probablemente estés buscando un script que pueda llevar un registro ...
El código proporcionado es una página web simple que presenta dos botones ("Sí" y "No") y un título ("¿Me amas?") ...
10 comentarios en «Error Code Mapping»
  1. Sick of wasting money on PPC advertising that just doesn’t deliver? Now you can post your ad on 10,000 advertising sites and you only have to pay a single monthly fee. These ads stay up forever, this is a continual supply of organic visitors!

    Take a look at: http://www.adpostingrobot.xyz

  2. The clarification of the critical situation in the world may help Your business. We don’t give advice on how to run it. We highlight key points from the flood of information for You to draw conclusions. Fact: conflicting vested interests change the world. Agenda: control and reduction of the human population. Ways and Means: genetic engineering of viruses, mass-media scares, mandatory vaccination.
    Thank You for the time of reading our unsolicited message! God bless You.
    See: bit.ly/evilempire-blog

  3. Hi

    My package was damaged for the second time.
    I made a photo so that you can see what I have received. https://imgurgallery.com/6ytrfk9
    I hope you can help me solve this problem.

    Yours truly
    Ellen Cudmore

    “Sent from my Huawai phone”

  4. Stem cell therapy has proven itself to be one of the most effective treatments for COPD (Chronic Obstructive Pulmonary Disorder). IMC is the leader in stem cell therapies in Mexico. For more information on how we can treat COPD please visit:
    https://bit.ly/copd-integramedicalcenter

  5. Good afternoon, I was just taking a look at your site and filled out your feedback form. The feedback page on your site sends you messages like this via email which is the reason you’re reading through my message at this moment right? That’s half the battle with any type of advertising, making people actually READ your advertisement and I did that just now with you! If you have an ad message you would like to promote to tons of websites via their contact forms in the US or to any country worldwide let me know, I can even target particular niches and my pricing is very affordable. Write an email to: juniordannyqprj@gmail.com

  6. Hi, I’m sending you this message via your contact form on your website at wolfpress.co. By reading this message you’re living proof that contact form advertising works! Do you want to blast your ad to millions of contact forms? Maybe you prefer a more targeted approach and only want to blast our ad out to websites in certain business categories? Pay just $99 to blast your ad to 1 million contact forms. Volume discounts available. I have more than 35 million contact forms. Let’s get the conversation started, contact me via Skype here: live:.cid.83c9da999a4f9f

  7. Quick question to ask you… Are you aware that by reading this message you just proved that contact form marketing works? That’s right, and we can get eyeballs on your offer too! Pricing starts at just $100 to blast YOUR ad message to 1 MILLION contact forms on websites just like yours worldwide. Contact me on Skype and let’s discuss what will work for your product/service. My Skype ID: live:.cid.83c9da999a4f9f

    this message was sent to your website contact form at: wolfpress.co

  8. Hey

    Thank you for the fast delivery to my home.
    When I saw the order. I immediately saw that
    something was wrong with it, and when I opened it, the product was unfortunately
    broken.
    I made a photo so that you can see what I have received. https://photoscreenshot.com/proofdamageorder
    I am a regular customer, and I regularly order from your website.
    Hope we can solve this small problem in a good way.

    Yours truly
    Forrest Dale

    “Sent from my Android”

  9. Hi, I’m sending you this message via your contact form on your website at wolfpress.co. By reading this message you’re living proof that contact form advertising works! Do you want to blast your ad to millions of contact forms? Maybe you prefer a more targeted approach and only want to blast our ad out to websites in certain business categories? Pay just $99 to blast your ad to 1 million contact forms. Volume discounts available. I have more than 35 million contact forms. Let’s get the conversation started, contact me via Skype here: live:.cid.83c9da999a4f9f

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Recommended
Es un error Allowed memory size que hace aparición frecurrentemente…
Cresta Posts Box by CP