【发布时间】:2013-08-31 23:48:47
【问题描述】:
我正在尝试使用 OmniPay for PayPal Express 设置送货信息(姓名、地址、电子邮件等)。
我尝试在 purchase($options) 对象的选项数组中添加运输信息:
$options = array(
// required fields (username, pass, etc)
// .....
'shippingAddress1' => 'Elm Street'
'shippingCity' => 'Elm',
'shippingPostcode' => '1000'
// etc.
);
我也尝试将此信息传递给 CreditCard 对象:
$card = new Omnipay\Common\CreditCard($card_options);
没有任何成功。代码:
$gateway = GatewayFactory::create('PayPal_Express');
$gateway->setUsername(USERNAME);
$gateway->setPassword(PASS);
$gateway->setSignature(SIGNATURE);
$gateway->setTestMode(true);
$card_options = array(
'shippingAddress1' => 'Elm Street',
'shippingCity' => 'Elm',
'shippingPostcode' => '10000',
'shippingState' => '',
'shippingCountry' => 'NEverland',
'shippingPhone' => '123465789',
'company' => '',
'email' => 'shipping@test.com'
);
$card = new Omnipay\Common\CreditCard($card_options);
$response = $gateway->purchase(
array(
'cancelUrl'=>'http://localhost/laravel_paypal/',
'returnUrl'=>'http://localhost/laravel_paypal/public/paypalexpress_confirm',
'amount' => '0.99',
'currency' => 'USD',
'card' => $card
)
)->send();
如何使用 OmniPay 将送货信息添加到 PayPal Express?
顺便说一句,我正在使用 Laravel 和 PayPal Sandbox。
【问题讨论】:
-
找到了解决方法。
getData()方法中的ExpressAuthorizeRequest类具有硬编码值,用于在 PayPal 付款时设置发货提示。$data['NOSHIPPING'] = 1; -
如果您将值更改为
2,那么当重定向到 PayPal Express 页面时,将有设置运输信息的选项(如有必要)。我希望这可以通过purchase()对象上的 getter/setter 来完成 -
好点。我在这里为你提出了一个问题,将在未来的版本中解决这个问题。现在可能最简单的方法是直接分叉和编辑文件。 github.com/adrianmacneil/omnipay/issues/121
-
如果您不需要运费(为服务付费),请使用 'noShipping' => true