Php Opencart PayPal Express错误18112

Php Opencart PayPal Express错误18112,php,paypal,truncate,substr,Php,Paypal,Truncate,Substr,当我们在opencart中有很多产品选项时,它会导致传递给paypal express的描述长度超过127个字符。因此,当我们返回购物车确认订单时,会出现错误18112-“Description参数的值被截断。” Paypal说:“如果您的购物车通过的描述值超过了允许的限制,则会返回此警告错误消息。对于PAYMENTREQUEST\u 0\u DESC,字符长度限制为127个字符;因此,如果您的购物车通过的值大于此限制,则会返回此错误。” 我需要帮助了解如何截断paypal express收到的

当我们在opencart中有很多产品选项时,它会导致传递给paypal express的描述长度超过127个字符。因此,当我们返回购物车确认订单时,会出现错误18112-“Description参数的值被截断。”

Paypal说:“如果您的购物车通过的描述值超过了允许的限制,则会返回此警告错误消息。对于PAYMENTREQUEST\u 0\u DESC,字符长度限制为127个字符;因此,如果您的购物车通过的值大于此限制,则会返回此错误。”

我需要帮助了解如何截断paypal express收到的描述,使其不超过126个字符

下面是处理选项描述的代码部分。有谁能帮我找出如何将发送给paypal的描述缩短到126个字符

    foreach ($this->cart->getProducts() as $item) {
        $data['L_PAYMENTREQUEST_0_DESC' . $i] = '';

        $option_count = 0;
        foreach ($item['option'] as $option) {
            if ($option['type'] != 'file') {
                $value = $option['option_value'];
            } else {
                $filename = $this->encryption->decrypt($option['option_value']);
                $value = utf8_substr($filename, 0, utf8_strrpos($filename, '.'));
            }

            $data['L_PAYMENTREQUEST_0_DESC' . $i] .= ($option_count > 0 ? ', ' : '') . $option['name'] . ':' . (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value);

            $option_count++;
        }

最简单的方法是使用。我很惊讶您没有想到它,因为您使用的是
utf8\u substr
,它似乎做了同样的事情

$descr = ($option_count > 0 ? ', ' : '') . $option['name'] . ':' . (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value);
$descr = substr($descr, 0, 126);
$data['L_PAYMENTREQUEST_0_DESC' . $i] = $descr;

我知道我必须使用substr,但我不知道在哪里/如何使用它。此代码来自opencart附带的默认paypal express模块。我已经觉得自己像个白痴了,但是你给我的密码去哪里了?替换另一部分?将
foreach
开头的
$data['L\u PAYMENTREQUEST\u 0\u DESC.$i]
中的行替换为上面的块,这样应该可以了。非常感谢您的帮助!这是我作为志愿者创建的一个非营利网站。我真的很感谢你的帮助和快速反应!