public PaymentTransactionJson(final PaymentTransaction transaction, final String paymentExternalKey, @Nullable final List<AuditLog> transactionLogs) {
this(transaction.getId(),
transaction.getExternalKey(),
transaction.getPaymentId(),
paymentExternalKey,
transaction.getTransactionType(),
transaction.getAmount(),
transaction.getCurrency() != null ? transaction.getCurrency() : null,
transaction.getEffectiveDate(),
transaction.getProcessedAmount(),
transaction.getProcessedCurrency() != null ? transaction.getProcessedCurrency() : null,
transaction.getTransactionStatus() != null ? transaction.getTransactionStatus().toString() : null,
transaction.getGatewayErrorCode(),
transaction.getGatewayErrorMsg(),
transaction.getPaymentInfoPlugin() == null ? null : transaction.getPaymentInfoPlugin().getFirstPaymentReferenceId(),
transaction.getPaymentInfoPlugin() == null ? null : transaction.getPaymentInfoPlugin().getSecondPaymentReferenceId(),
transaction.getPaymentInfoPlugin() == null ? null : toPluginPropertyJson(transaction.getPaymentInfoPlugin().getProperties()),
toAuditLogJson(transactionLogs));
}