Skip to content

Commit 9d116dd

Browse files
authored
Merge pull request #13 from acornforth/master
Multiple Fixes
2 parents 6ff7435 + 6c0bf5b commit 9d116dd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+794
-791
lines changed

.gitignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Package Control
2+
/composer.lock
3+
4+
# Vendor Files
5+
/vendor
6+
7+
# IDE/Workspace settings
8+
/.idea
9+

README.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,40 @@ public function registerBundles()
2525
}
2626
```
2727

28+
### Optional Installation steps
29+
30+
#### Money Amount Conversion
31+
32+
By default sylius stores prices as integer values representing the amount in cents/pence or smallest unit.
33+
34+
If you have modified sylius to store money amounts in a different format, or with a different precision, then you will need to override.
35+
36+
Example, if your copy of sylius stores 4 decimals instead of 2, then you will need to override the class like this:
37+
38+
```php
39+
<?php declare(strict_types = 1);
40+
41+
namespace App\Provider\Sagepay;
42+
43+
use Sbarbat\SyliusSagepayPlugin\Provider\AmountProvider as BaseAmountProvider;
44+
use Sylius\Component\Core\Model\PaymentInterface;
45+
46+
47+
class AmountProvider extends BaseAmountProvider
48+
{
49+
public function getAmount(PaymentInterface $payment): string
50+
{
51+
return (string) ($payment->getAmount() / 10000);
52+
}
53+
}
54+
```
55+
56+
and add an entry to your service config to point to it:
57+
```yaml
58+
Sbarbat\SyliusSagepayPlugin\Provider\AmountProvider:
59+
class: App\Provider\Sagepay\AmountProvider
60+
61+
```
2862

2963
### Test Cards
3064

composer.json

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,18 @@
1313
],
1414
"require": {
1515
"php": "^7.1",
16-
17-
"sylius/sylius": "^1.1"
16+
"sylius/sylius": "^1.1",
17+
"ext-curl": "*",
18+
"ext-json": "*"
1819
},
1920
"require-dev": {
20-
"php-http/guzzle6-adapter": "^1.0",
21-
"phpspec/phpspec": "^3.2",
22-
"phpunit/phpunit": "^7",
23-
"behat/behat": "^3.3",
24-
"behat/mink": "^1.7",
25-
"behat/mink-browserkit-driver": "^1.3",
26-
"behat/mink-extension": "^2.2",
27-
"behat/mink-selenium2-driver": "^1.3",
28-
"friends-of-behat/context-service-extension": "^1.0",
29-
"friends-of-behat/cross-container-extension": "^1.0",
30-
"friends-of-behat/service-container-extension": "^1.0",
31-
"friends-of-behat/symfony-extension": "^1.0",
32-
"friends-of-behat/variadic-extension": "^1.0",
33-
"lakion/mink-debug-extension": "^1.2.3",
34-
"se/selenium-server-standalone": "^2.52",
35-
"symplify/easy-coding-standard": "^2.4",
36-
"sylius-labs/coding-standard": "^1.0"
21+
"phpunit/phpunit": "^9.5",
22+
"phpspec/phpspec": "^7.1",
23+
"php-http/guzzle6-adapter": "^2.0",
24+
"behat/behat": "^3.8",
25+
"symplify/easy-coding-standard": "^9.4",
26+
"sylius-labs/coding-standard": "^4.1",
27+
"phpstan/phpstan": "^0.12.94"
3728
},
3829
"autoload": {
3930
"psr-4": {

ecs.php

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use PhpCsFixer\Fixer\ArrayNotation\ArraySyntaxFixer;
6+
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
7+
use Symplify\EasyCodingStandard\ValueObject\Option;
8+
use Symplify\EasyCodingStandard\ValueObject\Set\SetList;
9+
10+
return static function (ContainerConfigurator $containerConfigurator): void {
11+
$parameters = $containerConfigurator->parameters();
12+
$parameters->set(Option::PATHS, [
13+
__DIR__ . '/src',
14+
__DIR__ . '/tests',
15+
]);
16+
17+
$services = $containerConfigurator->services();
18+
$services->set(ArraySyntaxFixer::class)
19+
->call('configure', [[
20+
'syntax' => 'short',
21+
]]);
22+
23+
// run and fix, one by one
24+
$containerConfigurator->import(SetList::SPACES);
25+
$containerConfigurator->import(SetList::ARRAY);
26+
$containerConfigurator->import(SetList::SYMFONY);
27+
$containerConfigurator->import(SetList::PSR_12);
28+
$containerConfigurator->import(SetList::STRICT);
29+
$containerConfigurator->import(SetList::NAMESPACES);
30+
$containerConfigurator->import(SetList::CONTROL_STRUCTURES);
31+
$containerConfigurator->import(SetList::PHP_CS_FIXER);
32+
$containerConfigurator->import(SetList::DOCBLOCK);
33+
$containerConfigurator->import(SetList::CLEAN_CODE);
34+
$containerConfigurator->import(SetList::SYMPLIFY);
35+
};

src/Action/Api/DirectApiAwareAction.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
use Payum\Core\ApiAwareTrait;
1010
use Payum\Core\GatewayAwareInterface;
1111
use Payum\Core\GatewayAwareTrait;
12-
1312
use Sbarbat\SyliusSagepayPlugin\SagepayDirectApi;
1413

15-
abstract class DirectApiAwareAction implements GatewayAwareInterface, ApiAwareInterface
14+
abstract class DirectApiAwareAction implements ActionInterface, GatewayAwareInterface, ApiAwareInterface
1615
{
1716
use GatewayAwareTrait;
17+
1818
use ApiAwareTrait;
1919

2020
public function __construct()

src/Action/Api/FormApiAwareAction.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
use Payum\Core\ApiAwareTrait;
1010
use Payum\Core\GatewayAwareInterface;
1111
use Payum\Core\GatewayAwareTrait;
12-
1312
use Sbarbat\SyliusSagepayPlugin\SagepayFormApi;
1413

1514
abstract class FormApiAwareAction implements ActionInterface, GatewayAwareInterface, ApiAwareInterface
1615
{
1716
use GatewayAwareTrait;
17+
1818
use ApiAwareTrait;
1919

2020
public function __construct()

src/Action/Integrations/Direct/CaptureAction.php

Lines changed: 13 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,36 +4,22 @@
44

55
namespace Sbarbat\SyliusSagepayPlugin\Action\Integrations\Direct;
66

7-
use Payum\Core\Action\ActionInterface;
8-
use Payum\Core\ApiAwareInterface;
9-
use Payum\Core\ApiAwareTrait;
107
use Payum\Core\Bridge\Spl\ArrayObject;
118
use Payum\Core\Exception\RequestNotSupportedException;
12-
use Payum\Core\GatewayAwareInterface;
13-
use Payum\Core\GatewayAwareTrait;
14-
use Payum\Core\Request\Convert;
9+
use Payum\Core\Reply\HttpResponse;
1510
use Payum\Core\Request\Capture;
1611
use Payum\Core\Request\GetHttpRequest;
1712
use Payum\Core\Request\RenderTemplate;
18-
use Payum\Core\Reply\HttpResponse;
1913
use Payum\Core\Security\GenericTokenFactoryAwareInterface;
2014
use Payum\Core\Security\GenericTokenFactoryAwareTrait;
21-
22-
use Sylius\Component\Core\Model\PaymentInterface;
23-
24-
use Sbarbat\SyliusSagepayPlugin\SagepayFormApi;
2515
use Sbarbat\SyliusSagepayPlugin\Action\Api\DirectApiAwareAction;
26-
use Sbarbat\SyliusSagepayPlugin\Request\Api\ExecutePayment;
27-
use Sbarbat\SyliusSagepayPlugin\Action\Integrations\Direct\ExecutePaymentAction;
16+
use Sylius\Component\Core\Model\PaymentInterface;
2817

29-
class CaptureAction extends DirectApiAwareAction implements ActionInterface, ApiAwareInterface, GatewayAwareInterface, GenericTokenFactoryAwareInterface
18+
class CaptureAction extends DirectApiAwareAction implements GenericTokenFactoryAwareInterface
3019
{
31-
use GatewayAwareTrait;
3220
use GenericTokenFactoryAwareTrait;
3321

3422
/**
35-
* {@inheritDoc}
36-
*
3723
* @param Capture $request
3824
*/
3925
public function execute($request)
@@ -42,44 +28,41 @@ public function execute($request)
4228

4329
$model = ArrayObject::ensureArrayObject($request->getModel());
4430
$payment = $request->getFirstModel();
45-
31+
4632
$getHttpRequest = new GetHttpRequest();
4733
$this->gateway->execute($getHttpRequest);
4834

4935
if ('POST' === $getHttpRequest->method) {
5036
if (isset($getHttpRequest->request['get_merchant_session']) && (
51-
"true" === $getHttpRequest->request['get_merchant_session']
37+
'true' === $getHttpRequest->request['get_merchant_session']
5238
|| true === $getHttpRequest->request['get_merchant_session']
5339
)) {
5440
throw new HttpResponse($this->api->getMerchantSessionKey());
5541
}
56-
42+
5743
$model['card-identifier'] = $getHttpRequest->request['card-identifier'];
5844
$model['merchant-session-key'] = $getHttpRequest->request['merchant-session-key'];
5945

6046
return;
6147
}
62-
48+
6349
$template = $this->api->getOption('payum.sagepay.template.layout');
64-
$this->gateway->execute($renderTemplate = new RenderTemplate($template, array(
50+
$this->gateway->execute($renderTemplate = new RenderTemplate($template, [
6551
'model' => $model,
6652
'payment' => $payment,
67-
'sagepayJs' => $this->api->getApiEndpoint() . 'js/sagepay.js',
53+
'sagepayJs' => $this->api->getApiEndpoint().'js/sagepay.js',
6854
'merchantSessionRoute' => $this->api->getOption('payum.sagepay.merchant_session_route_name'),
6955
'token' => $request->getToken(),
70-
'actionUrl' => $request->getToken() ? $request->getToken()->getTargetUrl() : null,
71-
)));
56+
'actionUrl' => $request->getToken() ? $request->getToken()
57+
->getTargetUrl() : null,
58+
]));
7259

7360
throw new HttpResponse($renderTemplate->getResult());
7461
}
7562

76-
/**
77-
* {@inheritDoc}
78-
*/
7963
public function supports($request)
8064
{
81-
return
82-
$request instanceof Capture &&
65+
return $request instanceof Capture &&
8366
$request->getModel() instanceof \ArrayAccess &&
8467
$request->getFirstModel() instanceof PaymentInterface
8568
;

src/Action/Integrations/Direct/ConvertPaymentAction.php

Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,38 +4,20 @@
44

55
namespace Sbarbat\SyliusSagepayPlugin\Action\Integrations\Direct;
66

7-
use Payum\Core\Action\ActionInterface;
8-
use Payum\Core\ApiAwareInterface;
9-
use Payum\Core\ApiAwareTrait;
107
use Payum\Core\Bridge\Spl\ArrayObject;
118
use Payum\Core\Exception\RequestNotSupportedException;
12-
use Payum\Core\GatewayAwareInterface;
13-
use Payum\Core\GatewayAwareTrait;
149
use Payum\Core\Request\Convert;
15-
use Payum\Core\Request\Capture;
16-
use Payum\Core\Request\GetHttpRequest;
17-
use Payum\Core\Reply\HttpPostRedirect;
18-
use Payum\Core\Reply\HttpRedirect;
1910
use Payum\Core\Security\GenericTokenFactoryAwareInterface;
2011
use Payum\Core\Security\GenericTokenFactoryAwareTrait;
12+
use Sbarbat\SyliusSagepayPlugin\Action\Api\DirectApiAwareAction;
2113
use Sylius\Component\Core\Model\OrderInterface;
2214
use Sylius\Component\Core\Model\PaymentInterface;
2315

24-
use Sbarbat\SyliusSagepayPlugin\SagepayDirectApi;
25-
use Sbarbat\SyliusSagepayPlugin\Action\Api\DirectApiAwareAction;
26-
27-
class ConvertPaymentAction extends DirectApiAwareAction implements ActionInterface, ApiAwareInterface, GatewayAwareInterface, GenericTokenFactoryAwareInterface
16+
class ConvertPaymentAction extends DirectApiAwareAction implements GenericTokenFactoryAwareInterface
2817
{
29-
use GatewayAwareTrait;
3018
use GenericTokenFactoryAwareTrait;
3119

32-
public function __construct()
33-
{
34-
$this->apiClass = SagepayDirectApi::class;
35-
}
3620
/**
37-
* {@inheritDoc}
38-
*
3921
* @param Convert $request
4022
*/
4123
public function execute($request)
@@ -57,19 +39,15 @@ public function execute($request)
5739
$details['customerLocale'] = $order->getLocaleCode();
5840
$details['countryCode'] = null !== $order->getShippingAddress() ? $order->getShippingAddress()->getCountryCode() : null;
5941
$details['currencyCode'] = $payment->getCurrencyCode();
60-
42+
6143
$request->setResult((array) $details);
6244
}
6345

64-
/**
65-
* {@inheritDoc}
66-
*/
6746
public function supports($request)
6847
{
69-
return
70-
$request instanceof Convert &&
48+
return $request instanceof Convert &&
7149
$request->getSource() instanceof PaymentInterface &&
72-
$request->getTo() == 'array'
50+
'array' === $request->getTo()
7351
;
7452
}
7553
}

0 commit comments

Comments
 (0)