Я интегрировал платежное решение 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;
Таким образом, доставка равномерно распределяется между продуктами, но все еще не является оптимальным решением, поскольку пользователь / покупатель не увидит цены, ранее указанные в его корзине.
Я что-то упустил?
Есть ли переменная, которая не документирована, или "хак", о котором я не знаю?
С уважением.