2016-03-21 2 views
0

Я создал транзакцию Sandbox PayPal, как вы видите, а затем код ниже. Он работает нормально. Но теперь я хочу отключить диалог адрес доставки на сайте PayPal. Я нашел это:Как отключить опцию доставки PayPal с PHP

$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) { } 

ответ

2

Это старый вопрос, но я думаю, что это по-прежнему актуальна:

Вы должны обернуть InputFields в профиле (WebProfile, например).

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

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

Затем создайте профиль и добавьте его в Оплата.

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

$payment = new Payment(); 
$payment->setExperienceProfileId($webProfileId); 
Смежные вопросы