From f623c654488bfbd21150c592f4103535fdb60d0e Mon Sep 17 00:00:00 2001 From: james Date: Wed, 10 Jul 2024 12:32:02 +0100 Subject: [PATCH] add customer fields. Also fix soapfaults not showing the error --- composer.json | 3 ++- src/Messages/PurchaseRequest.php | 21 +++++++++++++++++++++ src/Messages/PurchaseResponse.php | 5 +++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 55bba78..4778ee0 100644 --- a/composer.json +++ b/composer.json @@ -30,7 +30,8 @@ "require": { "omnipay/common": "~2.0", "php": "^7", - "symfony/event-dispatcher": "^2.8" + "symfony/event-dispatcher": "^2.8", + "ext-soap": "*" }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.0", diff --git a/src/Messages/PurchaseRequest.php b/src/Messages/PurchaseRequest.php index c472595..7af558a 100644 --- a/src/Messages/PurchaseRequest.php +++ b/src/Messages/PurchaseRequest.php @@ -4,6 +4,9 @@ use DigiTickets\Pay360\AbstractPay360Request; use DigiTickets\Pay360\Listener; +use scpService_billingDetails; +use scpService_cardHolderDetails; +use scpService_contact; class PurchaseRequest extends AbstractPay360Request { @@ -111,6 +114,23 @@ public function getData() $sale->saleSummary = $saleSummary; $sale->items = $items; + $card = $this->getCard(); + + $cardHolderDetails = new scpService_cardHolderDetails(); + if ($card->getName()) { + $cardHolderDetails->cardHolderName = $card->getName(); + } + + if ($card->getEmail()) { + $contact = new scpService_contact(); + $contact->email = $card->getEmail(); + $contact->telephone = $card->getPhone(); + $cardHolderDetails->contact = $contact; + } + + $billing = new scpService_billingDetails(); + $billing->cardHolderDetails = $cardHolderDetails; + $scpSimpleInvokeRequest = new \scpService_scpSimpleInvokeRequest(); $scpSimpleInvokeRequest->credentials = $this->getCredentials(); $scpSimpleInvokeRequest->requestType = 'payOnly'; @@ -118,6 +138,7 @@ public function getData() $scpSimpleInvokeRequest->routing = $routing; $scpSimpleInvokeRequest->panEntryMethod = 'ECOM'; $scpSimpleInvokeRequest->sale = $sale; + $scpSimpleInvokeRequest->billing = $billing; return $scpSimpleInvokeRequest; } diff --git a/src/Messages/PurchaseResponse.php b/src/Messages/PurchaseResponse.php index a30d973..842e349 100644 --- a/src/Messages/PurchaseResponse.php +++ b/src/Messages/PurchaseResponse.php @@ -59,6 +59,11 @@ public function __construct( } } } + if($scpResponse instanceof \SoapFault){ + /** @var \SoapFault $scpResponse */ + throw new \Exception("SOAP Error: " . $scpResponse->getMessage() . " - " . $scpResponse->getCode()); + } + $this->transactionRef = $scpResponse->scpReference; }