public function testChargeReturningTransaction()
 {
     $mockTransactionResource = \Mockery::mock($this->transactionResource)->makePartial();
     $mockTransactionResource->shouldReceive('chargeAuthorization')->once()->andReturn($this->chargeReturningTransactionResourceResponseData);
     $returningTransaction = ReturningTransaction::make('AUTH_jonwwppn', $this->planData['amount'], $this->customerData['email'], '');
     $returningTransaction->setTransactionResource($mockTransactionResource);
     $chargeReturningTransaction = $returningTransaction->charge();
     $this->assertEquals($this->chargeReturningTransactionResourceResponseData, $chargeReturningTransaction);
 }
 /**
  * Charge a returning customer.
  *
  * @param $authorization
  * @param $amount
  * @param $email
  * @param string $plan
  *
  * @throws \Exception|mixed|Exceptions\PaystackInvalidTransactionException
  *
  * @return \Exception|mixed|Exceptions\PaystackInvalidTransactionException
  */
 public function chargeReturningTransaction($authorization, $amount, $email, $plan = '')
 {
     $returningTransaction = ReturningTransaction::make($authorization, $amount, $email, $plan instanceof Plan ? $plan->get('plan_code') : $plan);
     $returningTransaction->setTransactionResource($this->getTransactionResource());
     $transaction = $returningTransaction->charge();
     if ($transaction instanceof \Exception) {
         throw $transaction;
     }
     return $transaction;
 }