php - Opencart PayPal Express 错误 18112

标签 php paypal truncate substr

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

Paypal 说“如果您的购物车传递的描述值超过允许的限制,则会返回此警告错误消息。对于 PAYMENTREQUEST_0_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++;
        }

最佳答案

最简单的方法是使用 substr .我很惊讶你没有想到它,因为你正在使用 utf8_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;

关于php - Opencart PayPal Express 错误 18112,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20495390/

相关文章:

ruby-on-rails - 如果买家有 Paypal 账户,如何通过 Paypal 直接付款付款?

php - PayPal 智能支付按钮错误 paypal.Buttons 不是函数

SQL设置浮点精度

sql - 为什么我的 varchar 输出参数限制为 4000 个字符?

javascript - AJAX POST 请求的行为类似于 GET?

oauth-2.0 - 使用 Paypal 信用卡付款时出现 401 Unauthorized 错误

php - 如何获取下拉列表的值并插入到MySQL服务器中?

postgresql - Postgres : Reduce varchar size and truncate

php - 我们如何知道脚本的执行时间?面向对象编程

php - 如何使用 php Excel 创建一个新列并连接一些值?