diff --git a/src/Domain/TransactionBase.php b/src/Domain/TransactionBase.php index 1f4cc2b..3f9742c 100644 --- a/src/Domain/TransactionBase.php +++ b/src/Domain/TransactionBase.php @@ -29,6 +29,7 @@ class TransactionBase const STATUS_VOIDED = 'Voided'; const STATUS_DECLINED = 'Declined'; const STATUS_REFUND_IN_PROCESSING = 'RefundInProcessing'; + const STATUS_SUSPENDED = 'Suspended'; private $statusAllowed = array( self::STATUS_CREATED, @@ -41,6 +42,7 @@ class TransactionBase self::STATUS_VOIDED, self::STATUS_DECLINED, self::STATUS_REFUND_IN_PROCESSING, + self::STATUS_SUSPENDED ); const MERCHANT_TYPE_SALE = 'SALE'; @@ -419,4 +421,12 @@ public function isStatusRefundInProcessing() { return $this->status == self::STATUS_REFUND_IN_PROCESSING; } -} \ No newline at end of file + + /** + * @return bool + */ + public function isStatusSuspended() + { + return $this->status == self::STATUS_SUSPENDED; + } +} diff --git a/src/Domain/TransactionService.php b/src/Domain/TransactionService.php index 47c1d39..3cb12c9 100644 --- a/src/Domain/TransactionService.php +++ b/src/Domain/TransactionService.php @@ -78,12 +78,16 @@ public static function fromArray(array $data) $data = array_merge($default, $data); + $transactionStatus = !empty($data['transactionStatus']) ? $data['transactionStatus'] : ''; + $status = !empty($data['status']) ? $data['status'] : $transactionStatus; + $transactionStatus = !empty($transactionStatus) ? $transactionStatus : $status; + return new self( $data['orderReference'], (new DateTime('@' . $data['createdDate']))->setTimezone(new DateTimeZone(date_default_timezone_get())), $data['amount'], $data['currency'], - $data['transactionStatus'], + $transactionStatus, (new DateTime('@' . $data['processingDate']))->setTimezone(new DateTimeZone(date_default_timezone_get())), $data['reasonCode'], $data['reason'],