【发布时间】:2015-01-06 22:30:40
【问题描述】:
我正在尝试将自定义运费传递给 paypal 快递结帐。
我正在使用omnipay 和laravel 4。
我认为这在paypal express docs 中引用是可能的,但无法让它与omnipay 一起使用我尝试了以下方法:
/*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”:github.com/thephpleague/omnipay-paypal/blob/master/src/Message/… - 所以只需将“XXX”替换为“shippingAmount”就可以了。无需修改 AbstractRequest,在 AuthorizeRequest 中设置:github.com/thephpleague/omnipay-paypal/blob/master/src/Message/…