如何使用 PHP 禁用 PayPal 运输选项

Posted

技术标签:

【中文标题】如何使用 PHP 禁用 PayPal 运输选项【英文标题】:How to disable PayPal shipping option with PHP 【发布时间】:2016-07-08 00:22:07 【问题描述】:

我已经创建了一个 PayPal 沙盒交易,就像您在下面的代码中看到的那样。它工作正常。但现在我想禁用贝宝网站上的送货地址对话框。 我发现了这个:

$inputfields = new \PayPal\Api\InputFields();
$inputfields->getNoShipping(1);

但我知道它不起作用。还缺少什么?

$apiContext = new \PayPal\Rest\ApiContext(
new \PayPal\Auth\OAuthTokenCredential( PAYPAL_CLIENT_ID, PAYPAL_CLIENT_SECRET ));

$amount = new Amount();
$amount->setCurrency('EUR'); 
$amount->setTotal($price);             
$amount->setDetails($details);

$transaction = new Transaction();
$transaction->setAmount($amount)
    ->setDescription( ... )
    ->setNotifyUrl(  ... );

$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl( ... );
    ->setCancelUrl( ... );      

$payer = new Payer();
$payer->setPaymentMethod("paypal");        

$payment = new Payment();
$payment->setIntent("sale")
    ->setPayer($payer)
    ->setRedirectUrls($redirectUrls)
    ->setTransactions(array($transaction));

try    
    $payment->create($apiContext);
 catch (\PayPal\Exception\PayPalConnectionException $e)  

【问题讨论】:

【参考方案1】:

这是一个老问题,但我认为它仍然相关:

您必须将 InputFields 包装在配置文件中(例如 WebProfile)。

use PayPal\Api\InputFields;
use PayPal\Api\WebProfile;

$inputFields = new \PayPal\Api\InputFields();
$inputFields
   ->setAllowNote(true)
   ->setNoShipping(1)
   ->setAddressOverride(0);

$webProfile = new \PayPal\Api\WebProfile();
$webProfile
   ->setName('testname' . uniqid())
   ->setId("999")
   ->setInputFields($inputFields)
   ->setTemporary(true);

然后创建配置文件并将其添加到付款。

$webProfileId = $webProfile->create($apiContext)->getId("999");

$payment = new Payment();
$payment->setExperienceProfileId($webProfileId);

【讨论】:

以上是关于如何使用 PHP 禁用 PayPal 运输选项的主要内容,如果未能解决你的问题,请参考以下文章

PayPal Express Checkout:删除运输选项

如何将 PayPal 快递结账与运输细节相结合?

在 Paypal 移动 SDK 中禁用信用卡

PayPal - SetExpressCheckout 后更新运输信息

如何实现 Paypal 定期支付 API 以及买家通过信用卡/借记卡 php 支付的选项? [关闭]

如何禁用谷歌地图上的交通层?