Skip to content

Commit 4587cc8

Browse files
authored
Switch to QR code provider (#46)
1 parent 318b605 commit 4587cc8

File tree

4 files changed

+26
-21
lines changed

4 files changed

+26
-21
lines changed

composer.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,16 @@
1717
"require": {
1818
"php": "^7.3|^8.0",
1919
"ext-mbstring": "*",
20-
"rikudou/qr-payment-interface": "^1.0"
20+
"rikudou/qr-payment-interface": "^1.0",
21+
"rikudou/qr-payment-qr-code-provider": "^1.0"
2122
},
2223
"autoload": {
2324
"psr-4": {
2425
"rikudou\\EuQrPayment\\": "src/"
2526
}
2627
},
2728
"suggest": {
28-
"endroid/qr-code": "^3.2"
29+
"endroid/qr-code": "For generating QR code image"
2930
},
3031
"require-dev": {
3132
"phpoffice/phpspreadsheet": "^1.5",

phpstan.neon.dist

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
parameters:
2+
reportUnmatchedIgnoredErrors: false
3+
ignoreErrors:
4+
- '#Attribute class JetBrains.+? does not exist#'

src/QrPayment.php

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use DateTimeInterface;
66
use Endroid\QrCode\QrCode;
7+
use JetBrains\PhpStorm\Deprecated;
78
use rikudou\EuQrPayment\Config\Configuration;
89
use rikudou\EuQrPayment\Config\ConfigurationInterface;
910
use rikudou\EuQrPayment\Exceptions\InvalidIbanException;
@@ -14,9 +15,14 @@
1415
use rikudou\EuQrPayment\Iban\IbanInterface;
1516
use rikudou\EuQrPayment\Sepa\CharacterSet;
1617
use Rikudou\QrPayment\QrPaymentInterface;
18+
use Rikudou\QrPaymentQrCodeProvider\EndroidQrCode3;
19+
use Rikudou\QrPaymentQrCodeProvider\Exception\NoProviderFoundException;
20+
use Rikudou\QrPaymentQrCodeProvider\GetQrCodeTrait;
1721

1822
final class QrPayment implements QrPaymentInterface
1923
{
24+
use GetQrCodeTrait;
25+
2026
/**
2127
* @var IbanInterface
2228
*/
@@ -375,13 +381,24 @@ public function getQrString(): string
375381
*
376382
* @return \Endroid\QrCode\QrCode
377383
*/
384+
#[Deprecated('This method has been deprecated, please use getQrCode()', '%class%->getQrCode()->getRawObject()')]
378385
public function getQrImage(): QrCode
379386
{
380-
if (!class_exists("Endroid\QrCode\QrCode")) {
387+
try {
388+
$code = $this->getQrCode();
389+
if (!$code instanceof EndroidQrCode3) {
390+
throw new \LogicException('Error: library endroid/qr-code is not loaded or is not a 3.x version. For newer versions please use method getQrCode()');
391+
}
392+
// @codeCoverageIgnoreStart
393+
} catch (NoProviderFoundException $e) {
381394
throw new \LogicException('Error: library endroid/qr-code is not loaded.');
395+
// @codeCoverageIgnoreEnd
382396
}
383397

384-
return new QrCode($this->getQrString());
398+
$raw = $code->getRawObject();
399+
assert($raw instanceof QrCode);
400+
401+
return $raw;
385402
}
386403

387404
/**

tests/QrPaymentTest.php

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -332,23 +332,6 @@ public function testSetCurrency()
332332
$this->getDefaultPayment()->setCurrency('EURO');
333333
}
334334

335-
public function testGetQrImageFailure()
336-
{
337-
$this->expectException(LogicException::class);
338-
$payment = $this->getDefaultPayment();
339-
340-
$this->unregisterAutoloader();
341-
342-
try {
343-
$payment
344-
->setBeneficiaryName('My company')
345-
->getQrImage();
346-
} catch (Throwable $exception) {
347-
$this->reregisterAutoloader();
348-
throw $exception;
349-
}
350-
}
351-
352335
public function testGetQrImage()
353336
{
354337
$this->reregisterAutoloader();

0 commit comments

Comments
 (0)