Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
Transaction example
use
Shopware\Core\Framework\Log\Package;
use
Shopware\Core\System\SalesChannel\SalesChannelContext;
#[Package('checkout')]
class
TransactionProcessor
{
public
function
process
(
Cart
$cart
, SalesChannelContext
$context
)
: TransactionCollection
{
$price
=
$cart
->
getPrice
(
)
->
getTotalPrice
(
)
;
return
new
TransactionCollection
(
[
new
Transaction
(
new
CalculatedPrice
(
$price
,
$price
,
$cart
->
getPrice
(
)
->
getCalculatedTaxes
(
)
,
$cart
->
getPrice
(
)
->
getTaxRules
(
)
)
,
$context
->
getPaymentMethod
(
)
->
getId
(
)
)
,
]
)
;
}
}
]
;
$this
->
getContainer
(
)
->
get
(
'product.repository'
)
->
create
(
[
$product
]
, Context::
createDefaultContext
(
)
)
;
return
$productId
;
}
private
function
createTransaction
(
)
: TransactionCollection
{
return
new
TransactionCollection
(
[
new
Transaction
(
new
CalculatedPrice
(
13.37,
13.37,
new
CalculatedTaxCollection
(
)
,
new
TaxRuleCollection
(
)
)
,
$this
->
getValidPaymentMethodId
(
)
)
,
]
)
;
}
if
(
$useFailedPaymentMethod
)
{
$cart
->
setTransactions
(
$this
->
createTransactionWithFailedPaymentMethod
(
)
)
;
return
;
}
$cart
->
setTransactions
(
$this
->
createTransaction
(
)
)
;
}
private
function
createTransaction
(
)
: TransactionCollection
{
return
new
TransactionCollection
(
[
new
Transaction
(
new
CalculatedPrice
(
13.37,
13.37,
new
CalculatedTaxCollection
(
)
,
new
TaxRuleCollection
(
)
)
,
$this
->
getValidPaymentMethodId
(
)
)
,
]
)
;
}