PayPal Shipping - несколько товаров в корзине - загрузка корзины - PullRequest
0 голосов
/ 10 сентября 2018

Я интегрировал платежное решение PayPal в пользовательское веб-приложение электронной коммерции.
Раньше, как и ожидалось, с конца августа 1818 года.

Так что в моем контроллере после того, как пользователь нажал / нажал «Pay Now» и платежный шлюз PayPal выбран, код получает содержимое корзины.для текущего пользователя и отправьте его так:

    $cartrow = $shop->getCartContent(); //Get the cart content
    $query = array();
    $query['notify_url'] = SITEURL.'/gateways/paypal/ipn.php';
    $query['cmd'] = '_cart';
    $query['upload'] = '1';
    $query['business'] = 'BUSINESS EMAIL HERE';
    $query['image_url'] = SITEURL.'/'.THEME.'/assets/images/logo-paypal-head.png';
    $query['return'] = SITEURL.'/order/payment-complete/';
    $query['cancel_return'] = SITEURL.'/order/payment-failed/';
    $query['currency_code'] = 'EUR';
    $query['custom'] = 'STS_'.$user->usr_sesid; //Used for IPN identification
    $query['rm'] = '2';
    $query['shipping_1'] = $shipping_cost;
    $x = 0;
    foreach ($cartrow as $crow):
      $x++;
      $query['item_name_'.$x] = cleanItOut($crow->pr_title);
      $query['item_number_'.$x] = $crow->pr_id;
      $query['quantity_'.$x] = $crow->total;
      $query['amount_'.$x] = $crow->price / $crow->total;
    endforeach;
    $query_string = http_build_query($query);
    $pp_url = 'https://www.paypal.com/cgi-bin/webscr?' . $query_string;
    $json['status'] = 'success';
    $json['pp_url'] = $pp_url;
    print json_encode($json);

Обратите внимание:

$query['shipping_1'] = $shipping_cost;

Это отправляется как фиксированная ставка, которая рассчитывается ранее в приложении.
Для ЕСстраны: 6 евро
Для европейских стран за пределами ЕС и США: 9 евро
Остальной мир: 14 евро

Проблема с сентября заключается в том, что в Покупке PayPal указывается первый продуктцена равна цене товара + стоимость доставки.Хотя общая сумма верна.

Так что, если корзина такая:
Товар # 1: 10 EUR
Товар # 2: 15 EUR
Итого: 25 EUR
Доставка: 6 EUR
Общая сумма: 31 EUR

Детали покупки для покупателя в PayPal заканчиваются следующим образом:
Товар # 1: 16 EUR
Товар #2: 15 EUR
Сумма: 25 EUR
Доставка: 6 EUR
Сумма покупки: 31 EUR

При попыткеустановите shipping_1 в shipping, в PayPal Checkout обнуляется доставка.
Я понял, что shipping_1 подключен к значениям item_name_1, item_number_1, quantity_1 и amount_1, но переменная доставки не может быть использована в опции «Загрузка корзины» интеграции PayPal.
См. Отгрузку PayPal в переменных отдельных документов документации.

Дополнительно в соответствии с Документация PayPal для корзины покупок с опцией загрузки в корзину shipping_1 является правильным методомчтобы отправить доставку в PayPal, но вы должны использовать item_name_1 и amount_1 как один элемент для всего содержимого корзины.

Последнее, что я попытался, - это подсчитать все элементы в корзине и переместитьПеременная shipping_1 в цикле foreach выглядит следующим образом:

    foreach ($cartrow as $crow):
      $x++;
      $query['shipping_x'] = $shipping_cost / $crow->total_products;
      $query['item_name_'.$x] = cleanItOut($crow->pr_title);
      $query['item_number_'.$x] = $crow->pr_id;
      $query['quantity_'.$x] = $crow->total;
      $query['amount_'.$x] = $crow->price / $crow->total;
    endforeach;

Таким образом, доставка равномерно распределяется между продуктами, но все еще не является оптимальным решением, поскольку пользователь / покупатель не увидит цены, ранее указанные в его корзине.

Я что-то упустил?
Есть ли переменная, которая не документирована, или "хак", о котором я не знаю?

С уважением.

...