Recurring payment with Cielo webservice 3.0

Asked

Viewed 584 times

1

I’m testing the recurring payment example, available on official repository of Cielo and the code returns the following error:

Fatal error: Uncaught Error: Call to a Member Function setInterval() on null in /var/www/public/page.php:24

$recurrent = $recurrent->setInterval(RecurrentPayment::INTERVAL_MONTHLY)->setAuthorizeNow(true);

Someone’s had that problem before?

Complete code:

require 'vendor/autoload.php';

use Cielo\API30\Merchant;

use Cielo\API30\Ecommerce\Environment;
use Cielo\API30\Ecommerce\Sale;
use Cielo\API30\Ecommerce\CieloEcommerce;
use Cielo\API30\Ecommerce\Payment;

use Cielo\API30\Ecommerce\Request\CieloRequestException;
// ...
// Configure o ambiente
$environment = $environment = Environment::sandbox();

// Configure seu merchant
$merchant = new Merchant('MERCHANT ID', 'MERCHANT KEY');

// Crie uma instância de Sale informando o ID do pagamento
$sale = new Sale('123');

// Crie uma instância de Customer informando o nome do cliente
$customer = $sale->customer('Fulano de Tal');

// Configure a recorrência
$recurrent = $recurrent->setInterval(RecurrentPayment::INTERVAL_MONTHLY)
                        ->setAuthorizeNow(true);

// Crie uma instância de Payment informando o valor do pagamento
$payment = $sale->payment(15700);

// Crie uma instância de Credit Card utilizando os dados de teste
// esses dados estão disponíveis no manual de integração
$payment->setRecurrentPayment($recurrent)
        ->setType(Payment::PAYMENTTYPE_CREDITCARD)
        ->creditCard("123", "Visa")
        ->setExpirationDate("12/2018")
        ->setCardNumber("0000000000000001")
        ->setHolder("Fulano de Tal");

// Crie o pagamento na Cielo
try {
    // Configure o SDK com seu merchant e o ambiente apropriado para criar a venda
    $sale = (new CieloEcommerce($merchant, $environment))->createSale($sale);

    // Com a venda criada na Cielo, já temos o ID do pagamento, TID e demais
    // dados retornados pela Cielo
    $paymentId = $sale->getPayment()->getPaymentId();

    // Com o ID do pagamento, podemos fazer sua captura, se ela não tiver sido capturada ainda
    $sale = (new CieloEcommerce($merchant, $environment))->captureSale($paymentId, 15700, 0);

    // E também podemos fazer seu cancelamento, se for o caso
    $sale = (new CieloEcommerce($merchant, $environment))->cancelSale($paymentId, 15700);
} catch (CieloRequestException $e) {
    // Em caso de erros de integração, podemos tratar o erro aqui.
    // os códigos de erro estão todos disponíveis no manual de integração.
    $error = $e->getCieloError();
}
  • Strange that the object $recurrent not defined in the example. Could have missed a $recurrent = $payment->getRecurrent()?

  • @Andersoncarloswoss put a $recurrent = $payment->getRecurrent();, but returned Fatal error: Uncaught Error: Call to a Member Function getRecurrent() on null for that line.

  • Put your entire code in the question.

  • @Andersoncarloswoss included.

1 answer

1

Solved: It is necessary to add the class at the top: use Cielo\API30\Ecommerce\RecurrentPayment;

and instantiate the variable $recurrent:

$recurrent = new RecurrentPayment();
$recurrent = $recurrent->setInterval(RecurrentPayment::INTERVAL_MONTHLY)->setAuthorizeNow(true);

Browser other questions tagged

You are not signed in. Login or sign up in order to post.