Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Protected Member Functions | Protected Attributes
Transaction Class Reference
Inheritance diagram for Transaction:
EntityAbstract TransactionResourceInterface AbstractDb AbstractResource

Public Member Functions

 injectAsParent (\Magento\Sales\Model\Order\Payment\Transaction $transaction)
 
 loadObjectByTxnId (\Magento\Sales\Model\Order\Payment\Transaction $transaction, $orderId, $paymentId, $txnId)
 
 getOrderWebsiteId ($orderId)
 
- Public Member Functions inherited from EntityAbstract
 __construct (\Magento\Framework\Model\ResourceModel\Db\Context $context, Snapshot $entitySnapshot, RelationComposite $entityRelationComposite, \Magento\Sales\Model\ResourceModel\Attribute $attribute, Manager $sequenceManager, $connectionName=null)
 
 saveAttribute (\Magento\Framework\Model\AbstractModel $object, $attribute)
 
- Public Member Functions inherited from AbstractDb
 __construct (\Magento\Framework\Model\ResourceModel\Db\Context $context, $connectionName=null)
 
 __sleep ()
 
 __wakeup ()
 
 getIdFieldName ()
 
 getMainTable ()
 
 getTable ($tableName)
 
 getConnection ()
 
 load (\Magento\Framework\Model\AbstractModel $object, $value, $field=null)
 
 save (\Magento\Framework\Model\AbstractModel $object)
 
 delete (\Magento\Framework\Model\AbstractModel $object)
 
 addUniqueField ($field)
 
 resetUniqueField ()
 
 unserializeFields (\Magento\Framework\Model\AbstractModel $object)
 
 getUniqueFields ()
 
 hasDataChanged ($object)
 
 getChecksum ($table)
 
 afterLoad (\Magento\Framework\DataObject $object)
 
 beforeSave (\Magento\Framework\DataObject $object)
 
 afterSave (\Magento\Framework\DataObject $object)
 
 beforeDelete (\Magento\Framework\DataObject $object)
 
 afterDelete (\Magento\Framework\DataObject $object)
 
 serializeFields (\Magento\Framework\Model\AbstractModel $object)
 
- Public Member Functions inherited from AbstractResource
 __construct ()
 
 getConnection ()
 
 beginTransaction ()
 
 addCommitCallback ($callback)
 
 commit ()
 
 rollBack ()
 
 getValidationRulesBeforeSave ()
 
- Public Member Functions inherited from TransactionResourceInterface
 save (\Magento\Framework\Model\AbstractModel $object)
 
 load (\Magento\Framework\Model\AbstractModel $object, $value, $field=null)
 
 delete (\Magento\Framework\Model\AbstractModel $object)
 

Protected Member Functions

 _construct ()
 
 _beforeSave (\Magento\Framework\Model\AbstractModel $transaction)
 
- Protected Member Functions inherited from EntityAbstract
 _prepareDataForSave (\Magento\Framework\Model\AbstractModel $object)
 
 _afterSave (\Magento\Framework\Model\AbstractModel $object)
 
 updateObject (\Magento\Framework\Model\AbstractModel $object)
 
 saveNewObject (\Magento\Framework\Model\AbstractModel $object)
 
 _afterDelete (\Magento\Framework\Model\AbstractModel $object)
 
