INVALID_REQUEST:字段 [order.avsDetails.billToFirstname] 不在字符集 [ISO-8859-1] 中

INVALID_REQUEST: Field [order.avsDetails.billToFirstname] was not in charset [ISO-8859-1]

出于某些原因,当我使用 OnTap MasterCard Extension 时,送货地址中的任何阿拉伯字符都会引发错误:

INVALID_REQUEST: Field [order.avsDetails.billToFirstname] was not in charset [ISO-8859-1]

分机 link :

https://marketplace.magento.com/ontap-module-mastercard.html

请帮忙。

您可以尝试使用插件对 Builders(在 Gateway/Request 文件夹内)生成的数据进行编码。

您可以详细了解如何创建插件 here,以便在需要时对构建器中的所有字段执行编码。

您将创建一个新模块,对您从市场上获取的扩展进行所需的修改。

要在这种情况下定义您的构建器,您的 di.xml 将类似于:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="\OnTap\MasterCard\Gateway\Request\ShippingDataBuilder">
        <plugin name="jsparo_ontap_mastercard_gateway_request_shippingdatabuilder" type="Jsparo\MasterCard\Plugin\Gateway\Request\ShippingDataBuilder" sortOrder="1"/>
    </type>
</config>

你的 Plugin/Gateway/Request/ShippingDataBuilder.php 会是这样的:

<?php
namespace Jsparo\MasterCard\Plugin\Gateway\Request;
class ShippingDataBuilder {
    public function afterBuild(array $subject, $result) {
        array_walk_recursive($result, function(&$value) {
            $value = mb_convert_encoding($value, 'ISO-8859-1', 'UTF-8');
        }
        return $result;
    }
}

您必须对所有生成错误数据的构建器执行此操作。