From 65a1a2758431ddb6d551e69df482d97cc0c9b535 Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Tue, 27 Nov 2018 17:25:10 -0500 Subject: [PATCH 1/2] Create bank account Signed-off-by: Andres Garcia --- src/Gateway.php | 16 ++++++++-- src/Message/CreateBankAccountRequest.php | 37 ++++++++++++++++++++++++ src/Message/Response.php | 3 +- 3 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 src/Message/CreateBankAccountRequest.php diff --git a/src/Gateway.php b/src/Gateway.php index 8b688a1..ec7638a 100644 --- a/src/Gateway.php +++ b/src/Gateway.php @@ -42,7 +42,7 @@ public function setTerminalId($value) * the Bank Account method or the Credit Card method. * * @param array|array $parameters - * @return \Omnipay\Paysimple\Message\Response + * @return \Omnipay\Ippay\Message\Response */ public function purchase(array $parameters = array()) { @@ -53,13 +53,23 @@ public function purchase(array $parameters = array()) * Create Credit Card Request * * Create a Credit Card and associate with a customer it's important - * to save the transaction reference to ue it later on purchase request. + * to save the transaction reference to use it later on purchase request. * * @param array|array $parameters - * @return \Omnipay\Paysimple\Message\Response + * @return \Omnipay\Ippay\Message\Response */ public function createCard(array $parameters = array()) { return $this->createRequest('\Omnipay\Ippay\Message\CreateCardRequest', $parameters); } + + /** + * Create Bank Account Request + * + */ + + public function createBankAccount(array $parameters = array()) + { + return $this->createRequest('\Omnipay\Ippay\Message\CreateBankAccountRequest', $parameters); + } } diff --git a/src/Message/CreateBankAccountRequest.php b/src/Message/CreateBankAccountRequest.php new file mode 100644 index 0000000..aba4d56 --- /dev/null +++ b/src/Message/CreateBankAccountRequest.php @@ -0,0 +1,37 @@ +getParameter('AccountNumber'); + } + + public function setAccountNumber($value) + { + return $this->setParameter('AccountNumber', $value); + } + + public function getRoutingNumber() + { + return $this->getParameter('RoutingNumber'); + } + + public function setRoutingNumber($value) + { + return $this->setParameter('RoutingNumber', $value); + } + + public function getData() + { + $data = array(); + $data['TransactionType'] = 'TOKENIZE'; + $data['AccountNumber'] = $this->getAccountNumber(); + $data['ABA'] = $this->getRoutingNumber(); + + return $data; + } +} diff --git a/src/Message/Response.php b/src/Message/Response.php index 2eed803..e721230 100644 --- a/src/Message/Response.php +++ b/src/Message/Response.php @@ -34,8 +34,7 @@ public function isCancelled() public function getMessage() { - $response = new \SimpleXMLElement($this->response); - return $response->ResponseText; + return $this->response; } public function getCode() From ddc3193db52b8ddc669d925ab00cd8bfc7651f8f Mon Sep 17 00:00:00 2001 From: Andres Garcia Date: Wed, 28 Nov 2018 10:16:15 -0500 Subject: [PATCH 2/2] Add support to pay via Echeck Signed-off-by: Andres Garcia --- src/Message/AbstractRequest.php | 43 ++++++++++++++++++++----- src/Message/PurchaseRequest.php | 56 ++++++++++++++++++++++++++++++++- 2 files changed, 91 insertions(+), 8 deletions(-) diff --git a/src/Message/AbstractRequest.php b/src/Message/AbstractRequest.php index 470ab2d..98732ed 100644 --- a/src/Message/AbstractRequest.php +++ b/src/Message/AbstractRequest.php @@ -30,13 +30,12 @@ public function getHeaders() public function send() { $data = $this->getData(); - $xml = null; - foreach($data as $node => $value) { - $xml .= "<{$node}>{$value}"; + + if($data['TransactionType'] == 'CHECK') { + $xml = $this->dataCheck($data); + } else { + $xml = $this->dataSale($data); } - - $xml .= "" . $this->getTerminalId() . ""; - $xml = "" . $xml . ""; $headers = array_merge( $this->getHeaders(), @@ -46,6 +45,36 @@ public function send() return $this->sendData($xml, $headers); } + public function dataCheck($data) + { + $xml = ''; + $xml .= "CHECK"; + $xml .= "" . $this->getTerminalId() . ""; + $xml .= "" . $data['BankName'] . ""; + $xml .= "" . $data['TotalAmount'] . ""; + $xml .= ""; + $xml .= "" . $data['Token'] . ""; + $xml .= "" . $data['CheckNumber'] . ""; + $xml .= ""; + $xml = "" . $xml . ""; + + return $xml; + } + + public function dataSale($data) + { + + $xml = null; + foreach($data as $node => $value) { + $xml .= "<{$node}>{$value}"; + } + + $xml .= "" . $this->getTerminalId() . ""; + $xml = "" . $xml . ""; + + return $xml; + } + public function sendData($data, array $headers = []) { @@ -55,7 +84,7 @@ public function sendData($data, array $headers = []) $headers, $data ); - + return (new Response($this, $httpResponse->getBody()->getContents())); } diff --git a/src/Message/PurchaseRequest.php b/src/Message/PurchaseRequest.php index 26477e6..ebd8667 100644 --- a/src/Message/PurchaseRequest.php +++ b/src/Message/PurchaseRequest.php @@ -25,14 +25,68 @@ public function setAmount($value) return $this->setParameter('amount', $value); } + public function getSEC() + { + return $this->getParameter('sec'); + } + + public function setSEC($value) + { + return $this->setParameter('sec', $value); + } + + public function getType() + { + return $this->getParameter('type'); + } + + public function setType($value) + { + return $this->setParameter('type', $value); + } + + public function getCheckNumber() + { + return $this->getParameter('check_number'); + } + + public function setCheckNumber($value) + { + return $this->setParameter('check_number', $value); + } + + public function getTransactionType() + { + return $this->getParameter('transaction_type'); + } + + public function setTransactionType($value) + { + return $this->setParameter('transaction_type', $value); + } + + public function getBankName() + { + return $this->getParameter('bank_name'); + } + + public function setBankName($value) + { + return $this->setParameter('bank_name', $value); + } + public function getData() { $data = array(); - $data['TransactionType'] = 'SALE'; + $data['TransactionType'] = $this->getTransactionType(); $data['Token'] = $this->getToken(); $data['TotalAmount'] = number_format($this->getAmount(), 2, "", ""); + $data['SEC'] = $this->getSEC(); + $data['CheckNumber'] = $this->getCheckNumber(); + $data['Type'] = $this->getType(); + $data['BankName'] = $this->getBankName(); return $data; }