- Protected Member Functions inherited from AbstractDb
 _init ($mainTable, $idFieldName)
 
 _setResource ($connections, $tables=null)
 
 _setMainTable ($mainTable, $idFieldName=null)
 
 _getConnection ($resourceName)
 
 _getLoadSelect ($field, $value, $object)
 
 _initUniqueFields ()
 
 _prepareDataForSave (\Magento\Framework\Model\AbstractModel $object)
 
 _prepareValueForSave ($value, $type)
 
 _checkUnique (\Magento\Framework\Model\AbstractModel $object)
 
 _afterLoad (\Magento\Framework\Model\AbstractModel $object)
 
 _beforeSave (\Magento\Framework\Model\AbstractModel $object)
 
 _afterSave (\Magento\Framework\Model\AbstractModel $object)
 
 _beforeDelete (\Magento\Framework\Model\AbstractModel $object)
 
 _afterDelete (\Magento\Framework\Model\AbstractModel $object)
 
 _serializeFields (\Magento\Framework\Model\AbstractModel $object)
 
 prepareDataForUpdate ($object)
 
 isObjectNotNew (\Magento\Framework\Model\AbstractModel $object)
 
 saveNewObject (\Magento\Framework\Model\AbstractModel $object)
 
 updateObject (\Magento\Framework\Model\AbstractModel $object)
 
 processAfterSaves (\Magento\Framework\Model\AbstractModel $object)
 
 isModified (\Magento\Framework\Model\AbstractModel $object)
 
 processNotModifiedSave (\Magento\Framework\Model\AbstractModel $object)
 
- Protected Member Functions inherited from AbstractResource
 _construct ()
 
 _serializeField (DataObject $object, $field, $defaultValue=null, $unsetEmpty=false)
 
 _unserializeField (DataObject $object, $field, $defaultValue=null)
 
 _prepareDataForTable (DataObject $object, $table)
 
 _prepareTableValueForSave ($value, $type)
 
 _getColumnsForEntityLoad (\Magento\Framework\Model\AbstractModel $object, $tableName)
 
 getSerializer ()
 

Protected Attributes

 $_serializableFields = ['additional_information' => [null, []]]
 
- Protected Attributes inherited from EntityAbstract
 $_eventPrefix = 'sales_order_resource'
 
 $_eventObject = 'resource'
 
 $_useIsObjectNew = true
 
 $_eavEntityTypeFactory
 
 $attribute
 
 $sequenceManager
 
- Protected Attributes inherited from AbstractDb
 $_resources
 
 $connectionName = \Magento\Framework\App\ResourceConnection::DEFAULT_CONNECTION
 
 $_connections = []
 
 $_resourceModel
 
 $_tables = []
 
 $_mainTable
 
 $_idFieldName
 
 $_isPkAutoIncrement = true
 
 $_useIsObjectNew = false
 
 $_mainTableFields
 
 $_uniqueFields = null
 
 $_serializableFields = []
 
 $transactionManager
 
 $objectRelationProcessor
 
- Protected Attributes inherited from AbstractResource
 $serializer
 
 $_logger
 

Detailed Description

Sales transaction resource model

Author
Magento Core Team core@.nosp@m.mage.nosp@m.ntoco.nosp@m.mmer.nosp@m.ce.co.nosp@m.m

Definition at line 16 of file Transaction.php.

Member Function Documentation

◆ _beforeSave()

_beforeSave ( \Magento\Framework\Model\AbstractModel  $transaction)
protected

Lookup for parent_id in already saved transactions of this payment by the order_id Also serialize additional information, if any

Parameters
\Magento\Framework\Model\AbstractModel | \Magento\Sales\Model\Order\Payment\Transaction$transaction
Exceptions

Definition at line 135 of file Transaction.php.

136  {
137  $parentTxnId = $transaction->getData('parent_txn_id');
138  $txnId = $transaction->getData('txn_id');
139  $orderId = $transaction->getData('order_id');
140  $paymentId = $transaction->getData('payment_id');
141  $idFieldName = $this->getIdFieldName();
142 
143  if ($parentTxnId) {
144  if (!$txnId || !$orderId || !$paymentId) {
145  throw new \Magento\Framework\Exception\LocalizedException(
146  __('We don\'t have enough information to save the parent transaction ID.')
147  );
148  }
149  $parentId = (int)$this->_lookupByTxnId($orderId, $paymentId, $parentTxnId, $idFieldName);
150  if ($parentId) {
151  $transaction->setData('parent_id', $parentId);
152  }
153  }
154 
155  // make sure unique key won't cause trouble
156  if ($transaction->isFailsafe()) {
157  $autoincrementId = (int)$this->_lookupByTxnId($orderId, $paymentId, $txnId, $idFieldName);
158  if ($autoincrementId) {
159  $transaction->setData($idFieldName, $autoincrementId)->isObjectNew(false);
160  }
161  }
162 
163  return parent::_beforeSave($transaction);
164  }
$transaction
__()
Definition: __.php:13

