/**
  * @param int $transactionId
  * @param \SubscribePro\Service\Transaction\TransactionInterface|null $transaction
  * @return \SubscribePro\Service\Transaction\TransactionInterface
  * @throws \SubscribePro\Exception\EntityInvalidDataException
  * @throws \SubscribePro\Exception\HttpException
  */
 public function credit($transactionId, TransactionInterface $transaction = null)
 {
     if ($transaction && !$transaction->isServiceDataValid()) {
         throw new EntityInvalidDataException('Currency code not specified for given amount.');
     }
     $postData = $transaction ? [self::API_NAME_TRANSACTION => $transaction->getServiceFormData()] : [];
     $response = $this->httpClient->post("/services/v1/vault/transactions/{$transactionId}/credit.json", $postData);
     return $this->retrieveItem($response, self::API_NAME_TRANSACTION, $transaction);
 }
 /**
  * @param array $data
  * @param bool $isValid
  * @dataProvider isServiceDataValidDataProvider
  */
 public function testIsServiceDataValid($data, $isValid)
 {
     $this->transaction->importData($data);
     $this->assertEquals($isValid, $this->transaction->isServiceDataValid());
 }