Skip to content

Commit

Permalink
fix Afterpay error messages numbers not recognized
Browse files Browse the repository at this point in the history
  • Loading branch information
Miguel Vela Romera committed Sep 22, 2020
1 parent b31a507 commit ba1b6ed
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 7 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "payvision/payvision-sdk-php",
"description": "Payvision PHP SDK",
"type": "library",
"version": "5.1.0",
"version": "5.1.1",
"license": "MIT",
"require": {
"php": "^7.2.5|^7.3",
Expand Down
2 changes: 1 addition & 1 deletion src/Domain/Service/Helper/AfterpayErrorMessageHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ public static function extractMessageCodes(string $errorDetail): array
*/
protected static function extractMessageCode(string $message): string
{
if (\preg_match('/^(field\.)?(?P<code>[a-z]+\.[a-z.]+)/', $message, $matches)) {
if (\preg_match('/^(field\.)?(?P<code>[a-z]+\.[a-z0-9.]+)/', $message, $matches)) {
return $matches['code'];
}
throw new AfterpayErrorException('Unable to handle Afterpay error code: ' . $message);
Expand Down
5 changes: 3 additions & 2 deletions tests/Test/Api/AbstractPaymentTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,10 @@ protected function createFakePaymentRequest(): PaymentRequest

protected function prepareFakePaymentRequest(): void
{
$this->paymentRequestBuilder->header()->setBusinessId($this->credentials['businessId']);
$this->paymentRequestBuilder->body()->transaction()->setStoreId(1);
$this->paymentRequestBuilder->header()
->setBusinessId($this->credentials['businessId']);
$this->paymentRequestBuilder->body()->transaction()
->setStoreId(1)
->setAmount(1.00)
->setPurchaseId('1234')
->setTrackingCode($this->generateTrackingCode())
Expand Down
32 changes: 30 additions & 2 deletions tests/Test/Api/AfterpayTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,12 @@
use Payvision\SDK\Application\Payments\Service\RequestBuilder;
use Payvision\SDK\DataType\Date;
use Payvision\SDK\Domain\Payments\Service\Builder\Composite\Payment\Request as PaymentRequestBuilder;
use Payvision\SDK\Domain\Payments\Service\Builder\OrderLine as OrderLineBuilder;
use Payvision\SDK\Domain\Payments\ValueObject\Customer;
use Payvision\SDK\Domain\Payments\ValueObject\Payment\Response as PaymentResponse;
use Payvision\SDK\Exception\Api\ErrorResponse;
use Payvision\SDK\Exception\ApiException;
use Payvision\SDK\Exception\BuilderException;
use Payvision\SDK\Exception\DataTypeException;
use ReflectionException;

class AfterpayTest extends AbstractTestCase
Expand All @@ -28,11 +29,17 @@ class AfterpayTest extends AbstractTestCase
*/
private $paymentRequestBuilder;

/**
* @var OrderLineBuilder
*/
private $orderLineBuilder;

protected function setUp(): void
{
parent::setUp();

$this->paymentRequestBuilder = new PaymentRequestBuilder();
$this->orderLineBuilder = new OrderLineBuilder();
}

/**
Expand All @@ -45,8 +52,9 @@ public function testMakePaymentRequest(): void
{
$this->paymentRequestBuilder->setAction('payment');
$this->paymentRequestBuilder->header()->setBusinessId($this->credentials['businessId']);
$this->paymentRequestBuilder->body()->transaction()->setStoreId(1);
$this->paymentRequestBuilder->body()->transaction()
->setStoreId(1)
->setLanguageCode('nl')
->setAmount(50.00)
->setBrandId(5020)
->setTrackingCode($this->generateTrackingCode())
Expand All @@ -57,6 +65,7 @@ public function testMakePaymentRequest(): void
->setIpAddress('127.0.0.1')
->setGivenName('John')
->setFamilyName('Doe')
->setSex(Customer::SEX_MALE)
->setBirthDate((new Date('35 years ago')))
->setEmail('[email protected]')
->setPhoneNumber('+31 (0)40 1234567');
Expand All @@ -72,6 +81,25 @@ public function testMakePaymentRequest(): void
->setStreet('Marconilaan')
->setHouseNumber('16')
->setZip('5621 AA');
$this->paymentRequestBuilder->body()->shippingAddress()->customer()
->setIpAddress('127.0.0.1')
->setGivenName('John')
->setFamilyName('Doe')
->setSex(Customer::SEX_MALE)
->setBirthDate((new Date('35 years ago')))
->setEmail('[email protected]')
->setPhoneNumber('+31 (0)40 1234567');
$this->paymentRequestBuilder->body()->order()->setOrderLines([
$this->orderLineBuilder
->setDescription('Order Line')
->setItemAmount(50.00)
->setTotalAmount(50.00)
->setProductCode('ABC123')
->setQuantity(1)
->setPurchaseType('4') // Temporary value, needs to be deleted as soon as the backend of payvision is fixed
->setTaxPercentage(21.00)
->build(),
]);

$requestObject = $this->paymentRequestBuilder->build();
$apiRequest = RequestBuilder::newPayment($requestObject);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ public function testExtractMessageCodes(string $errorCode, array $expected): voi
self::assertSame($expected, AfterpayErrorMessageHelper::extractMessageCodes($errorCode));
}

// phpcs:disable ObjectCalisthenics.Files.FunctionLength.ObjectCalisthenics\Sniffs\Files\FunctionLengthSniff

/**
* @return array|array[]
*/
public function afterpayExtractMessageCodeProvider(): array
{
return [
Expand All @@ -42,9 +47,27 @@ public function afterpayExtractMessageCodeProvider(): array
AfterpayErrorMessageHelper::BILLTO_HOUSENUMBERADDITION_MISSING,
],
],
'phone number 1 missing' => [
'field.billto.phonenumber1.missing (Het telefoonnummer ontbreekt)',
[AfterpayErrorMessageHelper::BILLTO_PHONENUMBER1_MISSING],
],
'phone number 1 invalid' => [
'field.billto.phonenumber1.invalid (fixed line and/or mobile number is invalid)',
[AfterpayErrorMessageHelper::BILLTO_PHONENUMBER1_INVALID],
],
'phone number 2 missing' => [
'field.billto.phonenumber2.missing (Het telefoonnummer ontbreekt)',
[AfterpayErrorMessageHelper::BILLTO_PHONENUMBER2_MISSING],
],
'phone number 2 invalid' => [
'field.billto.phonenumber2.invalid (fixed line and/or mobile number is invalid)',
[AfterpayErrorMessageHelper::BILLTO_PHONENUMBER2_INVALID],
],
];
}

// phpcs:enable ObjectCalisthenics.Files.FunctionLength.ObjectCalisthenics\Sniffs\Files\FunctionLengthSniff

/**
* @param string $message
* @param string $expected
Expand All @@ -68,7 +91,7 @@ public function afterpayExtractMessageCodeExceptionProvider(): array
'Non parsable error code' => [
'housenumberaddition_missing',
'Unable to handle Afterpay error code: housenumberaddition_missing',
]
],
];
}
}

0 comments on commit ba1b6ed

Please sign in to comment.