◆ _construct()

_construct ( )
protected

Initialize main table and the primary key field name

Returns
void

Definition at line 30 of file Transaction.php.

31  {
32  $this->_init('sales_payment_transaction', 'transaction_id');
33  }

◆ getOrderWebsiteId()

getOrderWebsiteId (   $orderId)

Retrieve order website id

Parameters
int$orderId
Returns
string

Definition at line 111 of file Transaction.php.

112  {
113  $connection = $this->getConnection();
114  $bind = [':entity_id' => $orderId];
115  $select = $connection->select()->from(
116  ['so' => $this->getTable('sales_order')],
117  'cs.website_id'
118  )->joinInner(
119  ['cs' => $this->getTable('store')],
120  'cs.store_id = so.store_id'
121  )->where(
122  'so.entity_id = :entity_id'
123  );
124  return $connection->fetchOne($select, $bind);
125  }
$connection
Definition: bulk.php:13

◆ injectAsParent()

injectAsParent ( \Magento\Sales\Model\Order\Payment\Transaction  $transaction)

Update transactions in database using provided transaction as parent for them have to repeat the business logic to avoid accidental injection of wrong transactions

Parameters
\Magento\Sales\Model\Order\Payment\Transaction$transaction
Returns
void

Definition at line 42 of file Transaction.php.

43  {
44  $txnId = $transaction->getTxnId();
45  if ($txnId &&
46  \Magento\Sales\Model\Order\Payment\Transaction::TYPE_PAYMENT === $transaction->getTxnType() &&
47  ($id = $transaction->getId())
48  ) {
49  $connection = $this->getConnection();
50 
51  // verify such transaction exists, determine payment and order id
52  $verificationRow = $connection->fetchRow(
53  $connection->select()->from(
54  $this->getMainTable(),
55  ['payment_id', 'order_id']
56  )->where(
57  "{$this->getIdFieldName()} = ?",
58  (int)$id
59  )
60  );
61  if (!$verificationRow) {
62  return;
63  }
64  list($paymentId, $orderId) = array_values($verificationRow);
65 
66  // inject
67  $where = [
68  $connection->quoteIdentifier($this->getIdFieldName()) . '!=?' => $id,
69  new \Zend_Db_Expr('parent_id IS NULL'),
70  'payment_id = ?' => (int)$paymentId,
71  'order_id = ?' => (int)$orderId,
72  'parent_txn_id = ?' => $txnId,
73  ];
74  $connection->update($this->getMainTable(), ['parent_id' => $id], $where);
75  }
76  }
$transaction
$id
Definition: fieldset.phtml:14
$connection
Definition: bulk.php:13

◆ loadObjectByTxnId()

loadObjectByTxnId ( \Magento\Sales\Model\Order\Payment\Transaction  $transaction,
  $orderId,
  $paymentId,
  $txnId 
)

Load the transaction object by specified txn_id

Parameters
\Magento\Sales\Model\Order\Payment\Transaction$transaction
int$orderId
int$paymentId
string$txnId
Returns
\Magento\Sales\Model\Order\Payment\Transaction

Definition at line 87 of file Transaction.php.

92  {
93  $select = $this->_getLoadByUniqueKeySelect($orderId, $paymentId, $txnId);
94  $data = $this->getConnection()->fetchRow($select);
95  if (!$data) {
96  return $transaction;
97  }
98  $transaction->setData($data);
100  $this->_afterLoad($transaction);
101 
102  return $transaction;
103  }
$transaction
unserializeFields(\Magento\Framework\Model\AbstractModel $object)
Definition: AbstractDb.php:502
_afterLoad(\Magento\Framework\Model\AbstractModel $object)
Definition: AbstractDb.php:641

Field Documentation

◆ $_serializableFields

$_serializableFields = ['additional_information' => [null, []]]
protected

Definition at line 23 of file Transaction.php.


The documentation for this class was generated from the following file: