Skip to content

Commit

Permalink
Merge pull request #62 from spryker-eco/feature/apps-138/dev-clean-up…
Browse files Browse the repository at this point in the history
…-payment-api

APPS-138 Clean Up: Payment API
  • Loading branch information
spryker-release-bot authored May 25, 2021
2 parents 3909f45 + 86c5aa3 commit 9db63e0
Show file tree
Hide file tree
Showing 27 changed files with 633 additions and 4,704 deletions.
13 changes: 7 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
name: CI

on:
push:
branches:
- 'master'
pull_request:
workflow_dispatch:
on: [
push,
workflow_dispatch
]

jobs:
validation:
Expand All @@ -28,6 +26,9 @@ jobs:
- name: Run validation
run: composer validate

- name: Run CodeStyle checks
run: composer cs-check

- name: Syntax check
run: find ./src -path src -prune -o -type f -name '*.php' -print0 | xargs -0 -n1 -P4 php -l -n | (! grep -v "No syntax errors detected" )

Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,8 @@
.grunt
.sass-cache
/node_modules/

# tests
tests/**/_generated/
/tests/_output/*
!/tests/_output/.gitkeep
75 changes: 0 additions & 75 deletions .travis.yml

This file was deleted.

7 changes: 4 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,22 @@
"php": ">=7.3",
"spryker/calculation": "^4.0.0",
"spryker/cart": "^5.0.0 || ^7.0.0",
"spryker/checkout-extension": "^1.3.0",
"spryker/config": "^3.0.0",
"spryker/customer": "^7.0.0",
"spryker/glossary": "^3.0.0",
"spryker/guzzle": "^2.1.0",
"spryker/kernel": "^3.33.0",
"spryker/oms": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^10.0.0 || ^11.0.0",
"spryker/propel-orm": "^1.0.0",
"spryker/propel-orm": "^1.6.0",
"spryker/quote": "^2.14.0",
"spryker/refund": "^4.0.0 || ^5.0.0",
"spryker/sales": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^10.0.0 || ^11.0.0",
"spryker/shipment": "^6.0.0 || ^8.0.0",
"spryker/step-engine": "^3.0.0",
"spryker/symfony": "^3.0.0",
"spryker/symfony": "^3.1.1",
"spryker/util-encoding": "^2.0.0",
"spryker/zed-request": "^3.0.0"
"spryker/zed-request": "^3.2.0"
},
"require-dev": {
"spryker/application": "^3.0.0",
Expand Down
3 changes: 3 additions & 0 deletions phpstan.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"defaultLevel": 2
}
1 change: 1 addition & 0 deletions phpstan.neon
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
parameters:
checkMissingIterableValueType: false
checkGenericClassInNonGenericObjectType: false
39 changes: 39 additions & 0 deletions src/SprykerEco/Shared/Payone/Transfer/payone.transfer.xml
Original file line number Diff line number Diff line change
Expand Up @@ -519,4 +519,43 @@
<property name="gender" type="string"/>
</transfer>
<!--Response container replacement related transfers end-->

<transfer name="Refund">
</transfer>

<transfer name="KeyTranslation">
</transfer>

<transfer name="Locale">
</transfer>

<transfer name="CheckoutResponse">
</transfer>

<transfer name="SaveOrder">
</transfer>

<transfer name="PaymentMethods">
</transfer>

<transfer name="CheckoutError">
</transfer>

<transfer name="PaymentMethod">
</transfer>

<transfer name="Customer">
</transfer>

<transfer name="Address">
</transfer>

<transfer name="ShipmentMethod">
</transfer>

<transfer name="Shipment">
</transfer>

<transfer name="PersonalData">
</transfer>
</transfers>
70 changes: 50 additions & 20 deletions src/SprykerEco/Zed/Payone/Business/Order/OrderManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,71 +12,101 @@
use Generated\Shared\Transfer\PaymentPayoneOrderItemTransfer;
use Generated\Shared\Transfer\PayonePaymentTransfer;
use Generated\Shared\Transfer\QuoteTransfer;
use Generated\Shared\Transfer\SaveOrderTransfer;
use Orm\Zed\Payone\Persistence\SpyPaymentPayone;
use Orm\Zed\Payone\Persistence\SpyPaymentPayoneDetail;
use Propel\Runtime\Propel;
use Spryker\Zed\Kernel\Persistence\EntityManager\TransactionTrait;
use SprykerEco\Shared\Payone\PayoneTransactionStatusConstants;
use SprykerEco\Zed\Payone\PayoneConfig;
use SprykerEco\Zed\Payone\Persistence\PayoneEntityManagerInterface;

class OrderManager implements OrderManagerInterface
{
use TransactionTrait;

/**
* @var \SprykerEco\Zed\Payone\PayoneConfig
*/
private $config;
protected $payoneConfig;

/**
* @var \SprykerEco\Zed\Payone\Persistence\PayoneEntityManagerInterface
*/
protected $payoneEntityManager;

/**
* @param \SprykerEco\Zed\Payone\PayoneConfig $config
* @param \SprykerEco\Zed\Payone\PayoneConfig $payoneConfig
* @param \SprykerEco\Zed\Payone\Persistence\PayoneEntityManagerInterface $payoneEntityManager
*/
public function __construct(
PayoneConfig $config,
PayoneConfig $payoneConfig,
PayoneEntityManagerInterface $payoneEntityManager
) {
$this->config = $config;
$this->payoneConfig = $payoneConfig;
$this->payoneEntityManager = $payoneEntityManager;
}

