Skip to content

Commit

Permalink
BLIK payments improvements (#55)
Browse files Browse the repository at this point in the history
  • Loading branch information
lchrusciel authored Oct 4, 2024
2 parents eb6644f + da06f43 commit 29860f5
Show file tree
Hide file tree
Showing 8 changed files with 29 additions and 25 deletions.
8 changes: 4 additions & 4 deletions config/services/payum/action.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

namespace Symfony\Component\DependencyInjection\Loader\Configurator;

use CommerceWeavers\SyliusTpayPlugin\Payum\Action\Api\CreateBlik0TransactionAction;
use CommerceWeavers\SyliusTpayPlugin\Payum\Action\Api\CreateBlikLevelZeroTransactionAction;
use CommerceWeavers\SyliusTpayPlugin\Payum\Action\Api\CreateCardTransactionAction;
use CommerceWeavers\SyliusTpayPlugin\Payum\Action\Api\CreateRedirectBasedTransactionAction;
use CommerceWeavers\SyliusTpayPlugin\Payum\Action\Api\CreateTransactionAction;
Expand Down Expand Up @@ -37,12 +37,12 @@
->tag('payum.action', ['factory' => TpayGatewayFactory::NAME, 'alias' => 'cw.tpay.create_card_transaction'])
;

$services->set(CreateBlik0TransactionAction::class)
$services->set(CreateBlikLevelZeroTransactionAction::class)
->args([
service('commerce_weavers_tpay.tpay.factory.create_blik0_payment_payload'),
service('commerce_weavers_tpay.tpay.factory.create_blik_level_zero_payment_payload'),
service('commerce_weavers_tpay.payum.factory.token.notify'),
])
->tag('payum.action', ['factory' => TpayGatewayFactory::NAME, 'alias' => 'cw.tpay.create_blik0_transaction'])
->tag('payum.action', ['factory' => TpayGatewayFactory::NAME, 'alias' => 'cw.tpay.create_blik_level_zero_transaction'])
;

$services->set(CreateRedirectBasedTransactionAction::class)
Expand Down
8 changes: 4 additions & 4 deletions config/services/tpay.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

namespace Symfony\Component\DependencyInjection\Loader\Configurator;

use CommerceWeavers\SyliusTpayPlugin\Tpay\Factory\CreateBlik0PaymentPayloadFactory;
use CommerceWeavers\SyliusTpayPlugin\Tpay\Factory\CreateBlik0PaymentPayloadFactoryInterface;
use CommerceWeavers\SyliusTpayPlugin\Tpay\Factory\CreateBlikLevelZeroPaymentPayloadFactory;
use CommerceWeavers\SyliusTpayPlugin\Tpay\Factory\CreateBlikLevelZeroPaymentPayloadFactoryInterface;
use CommerceWeavers\SyliusTpayPlugin\Tpay\Factory\CreateCardPaymentPayloadFactory;
use CommerceWeavers\SyliusTpayPlugin\Tpay\Factory\CreateCardPaymentPayloadFactoryInterface;
use CommerceWeavers\SyliusTpayPlugin\Tpay\Factory\CreateRedirectBasedPaymentPayloadFactory;
Expand All @@ -27,11 +27,11 @@
return function(ContainerConfigurator $container): void {
$services = $container->services();

$services->set('commerce_weavers_tpay.tpay.factory.create_blik0_payment_payload', CreateBlik0PaymentPayloadFactory::class)
$services->set('commerce_weavers_tpay.tpay.factory.create_blik_level_zero_payment_payload', CreateBlikLevelZeroPaymentPayloadFactory::class)
->args([
service('commerce_weavers_tpay.tpay.factory.create_redirect_based_payment_payload'),
])
->alias(CreateBlik0PaymentPayloadFactoryInterface::class, 'commerce_weavers_tpay.factory.create_blik0_payment_payload')
->alias(CreateBlikLevelZeroPaymentPayloadFactoryInterface::class, 'commerce_weavers_tpay.factory.create_blik_level_zero_payment_payload')
;

$services->set('commerce_weavers_tpay.tpay.factory.create_card_payment_payload', CreateCardPaymentPayloadFactory::class)
Expand Down
5 changes: 5 additions & 0 deletions src/Form/Type/TpayPaymentDetailsType.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Validator\Constraints\Length;

final class TpayPaymentDetailsType extends AbstractType
{
Expand Down Expand Up @@ -35,6 +36,10 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
[
'property_path' => '[blik_token]',
'label' => 'commerce_weavers_sylius_tpay.shop.order_summary.blik.token',
'validation_groups' => ['sylius_checkout_complete'],
'constraints' => [
new Length(exactly: 6, groups: ['sylius_checkout_complete']),
],
],
)
;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,20 @@
use CommerceWeavers\SyliusTpayPlugin\Model\PaymentDetails;
use CommerceWeavers\SyliusTpayPlugin\Payum\Factory\Token\NotifyTokenFactoryInterface;
use CommerceWeavers\SyliusTpayPlugin\Payum\Request\Api\CreateTransaction;
use CommerceWeavers\SyliusTpayPlugin\Tpay\Factory\CreateBlik0PaymentPayloadFactoryInterface;
use CommerceWeavers\SyliusTpayPlugin\Tpay\Factory\CreateBlikLevelZeroPaymentPayloadFactoryInterface;
use Payum\Core\Security\GenericTokenFactoryAwareTrait;
use Sylius\Component\Core\Model\PaymentInterface;
use Tpay\OpenApi\Api\TpayApi;

/**
* @property TpayApi $api
*/
final class CreateBlik0TransactionAction extends AbstractCreateTransactionAction
final class CreateBlikLevelZeroTransactionAction extends AbstractCreateTransactionAction
{
use GenericTokenFactoryAwareTrait;

public function __construct(
private CreateBlik0PaymentPayloadFactoryInterface $createBlik0PaymentPayloadFactory,
private CreateBlikLevelZeroPaymentPayloadFactoryInterface $createBlikLevelZeroPaymentPayloadFactory,
private NotifyTokenFactoryInterface $notifyTokenFactory,
) {
parent::__construct();
Expand All @@ -41,7 +41,7 @@ public function execute($request): void
$paymentDetails = PaymentDetails::fromArray($model->getDetails());

$response = $this->api->transactions()->createTransaction(
$this->createBlik0PaymentPayloadFactory->createFrom($model, $notifyToken->getTargetUrl(), $localeCode),
$this->createBlikLevelZeroPaymentPayloadFactory->createFrom($model, $notifyToken->getTargetUrl(), $localeCode),
);

$paymentDetails->setTransactionId($response['transactionId']);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

use Sylius\Component\Core\Model\PaymentInterface;

final class CreateBlik0PaymentPayloadFactory implements CreateBlik0PaymentPayloadFactoryInterface
final class CreateBlikLevelZeroPaymentPayloadFactory implements CreateBlikLevelZeroPaymentPayloadFactoryInterface
{
public function __construct(
private CreateRedirectBasedPaymentPayloadFactoryInterface $createRedirectBasedPaymentPayloadFactory,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

use Sylius\Component\Core\Model\PaymentInterface;

interface CreateBlik0PaymentPayloadFactoryInterface
interface CreateBlikLevelZeroPaymentPayloadFactoryInterface
{
/**
* @return array<string, mixed>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

namespace Tests\CommerceWeavers\SyliusTpayPlugin\Unit\Payum\Action\Api;

use CommerceWeavers\SyliusTpayPlugin\Payum\Action\Api\CreateBlik0TransactionAction;
use CommerceWeavers\SyliusTpayPlugin\Payum\Action\Api\CreateBlikLevelZeroTransactionAction;
use CommerceWeavers\SyliusTpayPlugin\Payum\Factory\Token\NotifyTokenFactoryInterface;
use CommerceWeavers\SyliusTpayPlugin\Payum\Request\Api\CreateTransaction;
use CommerceWeavers\SyliusTpayPlugin\Tpay\Factory\CreateBlik0PaymentPayloadFactoryInterface;
use CommerceWeavers\SyliusTpayPlugin\Tpay\Factory\CreateBlikLevelZeroPaymentPayloadFactoryInterface;
use CommerceWeavers\SyliusTpayPlugin\Tpay\TpayApi;
use Payum\Core\GatewayInterface;
use Payum\Core\Model\GatewayConfigInterface;
Expand All @@ -21,13 +21,13 @@
use Sylius\Component\Core\Model\PaymentMethodInterface;
use Tpay\OpenApi\Api\Transactions\TransactionsApi;

final class CreateBlik0TransactionActionTest extends TestCase
final class CreateBlikLevelZeroTransactionActionTest extends TestCase
{
use ProphecyTrait;

private TpayApi|ObjectProphecy $api;

private CreateBlik0PaymentPayloadFactoryInterface|ObjectProphecy $createBlik0PaymentPayloadFactory;
private CreateBlikLevelZeroPaymentPayloadFactoryInterface|ObjectProphecy $createBlikLevelZeroPaymentPayloadFactory;

private NotifyTokenFactoryInterface|ObjectProphecy $notifyTokenFactory;

Expand All @@ -36,7 +36,7 @@ final class CreateBlik0TransactionActionTest extends TestCase
protected function setUp(): void
{
$this->api = $this->prophesize(TpayApi::class);
$this->createBlik0PaymentPayloadFactory = $this->prophesize(CreateBlik0PaymentPayloadFactoryInterface::class);
$this->createBlikLevelZeroPaymentPayloadFactory = $this->prophesize(CreateBlikLevelZeroPaymentPayloadFactoryInterface::class);
$this->notifyTokenFactory = $this->prophesize(NotifyTokenFactoryInterface::class);
$this->gateway = $this->prophesize(GatewayInterface::class);
}
Expand Down Expand Up @@ -132,7 +132,7 @@ public function test_it_creates_a_payment_and_requests_paying_it_with_a_provided

$this->notifyTokenFactory->create($payment, 'tpay', 'pl_PL')->willReturn($notifyToken);

$this->createBlik0PaymentPayloadFactory
$this->createBlikLevelZeroPaymentPayloadFactory
->createFrom($payment, 'https://cw.org/notify', 'pl_PL')
->willReturn(['factored' => 'payload'])
;
Expand Down Expand Up @@ -184,7 +184,7 @@ public function test_it_tries_to_determine_a_gateway_name_by_model_once_token_is

$this->notifyTokenFactory->create($payment, 'tpay', 'pl_PL')->willReturn($notifyToken);

$this->createBlik0PaymentPayloadFactory
$this->createBlikLevelZeroPaymentPayloadFactory
->createFrom($payment, 'https://cw.org/notify', 'pl_PL')
->willReturn(['factored' => 'payload'])
;
Expand All @@ -204,10 +204,10 @@ public function test_it_throws_an_exception_when_a_gateway_name_cannot_be_determ
$this->createTestSubject()->execute($request->reveal());
}

private function createTestSubject(): CreateBlik0TransactionAction
private function createTestSubject(): CreateBlikLevelZeroTransactionAction
{
$action = new CreateBlik0TransactionAction(
$this->createBlik0PaymentPayloadFactory->reveal(),
$action = new CreateBlikLevelZeroTransactionAction(
$this->createBlikLevelZeroPaymentPayloadFactory->reveal(),
$this->notifyTokenFactory->reveal(),
);

Expand Down
1 change: 0 additions & 1 deletion tests/Unit/Payum/Action/CaptureActionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
namespace Tests\CommerceWeavers\SyliusTpayPlugin\Unit\Payum\Action;

use CommerceWeavers\SyliusTpayPlugin\Payum\Action\CaptureAction;
use CommerceWeavers\SyliusTpayPlugin\Payum\Factory\CreateBlik0TransactionFactory;
use CommerceWeavers\SyliusTpayPlugin\Payum\Factory\CreateTransactionFactoryInterface;
use CommerceWeavers\SyliusTpayPlugin\Payum\Request\Api\CreateTransaction;
use Payum\Core\GatewayInterface;
Expand Down

0 comments on commit 29860f5

Please sign in to comment.