Serviço Paypal PHP REST - "o token de acesso não tem escopo necessário"
Estou codificando em PHP usando o Paypal REST SDK. Configurei minha conta Sandbox para usar o AUD. Eu resolvi isso depois de perceber que minhas transações iniciais estavam em dólares americanos e as transações estavam sendo mantidas.
Usando meu código revisado, estou tentando criar um pagamento - presumo que receberei de volta um URL que permitirá redirecionar o usuário para aprovar o pagamento.
Estou recebendo uma mensagem que diz:
Exceção: Obteve o código de resposta HTTP 403 ao acessarhttps://api.sandbox.paypal.com/v1/payments/payment. Tentou novamente 0 vezes. string (215) "{" name ":" REQUIRED_SCOPE_MISSING "," message ":" O token de acesso não tem escopo necessário "," information_link ":"https://developer.paypal.com/webapps/developer/docs/api/#REQUIRED_SCOPE_MISSING"," debug_id ":" 34683601f5dcd "}"
Meu código é: $ apiContext = new ApiContext (new OAuthTokenCredential ('xxxxxx', 'xxxxxx'));
//### FundingInstrument
// A resource representing a Payer's funding instrument.
// For direct credit card payments, set the CreditCard
// field on this object.
$fi = new FundingInstrument();
$creditCardToken = new CreditCardToken();
$creditCardToken->setCreditCardId($creditcard->cardToken);
$fi->setCreditCardToken($creditCardToken);
// ### Payer
// A resource representing a Payer that funds a payment
// For direct credit card payments, set payment method
// to 'credit_card' and add an array of funding instruments.
$payer = new Payer();
$payer->setPaymentMethod("credit_card")
->setFundingInstruments(array($fi));
// ### Itemized information
// (Optional) Lets you specify item wise
// information
$paymentItems=Yii::app()->session['paymentitems'];
$items=array();
$total=0;
foreach ($paymentItems as $item)
{
$pp_item = new Item();
$pp_item->setName("Donation to ".$item->organisation->organisationName)
->setCurrency('AUD')
->setQuantity(1)
->setPrice($item->amount);
array_push($items,$pp_item);
$total+=(float)$item->amount;
}
$itemList = new ItemList();
$itemList->setItems($items);
// ### Amount
// Lets you specify a payment amount.
// You can also specify additional details
// such as shipping, tax.
$amount = new Amount();
$amount->setCurrency("AUD")
->setTotal($total);
// ### Transaction
// A transaction defines the contract of a
// payment - what is the payment for and who
// is fulfilling it.
$transaction = new Transaction();
$transaction->setAmount($amount)
->setItemList($itemList)
->setDescription("Payment description");
// ### Payment
// A Payment Resource; create one using
// the above types and intent set to sale 'sale'
$payment = new Payment();
$payment->setIntent("sale")
->setPayer($payer)
->setTransactions(array($transaction));
// ### Create Payment
// Create a payment by calling the payment->create() method
// with a valid ApiContext (See bootstrap.php for more on `ApiContext`) href
// The return object contains the state.
try {
$response=$payment->create($apiContext);
var_dump($response);
//$this->redirect($response->links[0]->href);
} catch (PayPal\Exception\PPConnectionException $ex) {
echo "Exception: " . $ex->getMessage() . PHP_EOL;
var_dump($ex->getData());
exit(1);
}
Quaisquer pensamentos sobre o significado desta mensagem. Parece que os pagamentos diretos com cartão de crédito não são suportados pelo Paypal na Austrália, mas não acho que esse seja o problema.