From 257b969f5d76df9b93ad5f108e222fd543634849 Mon Sep 17 00:00:00 2001 From: Dylan Date: Tue, 16 Apr 2019 16:19:01 +1000 Subject: [PATCH 1/8] created all the customer endpoint requests. --- src/Gateway.php | 68 ++++++ src/Message/CreateCustomerRequest.php | 2 +- ...tomerResponse.php => CustomerResponse.php} | 2 +- src/Message/DeleteCustomerRequest.php | 92 +++++++++ src/Message/FetchCustomerRequest.php | 98 +++++++++ src/Message/UpdateCustomerRequest.php | 193 ++++++++++++++++++ 6 files changed, 453 insertions(+), 2 deletions(-) rename src/Message/{CreateCustomerResponse.php => CustomerResponse.php} (85%) create mode 100644 src/Message/DeleteCustomerRequest.php create mode 100644 src/Message/FetchCustomerRequest.php create mode 100644 src/Message/UpdateCustomerRequest.php diff --git a/src/Gateway.php b/src/Gateway.php index 736afba..f589b3e 100755 --- a/src/Gateway.php +++ b/src/Gateway.php @@ -26,6 +26,11 @@ public function getDefaultParameters() ]; } + /** + * Access Token getters and setters + * @return mixed + */ + public function getAccessToken() { return $this->getParameter('accessToken'); @@ -36,6 +41,11 @@ public function setAccessToken($value) return $this->setParameter('accessToken', $value); } + /** + * location Id getters and setters + * @return mixed + */ + public function getLocationId() { return $this->getParameter('locationId'); @@ -46,6 +56,11 @@ public function setLocationId($value) return $this->setParameter('locationId', $value); } + /** + * App Id getters and setters + * @return mixed + */ + public function getAppId() { return $this->getParameter('appId'); @@ -56,6 +71,12 @@ public function setAppId($value) return $this->setParameter('appId', $value); } + + /** + * Idempotency key getters and setters + * @return mixed + */ + public function getIdempotencyKey() { return $this->getParameter('idempotencyKey'); @@ -66,6 +87,12 @@ public function setIdempotencyKey($value) return $this->setParameter('idempotencyKey', $value); } + /** + * Purchase request functions + * @param array $parameters + * @return \Omnipay\Common\Message\AbstractRequest|\Omnipay\Common\Message\RequestInterface + */ + public function purchase(array $parameters = []) { return $this->createRequest('\Omnipay\Square\Message\ChargeRequest', $parameters); @@ -76,21 +103,62 @@ public function completePurchase(array $parameters = []) return $this->createRequest('\Omnipay\Square\Message\TransactionRequest', $parameters); } + /** + * Customer request functions + * @param array $parameters + * @return \Omnipay\Common\Message\AbstractRequest + */ + public function createCustomer(array $parameters = []) { return $this->createRequest('\Omnipay\Square\Message\CreateCustomerRequest', $parameters); } + public function updateCustomer(array $parameters = []) + { + return $this->createRequest('\Omnipay\Square\Message\UpdateCustomerRequest', $parameters); + } + + public function fetchCustomer(array $parameters = []) + { + return $this->createRequest('\Omnipay\Square\Message\FetchCustomerRequest', $parameters); + } + + public function deleteCustomer(array $parameters = []) + { + return $this->createRequest('Omnipay\Square\Message\DeleteCustomerRequest', $parameters); + } + + /** + * Card request functions + * @param array $parameters + * @return \Omnipay\Common\Message\AbstractRequest|\Omnipay\Common\Message\RequestInterface + */ + public function createCard(array $parameters = []) { return $this->createRequest('\Omnipay\Square\Message\CreateCardRequest', $parameters); } + + /** + * Transaction request functions + * @param array $parameters + * @return \Omnipay\Common\Message\AbstractRequest + */ + public function listTransactions(array $parameters = []) { return $this->createRequest('\Omnipay\Square\Message\ListTransactionsRequest', $parameters); } + + /** + * Refund request functions + * @param array $parameters + * @return \Omnipay\Common\Message\AbstractRequest + */ + public function listRefunds(array $parameters = []) { return $this->createRequest('\Omnipay\Square\Message\ListRefundsRequest', $parameters); diff --git a/src/Message/CreateCustomerRequest.php b/src/Message/CreateCustomerRequest.php index 0ad5752..596e1d1 100644 --- a/src/Message/CreateCustomerRequest.php +++ b/src/Message/CreateCustomerRequest.php @@ -105,6 +105,6 @@ public function sendData($data) public function createResponse($response) { - return $this->response = new CreateCustomerResponse($this, $response); + return $this->response = new CustomerResponse($this, $response); } } diff --git a/src/Message/CreateCustomerResponse.php b/src/Message/CustomerResponse.php similarity index 85% rename from src/Message/CreateCustomerResponse.php rename to src/Message/CustomerResponse.php index 0c0eb95..5518e58 100644 --- a/src/Message/CreateCustomerResponse.php +++ b/src/Message/CustomerResponse.php @@ -8,7 +8,7 @@ /** * Square Purchase Response */ -class CreateCustomerResponse extends AbstractResponse implements RedirectResponseInterface +class CustomerResponse extends AbstractResponse implements RedirectResponseInterface { public function isSuccessful() diff --git a/src/Message/DeleteCustomerRequest.php b/src/Message/DeleteCustomerRequest.php new file mode 100644 index 0000000..30fbbda --- /dev/null +++ b/src/Message/DeleteCustomerRequest.php @@ -0,0 +1,92 @@ +getParameter('accessToken'); + } + + public function setAccessToken($value) + { + return $this->setParameter('accessToken', $value); + } + + public function setCustomerReference($value){ + return $this->setParameter('customerReference', $value); + } + + + public function getCustomerReference(){ + return $this->getParameter('customerReference'); + } + /** + * Get the raw data array for this message. The format of this varies from gateway to + * gateway, but will usually be either an associative array, or a SimpleXMLElement. + * + * @return mixed + */ + public function getData() + { + $data = []; + + $data['customer_id'] = $this->getCustomerReference(); + + return $data; + } + + /** + * Send the request with specified data + * + * @param mixed $data The data to send + * @return ResponseInterface + */ + public function sendData($data) + { + SquareConnect\Configuration::getDefaultConfiguration()->setAccessToken($this->getAccessToken()); + + $api_instance = new SquareConnect\Api\CustomersApi(); + + try { + $result = $api_instance->deleteCustomer($data['customer_id']); + + if ($error = $result->getErrors()) { + $response = [ + 'status' => 'error', + 'code' => $error['code'], + 'detail' => $error['detail'] + ]; + } else { + $response = [ + 'status' => 'success' + ]; + } + } catch (\Exception $e) { + $response = [ + 'status' => 'error', + 'detail' => 'Exception when creating customer: ', $e->getMessage() + ]; + } + + return $this->createResponse($response); + } + + public function createResponse($response) + { + return $this->response = new CustomerResponse($this, $response); + } +} \ No newline at end of file diff --git a/src/Message/FetchCustomerRequest.php b/src/Message/FetchCustomerRequest.php new file mode 100644 index 0000000..29a6385 --- /dev/null +++ b/src/Message/FetchCustomerRequest.php @@ -0,0 +1,98 @@ +getParameter('accessToken'); + } + + public function setAccessToken($value) + { + return $this->setParameter('accessToken', $value); + } + + public function setCustomerReference($value) + { + return $this->setParameter('customerReference', $value); + } + + + public function getCustomerReference() + { + return $this->getParameter('customerReference'); + } + /** + * Get the raw data array for this message. The format of this varies from gateway to + * gateway, but will usually be either an associative array, or a SimpleXMLElement. + * + * @return mixed + */ + public function getData() + { + $data = []; + + $data['customer_id'] = $this->getCustomerReference(); + + return $data; + } + + /** + * Send the request with specified data + * + * @param mixed $data The data to send + * @return ResponseInterface + */ + public function sendData($data) + { + SquareConnect\Configuration::getDefaultConfiguration()->setAccessToken($this->getAccessToken()); + + $api_instance = new SquareConnect\Api\CustomersApi(); + + try { + $result = $api_instance->retrieveCustomer($data['customer_id']); + + if ($error = $result->getErrors()) { + $response = [ + 'status' => 'error', + 'code' => $error['code'], + 'detail' => $error['detail'] + ]; + } else { + $response = [ + 'status' => 'success', + 'customer' => $result->getCustomer() + ]; + } + } catch (\Exception $e) { + $response = [ + 'status' => 'error', + 'detail' => 'Exception when creating customer: ', $e->getMessage() + ]; + } + + return $this->createResponse($response); + } + + public function createResponse($response) + { + return $this->response = new CustomerResponse($this, $response); + } + +} \ No newline at end of file diff --git a/src/Message/UpdateCustomerRequest.php b/src/Message/UpdateCustomerRequest.php new file mode 100644 index 0000000..162f7c6 --- /dev/null +++ b/src/Message/UpdateCustomerRequest.php @@ -0,0 +1,193 @@ +getParameter('accessToken'); + } + + public function setAccessToken($value) + { + return $this->setParameter('accessToken', $value); + } + + public function setCustomerReference($value) + { + return $this->setParameter('customerReference', $value); + } + + + public function getCustomerReference() + { + return $this->getParameter('customerReference'); + } + + public function getFirstName() + { + return $this->getParameter('firstName'); + } + + public function setFirstName($value) + { + return $this->setParameter('firstName', $value); + } + + public function getLastName() + { + return $this->getParameter('lastName'); + } + + public function setLastName($value) + { + return $this->setParameter('lastName', $value); + } + + public function getCompanyName() + { + return $this->getParameter('companyName'); + } + + public function setCompanyName($value) + { + return $this->setParameter('companyName', $value); + } + + public function getEmail() + { + return $this->getParameter('email'); + } + + public function setEmail($value) + { + return $this->setParameter('email', $value); + } + + public function setAddress(SquareConnect\Model\Address $value) + { + return $this->setParameter('address', $value); + } + + public function getAddress() + { + return $this->getParameter('address'); + } + + public function setNickName($value) + { + return $this->setParameter('nickName', $value); + } + + public function getNickName() + { + return $this->getParameter('nickName'); + } + + public function getPhoneNumber() + { + return $this->getParameter('phoneNumber'); + } + + public function setPhoneNumber($value) + { + return $this->setParameter('phoneNumber', $value); + } + + + + public function getNote(){ + return $this->getParameter('note'); + } + + public function setNote($value) + { + return $this->setParameter('note', $value); + } + + public function getReferenceId(){ + return $this->getParameter('referenceId'); + } + + public function setReferenceId($value) + { + return $this->setParameter('referenceId', $value); + } + /** + * Get the raw data array for this message. The format of this varies from gateway to + * gateway, but will usually be either an associative array, or a SimpleXMLElement. + * + * @return mixed + */ + public function getData() + { + $data = []; + + $data['given_name'] = $this->getFirstName(); + $data['family_name'] = $this->getLastName(); + $data['company_name'] = $this->getCompanyName(); + $data['email_address'] = $this->getEmail(); + + $data['address'] = $this->getAddress(); + $data['nickname'] = $this->getEmail(); + $data['phone_number'] = $this->getPhoneNumber(); + $data['reference_id'] = $this->getReferenceId(); + $data['note'] = $this->getNote(); + + return $data; + } + /** + * Send the request with specified data + * + * @param mixed $data The data to send + * @return ResponseInterface + */ + + public function sendData($data) + { + SquareConnect\Configuration::getDefaultConfiguration()->setAccessToken($this->getAccessToken()); + + $api_instance = new SquareConnect\Api\CustomersApi(); + + try { + $result = $api_instance->updateCustomer($this->getCustomerReference(), $data); + + if ($error = $result->getErrors()) { + $response = [ + 'status' => 'error', + 'code' => $error['code'], + 'detail' => $error['detail'] + ]; + } else { + $response = [ + 'status' => 'success', + 'customer' => $result->getCustomer() + ]; + } + } catch (\Exception $e) { + $response = [ + 'status' => 'error', + 'detail' => 'Exception when creating customer: ', $e->getMessage() + ]; + } + + return $this->createResponse($response); + } + + public function createResponse($response) + { + return $this->response = new CustomerResponse($this, $response); + } +} \ No newline at end of file From 30babe272ebdf135eb02a34c20fb4de5c3255709 Mon Sep 17 00:00:00 2001 From: Dylan Date: Wed, 17 Apr 2019 10:37:15 +1000 Subject: [PATCH 2/8] added card delete request and aligned customer id to customer reference --- src/Gateway.php | 5 ++ src/Message/ChargeRequest.php | 11 ++-- src/Message/CreateCardRequest.php | 20 ++---- src/Message/DeleteCardRequest.php | 105 ++++++++++++++++++++++++++++++ 4 files changed, 121 insertions(+), 20 deletions(-) create mode 100644 src/Message/DeleteCardRequest.php diff --git a/src/Gateway.php b/src/Gateway.php index f589b3e..b4758c7 100755 --- a/src/Gateway.php +++ b/src/Gateway.php @@ -140,6 +140,11 @@ public function createCard(array $parameters = []) return $this->createRequest('\Omnipay\Square\Message\CreateCardRequest', $parameters); } + public function deleteCard(array $parameters = []) + { + return $this->createRequest('\Omnipay\Square\Message\DeleteCardRequest', $parameters); + } + /** * Transaction request functions diff --git a/src/Message/ChargeRequest.php b/src/Message/ChargeRequest.php index c9a52a0..6efcd74 100755 --- a/src/Message/ChargeRequest.php +++ b/src/Message/ChargeRequest.php @@ -70,14 +70,15 @@ public function setNonce($value) return $this->setParameter('nonce', $value); } - public function getCustomerId() + public function setCustomerReference($value) { - return $this->getParameter('customerId'); + return $this->setParameter('customerReference', $value); } - public function setCustomerId($value) + + public function getCustomerReference() { - return $this->setParameter('customerId', $value); + return $this->getParameter('customerReference'); } public function getCustomerCardId() @@ -130,7 +131,7 @@ public function getData() 'currency' => $this->getCurrency() ]; $data['card_nonce'] = $this->getNonce(); - $data['customer_id'] = $this->getCustomerId(); + $data['customer_id'] = $this->getCustomerReference(); $data['customer_card_id'] = $this->getCustomerCardId(); $data['reference_id'] = $this->getReferenceId(); $data['order_id'] = $this->getOrderId(); diff --git a/src/Message/CreateCardRequest.php b/src/Message/CreateCardRequest.php index 35fa15a..28bafb8 100644 --- a/src/Message/CreateCardRequest.php +++ b/src/Message/CreateCardRequest.php @@ -20,24 +20,14 @@ public function setAccessToken($value) return $this->setParameter('accessToken', $value); } - public function getCustomerId() + public function setCustomerReference($value) { - return $this->getParameter('customerId'); + return $this->setParameter('customerReference', $value); } - public function setCustomerId($value) + public function getCustomerReference() { - return $this->setParameter('customerId', $value); - } - - public function getLocationId() - { - return $this->getParameter('locationId'); - } - - public function setLocationId($value) - { - return $this->setParameter('locationId', $value); + return $this->getParameter('customerReference'); } public function getCardNonce() @@ -64,7 +54,7 @@ public function getData() { $data = []; - $data['customer_id'] = $this->getCustomerId(); + $data['customer_id'] = $this->getCustomerReference(); $data['card_nonce'] = $this->getCardNonce(); $data['cardholder_name'] = $this->getCardholderName(); diff --git a/src/Message/DeleteCardRequest.php b/src/Message/DeleteCardRequest.php new file mode 100644 index 0000000..c4c1024 --- /dev/null +++ b/src/Message/DeleteCardRequest.php @@ -0,0 +1,105 @@ +getParameter('accessToken'); + } + + public function setAccessToken($value) + { + return $this->setParameter('accessToken', $value); + } + + public function setCustomerReference($value) + { + return $this->setParameter('customerReference', $value); + } + + + public function getCustomerReference() + { + return $this->getParameter('customerReference'); + } + + public function getLocationId() + { + return $this->getParameter('locationId'); + } + + public function setLocationId($value) + { + return $this->setParameter('locationId', $value); + } + + public function getCardReference() + { + return $this->getParameter('cardReference'); + } + + public function setCardReference($value) + { + return $this->setParameter('cardReference', $value); + } + + + public function getData() + { + $data = []; + + $data['customer_id'] = $this->getCustomerReference(); + $data['card_id'] = $this->getCardReference(); + + return $data; + } + + public function sendData($data) + { + SquareConnect\Configuration::getDefaultConfiguration()->setAccessToken($this->getAccessToken()); + + $api_instance = new SquareConnect\Api\CustomersApi(); + + try { + $result = $api_instance->deleteCustomerCard($data['customer_id'], $data['card_id']); + + if ($error = $result->getErrors()) { + $response = [ + 'status' => 'error', + 'code' => $error['code'], + 'detail' => $error['detail'] + ]; + } else { + $response = [ + 'status' => 'success', + ]; + } + } catch (\Exception $e) { + $response = [ + 'status' => 'error', + 'detail' => 'Exception when creating card: ', $e->getMessage() + ]; + } + + return $this->createResponse($response); + } + + public function createResponse($response) + { + return $this->response = new CreateCardResponse($this, $response); + } +} \ No newline at end of file From 08513cd21f40e57e6c4438ac142357429d7cb757 Mon Sep 17 00:00:00 2001 From: Dylan Date: Wed, 17 Apr 2019 10:54:24 +1000 Subject: [PATCH 3/8] response validation and card response made more generic --- .../{CreateCardResponse.php => CardResponse.php} | 16 +++++++++++++--- src/Message/CreateCardRequest.php | 2 +- src/Message/CustomerResponse.php | 16 +++++++++++++++- src/Message/DeleteCardRequest.php | 2 +- 4 files changed, 30 insertions(+), 6 deletions(-) rename src/Message/{CreateCardResponse.php => CardResponse.php} (55%) diff --git a/src/Message/CreateCardResponse.php b/src/Message/CardResponse.php similarity index 55% rename from src/Message/CreateCardResponse.php rename to src/Message/CardResponse.php index 86b7c91..bbbc682 100644 --- a/src/Message/CreateCardResponse.php +++ b/src/Message/CardResponse.php @@ -8,7 +8,7 @@ /** * Square Purchase Response */ -class CreateCardResponse extends AbstractResponse implements RedirectResponseInterface +class CardResponse extends AbstractResponse implements RedirectResponseInterface { public function isSuccessful() @@ -28,11 +28,21 @@ public function getErrorCode() public function getCard() { - return $this->data['card']; + if(isset($this->data['card'])){ + if(!empty($this->data['card'])){ + return $this->data['card']; + } + } + return null; } public function getCardReference() { - return $this->data['card']['id']; + if(isset($this->data['card'])){ + if(!empty($this->data['card'])){ + return $this->data['card']['id']; + } + } + return null; } } diff --git a/src/Message/CreateCardRequest.php b/src/Message/CreateCardRequest.php index 28bafb8..8331093 100644 --- a/src/Message/CreateCardRequest.php +++ b/src/Message/CreateCardRequest.php @@ -95,6 +95,6 @@ public function sendData($data) public function createResponse($response) { - return $this->response = new CreateCardResponse($this, $response); + return $this->response = new CardResponse($this, $response); } } diff --git a/src/Message/CustomerResponse.php b/src/Message/CustomerResponse.php index 5518e58..4717aa4 100644 --- a/src/Message/CustomerResponse.php +++ b/src/Message/CustomerResponse.php @@ -28,6 +28,20 @@ public function getErrorCode() public function getCustomer() { - return $this->data['customer']; + if(isset($this->data['customer'])){ + if(!empty($this->data['customer'])){ + return $this->data['customer']; + } + } + return null; + } + + public function getCustomerReference(){ + if(isset($this->data['customer'])){ + if(!empty($this->data['customer'])){ + return $this->data['customer']['id']; + } + } + return null; } } diff --git a/src/Message/DeleteCardRequest.php b/src/Message/DeleteCardRequest.php index c4c1024..9afabe7 100644 --- a/src/Message/DeleteCardRequest.php +++ b/src/Message/DeleteCardRequest.php @@ -100,6 +100,6 @@ public function sendData($data) public function createResponse($response) { - return $this->response = new CreateCardResponse($this, $response); + return $this->response = new CardResponse($this, $response); } } \ No newline at end of file From d2ee00bb54af65ad77a59c3b348667eaf09a7e81 Mon Sep 17 00:00:00 2001 From: Dylan Date: Wed, 17 Apr 2019 14:59:44 +1000 Subject: [PATCH 4/8] added ability to return saved customer cards --- src/Message/CustomerResponse.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Message/CustomerResponse.php b/src/Message/CustomerResponse.php index 4717aa4..964cd7c 100644 --- a/src/Message/CustomerResponse.php +++ b/src/Message/CustomerResponse.php @@ -44,4 +44,13 @@ public function getCustomerReference(){ } return null; } + + public function getCustomerCards(){ + if(isset($this->data['customer'])){ + if(!empty($this->data['customer'])){ + return $this->data['customer']['cards']; + } + } + return null; + } } From f87515c94ac712b85440249b64ecb11da751c3f5 Mon Sep 17 00:00:00 2001 From: Dylan Date: Wed, 17 Apr 2019 15:05:30 +1000 Subject: [PATCH 5/8] return first card --- src/Message/CustomerResponse.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Message/CustomerResponse.php b/src/Message/CustomerResponse.php index 964cd7c..6dc64fb 100644 --- a/src/Message/CustomerResponse.php +++ b/src/Message/CustomerResponse.php @@ -45,6 +45,15 @@ public function getCustomerReference(){ return null; } + public function getCardReference(){ + if(isset($this->data['customer'])){ + if(!empty($this->data['customer'])){ + return isset($this->data['customer']['cards'][0]['id']) ? $this->data['customer']['cards'][0]['id'] : null; + } + } + return null; + } + public function getCustomerCards(){ if(isset($this->data['customer'])){ if(!empty($this->data['customer'])){ From 66f93421dd2c955eaf07222e79b806a00b6ab916 Mon Sep 17 00:00:00 2001 From: Dylan Date: Wed, 17 Apr 2019 15:26:27 +1000 Subject: [PATCH 6/8] update card argument --- src/Message/CreateCardRequest.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Message/CreateCardRequest.php b/src/Message/CreateCardRequest.php index 8331093..cef51bf 100644 --- a/src/Message/CreateCardRequest.php +++ b/src/Message/CreateCardRequest.php @@ -30,14 +30,14 @@ public function getCustomerReference() return $this->getParameter('customerReference'); } - public function getCardNonce() + public function getCard() { - return $this->getParameter('cardNonce'); + return $this->getParameter('card'); } - public function setCardNonce($value) + public function setCard($value) { - return $this->setParameter('cardNonce', $value); + return $this->setParameter('card', $value); } public function getCardholderName() @@ -55,7 +55,7 @@ public function getData() $data = []; $data['customer_id'] = $this->getCustomerReference(); - $data['card_nonce'] = $this->getCardNonce(); + $data['card_nonce'] = $this->getCard(); $data['cardholder_name'] = $this->getCardholderName(); return $data; From af982e5ca4321824c72e38f19ce6e32e105de89d Mon Sep 17 00:00:00 2001 From: Dylan Date: Wed, 17 Apr 2019 15:59:55 +1000 Subject: [PATCH 7/8] added ability to retrieve single cards and list cards on a customer --- src/Gateway.php | 5 ++ src/Message/CustomerResponse.php | 9 --- src/Message/FetchCardRequest.php | 112 +++++++++++++++++++++++++++++++ 3 files changed, 117 insertions(+), 9 deletions(-) create mode 100644 src/Message/FetchCardRequest.php diff --git a/src/Gateway.php b/src/Gateway.php index b4758c7..cca64fe 100755 --- a/src/Gateway.php +++ b/src/Gateway.php @@ -140,6 +140,11 @@ public function createCard(array $parameters = []) return $this->createRequest('\Omnipay\Square\Message\CreateCardRequest', $parameters); } + public function fetchCard(array $parameters = []) + { + return $this->createRequest('\Omnipay\Square\Message\FetchCardRequest', $parameters); + } + public function deleteCard(array $parameters = []) { return $this->createRequest('\Omnipay\Square\Message\DeleteCardRequest', $parameters); diff --git a/src/Message/CustomerResponse.php b/src/Message/CustomerResponse.php index 6dc64fb..964cd7c 100644 --- a/src/Message/CustomerResponse.php +++ b/src/Message/CustomerResponse.php @@ -45,15 +45,6 @@ public function getCustomerReference(){ return null; } - public function getCardReference(){ - if(isset($this->data['customer'])){ - if(!empty($this->data['customer'])){ - return isset($this->data['customer']['cards'][0]['id']) ? $this->data['customer']['cards'][0]['id'] : null; - } - } - return null; - } - public function getCustomerCards(){ if(isset($this->data['customer'])){ if(!empty($this->data['customer'])){ diff --git a/src/Message/FetchCardRequest.php b/src/Message/FetchCardRequest.php new file mode 100644 index 0000000..be2dfde --- /dev/null +++ b/src/Message/FetchCardRequest.php @@ -0,0 +1,112 @@ +getParameter('accessToken'); + } + + public function setAccessToken($value) + { + return $this->setParameter('accessToken', $value); + } + + public function setCustomerReference($value) + { + return $this->setParameter('customerReference', $value); + } + + public function getCustomerReference() + { + return $this->getParameter('customerReference'); + } + + public function getCard() + { + return $this->getParameter('card'); + } + + public function setCard($value) + { + return $this->setParameter('card', $value); + } + /** + * Get the raw data array for this message. The format of this varies from gateway to + * gateway, but will usually be either an associative array, or a SimpleXMLElement. + * + * @return mixed + */ + public function getData() + { + $data = []; + + $data['customer_id'] = $this->getCustomerReference(); + $data['card_id'] = $this->getCard(); + + return $data; + } + + /** + * Send the request with specified data + * + * @param mixed $data The data to send + * @return ResponseInterface + */ + public function sendData($data) + { + SquareConnect\Configuration::getDefaultConfiguration()->setAccessToken($this->getAccessToken()); + + $api_instance = new SquareConnect\Api\CustomersApi(); + + try { + $result = $api_instance->retrieveCustomer($data['customer_id']); + + if ($error = $result->getErrors()) { + $response = [ + 'status' => 'error', + 'code' => $error['code'], + 'detail' => $error['detail'] + ]; + } else { + $cardId = $this->getCard(); + $cards = array_filter($result->getCustomer()->getCards(), function ($cur) use ($cardId){ + return $cur->getId() == $cardId; + }); + + if($cards === null || count($cards) == 0){ + throw new \Exception('Card not found!'); + } + $response = [ + 'status' => 'success', + 'card' => $cards[0] + ]; + } + } catch (\Exception $e) { + $response = [ + 'status' => 'error', + 'detail' => 'Exception when creating customer: ', $e->getMessage() + ]; + } + + return $this->createResponse($response); + } + + public function createResponse($response) + { + return $this->response = new CardResponse($this, $response); + } +} \ No newline at end of file From f7ae33c7dcf56dae51677aa8d5aa148f678293c4 Mon Sep 17 00:00:00 2001 From: Dylan Date: Wed, 17 Apr 2019 16:03:19 +1000 Subject: [PATCH 8/8] removed incorrect import --- src/Message/FetchCardRequest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Message/FetchCardRequest.php b/src/Message/FetchCardRequest.php index be2dfde..64bae60 100644 --- a/src/Message/FetchCardRequest.php +++ b/src/Message/FetchCardRequest.php @@ -8,7 +8,6 @@ namespace Omnipay\Square\Message; -use mysql_xdevapi\Exception; use Omnipay\Common\Message\AbstractRequest; use Omnipay\Common\Message\ResponseInterface; use SquareConnect;