/**
* @deprecated Use {@link \SprykerEco\Zed\Payone\Business\Order\OrderManager::saveOrderPayment()} instead.
*
* @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
* @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponse
*
* @return void
*/
public function saveOrder(QuoteTransfer $quoteTransfer, CheckoutResponseTransfer $checkoutResponse)
{
Propel::getConnection()->beginTransaction();
$this->doSaveOrderPayment($quoteTransfer, $checkoutResponse->getSaveOrder());
}

$paymentTransfer = $quoteTransfer->getPayment()->getPayone();
$paymentTransfer->setFkSalesOrder($checkoutResponse->getSaveOrder()->getIdSalesOrder());
$payment = $this->savePayment($paymentTransfer);
/**
* @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
* @param \Generated\Shared\Transfer\SaveOrderTransfer $saveOrderTransfer
*
* @return void
*/
public function saveOrderPayment(QuoteTransfer $quoteTransfer, SaveOrderTransfer $saveOrderTransfer): void
{
$this->doSaveOrderPayment($quoteTransfer, $saveOrderTransfer);
}

$paymentDetailTransfer = $paymentTransfer->getPaymentDetail();
$this->savePaymentDetail($payment, $paymentDetailTransfer);
$this->savePaymentPayoneOrderItems($checkoutResponse, $payment->getIdPaymentPayone());
/**
* @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
* @param \Generated\Shared\Transfer\SaveOrderTransfer $saveOrderTransfer
*
* @return void
*/
protected function doSaveOrderPayment(QuoteTransfer $quoteTransfer, SaveOrderTransfer $saveOrderTransfer): void
{
if ($quoteTransfer->getPayment()->getPaymentProvider() !== PayoneConfig::PROVIDER_NAME) {
return;
}

Propel::getConnection()->commit();
$quoteTransfer->getPayment()->requirePayone();
$this->getTransactionHandler()->handleTransaction(function () use ($quoteTransfer, $saveOrderTransfer): void {
$paymentTransfer = $quoteTransfer->getPayment()->getPayone();
$paymentTransfer->setFkSalesOrder($saveOrderTransfer->getIdSalesOrder());
$paymentPayoneEntity = $this->savePayment($paymentTransfer);

$paymentDetailTransfer = $paymentTransfer->getPaymentDetail();
$this->savePaymentDetail($paymentPayoneEntity, $paymentDetailTransfer);
$this->savePaymentPayoneOrderItems($saveOrderTransfer, $paymentPayoneEntity->getIdPaymentPayone());
});
}

/**
* @param \Generated\Shared\Transfer\PayonePaymentTransfer $paymentTransfer
*
* @return \Orm\Zed\Payone\Persistence\SpyPaymentPayone
*/
protected function savePayment(PayonePaymentTransfer $paymentTransfer)
protected function savePayment(PayonePaymentTransfer $paymentTransfer): SpyPaymentPayone
{
$payment = new SpyPaymentPayone();
$payment->fromArray(($paymentTransfer->toArray()));

if ($payment->getReference() === null) {
$orderEntity = $payment->getSpySalesOrder();
$payment->setReference($this->config->generatePayoneReference($paymentTransfer, $orderEntity));
$payment->setReference($this->payoneConfig->generatePayoneReference($paymentTransfer, $orderEntity));
}

$payment->save();
Expand All @@ -99,16 +129,16 @@ protected function savePaymentDetail(SpyPaymentPayone $payment, PaymentDetailTra
}

/**
* @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponse
* @param int $idSalesOrderItem
* @param \Generated\Shared\Transfer\SaveOrderTransfer $saveOrderTransfer
* @param int $idPaymentPayone
*
* @return void
*/
protected function savePaymentPayoneOrderItems(CheckoutResponseTransfer $checkoutResponse, int $idSalesOrderItem): void
protected function savePaymentPayoneOrderItems(SaveOrderTransfer $saveOrderTransfer, int $idPaymentPayone): void
{
foreach ($checkoutResponse->getSaveOrder()->getOrderItems() as $itemTransfer) {
foreach ($saveOrderTransfer->getOrderItems() as $itemTransfer) {
$paymentPayoneOrderItemTransfer = (new PaymentPayoneOrderItemTransfer())
->setIdPaymentPayone($idSalesOrderItem)
->setIdPaymentPayone($idPaymentPayone)
->setIdSalesOrderItem($itemTransfer->getIdSalesOrderItem())
->setStatus(PayoneTransactionStatusConstants::STATUS_NEW);

Expand Down
11 changes: 11 additions & 0 deletions src/SprykerEco/Zed/Payone/Business/Order/OrderManagerInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,25 @@

use Generated\Shared\Transfer\CheckoutResponseTransfer;
use Generated\Shared\Transfer\QuoteTransfer;
use Generated\Shared\Transfer\SaveOrderTransfer;

interface OrderManagerInterface
{
/**
* @deprecated Use {@link \SprykerEco\Zed\Payone\Business\Order\OrderManagerInterface::saveOrderPayment()} instead.
*
* @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
* @param \Generated\Shared\Transfer\CheckoutResponseTransfer $checkoutResponse
*
* @return void
*/
public function saveOrder(QuoteTransfer $quoteTransfer, CheckoutResponseTransfer $checkoutResponse);

/**
* @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
* @param \Generated\Shared\Transfer\SaveOrderTransfer $saveOrderTransfer
*
* @return void
*/
public function saveOrderPayment(QuoteTransfer $quoteTransfer, SaveOrderTransfer $saveOrderTransfer): void;
}
Loading

0 comments on commit 9db63e0

Please sign in to comment.