Я прошу передать заказную цену доставки для экспресс-оплаты PayPal.Laravel/Omnipay paypal, обычная доставка наложенным платежом
Я использую OmniPay и Laravel 4.
Я собираю это возможно как указано в paypal express docs, но не могу заставить его работать с OmniPay Ive пытался следующее:
/*set api details*/
$request = $gateway->purchase([
'amount'=> $cart['total'],
'currency' => 'GBP',
'XXX' => 100
'transactionId' => $order->reference,
'returnUrl' => $returnURL . '/checkout/success',
'cancelUrl' => $returnURL . '/checkout/cancel'
])->setItems($cart['items'])->send();
/*handleResponse*/
где XXX является shipping, shippingAmt, shipping_amount, я попробовал добавить стоимость доставки для каждого товара в корзине. Я попытался модифицировать abstractrequest.php
класс для добавления на значении доставки вручную следующим образом:
protected function getItemData()
{
$data = array();
$items = $this->getItems();
if ($items) {
foreach ($items as $n => $item) {
$data["L_PAYMENTREQUEST_0_NAME$n"] = $item->getName();
$data["L_PAYMENTREQUEST_0_DESC$n"] = $item->getDescription();
$data["L_PAYMENTREQUEST_0_QTY$n"] = $item->getQuantity();
$data["L_PAYMENTREQUEST_0_AMT$n"] = $this->formatCurrency($item->getPrice());
}
}
$data["L_PAYMENTREQUEST_0_SHIPPINGAMT"] = "3.00";
return $data;
}
В соответствии с кодом свойство называется 'shippingAmount': https://github.com/thephpleague/omnipay-paypal/blob/master/src/Message/AbstractRequest.php#L172 - Так что просто замените «XXX» с «shippingAmount», и вам должно быть хорошо идти. Нет необходимости изменять AbstractRequest, он устанавливается в AuthorizeRequest: https://github.com/thephpleague/omnipay-paypal/blob/master/src/Message/ExpressAuthorizeRequest.php#L39 – Quasdunk