Skip to content

Commit 94a0ce0

Browse files
committed
Merge pull request #53 from mrafalko/master
NetBanx. StoredData API methods
2 parents 2985281 + e4ca2d5 commit 94a0ce0

10 files changed

+369
-58
lines changed

src/Omnipay/NetBanx/Message/AbstractRequest.php

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
namespace Omnipay\NetBanx\Message;
1313

14+
use Omnipay\Common\CreditCard;
15+
1416
/**
1517
* NetBanx Abstract Request
1618
*/
@@ -150,4 +152,47 @@ protected function getBaseData()
150152

151153
return $data;
152154
}
155+
156+
/**
157+
* Translate card type to internal NetBanx format
158+
*
159+
* @param string $brand
160+
* @return string
161+
*/
162+
protected function translateCardType($brand)
163+
{
164+
switch ($brand) {
165+
case CreditCard::BRAND_VISA:
166+
$cardType = 'VI';
167+
break;
168+
case CreditCard::BRAND_AMEX:
169+
$cardType = 'AM';
170+
break;
171+
case CreditCard::BRAND_DISCOVER:
172+
$cardType = 'DI';
173+
break;
174+
case CreditCard::BRAND_MASTERCARD:
175+
$cardType = 'MC';
176+
break;
177+
case CreditCard::BRAND_MAESTRO:
178+
$cardType = 'MD';
179+
break;
180+
case CreditCard::BRAND_LASER:
181+
$cardType = 'LA';
182+
break;
183+
case CreditCard::BRAND_SOLO:
184+
$cardType = 'SO';
185+
break;
186+
case CreditCard::BRAND_JCB:
187+
$cardType = 'JC';
188+
break;
189+
case CreditCard::BRAND_DINERS_CLUB:
190+
$cardType = 'DC';
191+
break;
192+
default:
193+
$cardType = 'VI';
194+
}
195+
196+
return $cardType;
197+
}
153198
}

src/Omnipay/NetBanx/Message/AuthorizeRequest.php

Lines changed: 93 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,15 @@
1818
*/
1919
class AuthorizeRequest extends AbstractRequest
2020
{
21+
const MODE_AUTH = 'ccAuthorize';
22+
const MODE_STORED_DATA_AUTH = 'ccStoredDataAuthorize';
23+
2124
/**
2225
* Method
2326
*
2427
* @var string
2528
*/
26-
protected $txnMode = 'ccAuthorize';
29+
protected $txnMode;
2730

2831
/**
2932
* Get data
@@ -32,8 +35,14 @@ class AuthorizeRequest extends AbstractRequest
3235
*/
3336
public function getData()
3437
{
35-
$this->validate('amount', 'card');
36-
$this->getCard()->validate();
38+
if ($this->getTransactionReference()) {
39+
$this->txnMode = $this->getStoredDataMode();
40+
$this->validate('amount');
41+
} else {
42+
$this->txnMode = $this->getBasicMode();
43+
$this->validate('amount', 'card');
44+
$this->getCard()->validate();
45+
}
3746

3847
$data = $this->getBaseData();
3948
$data['txnRequest'] = $this->getXmlString();
@@ -42,20 +51,23 @@ public function getData()
4251
}
4352

4453
/**
45-
* Get XML string (without header)
54+
* Get XML string
4655
*
4756
* @return string
4857
*/
4958
protected function getXmlString()
5059
{
51-
/** @var $card CreditCard */
52-
$card = $this->getCard();
53-
54-
$xml = '<?xml version="1.0" encoding="UTF-8"?>
55-
<ccAuthRequestV1
56-
xmlns="http://www.optimalpayments.com/creditcard/xmlschema/v1"
57-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
58-
xsi:schemaLocation="http://www.optimalpayments.com/creditcard/xmlschema/v1" />';
60+
if ($this->getTransactionReference()) {
61+
$xmlRoot = 'ccStoredDataRequestV1';
62+
} else {
63+
$xmlRoot = 'ccAuthRequestV1';
64+
}
65+
66+
$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
67+
<{$xmlRoot}
68+
xmlns=\"http://www.optimalpayments.com/creditcard/xmlschema/v1\"
69+
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
70+
xsi:schemaLocation=\"http://www.optimalpayments.com/creditcard/xmlschema/v1\" />";
5971

6072
$sxml = new \SimpleXMLElement($xml);
6173

@@ -66,47 +78,76 @@ protected function getXmlString()
6678
$merchantAccount->addChild('storePwd', $this->getStorePassword());
6779

6880
$sxml->addChild('merchantRefNum', $this->getCustomerId() ?: 'ref-num - ' . time());
69-
$sxml->addChild('amount', $this->getAmountDecimal());
70-
71-
$cardChild = $sxml->addChild('card');
72-
73-
$cardChild->addChild('cardNum', $card->getNumber());
74-
75-
$cardExpiry = $cardChild->addChild('cardExpiry');
76-
$cardExpiry->addChild('month', $card->getExpiryDate('m'));
77-
$cardExpiry->addChild('year', $card->getExpiryDate('Y'));
78-
79-
$cardChild->addChild('cardType', 'VI');
80-
$cardChild->addChild('cvdIndicator', '0');
81-
$cardChild->addChild('cvd', $card->getCvv());
82-
83-
$billingDetails = $sxml->addChild('billingDetails');
84-
85-
$billingDetails->addChild('cardPayMethod', 'WEB');
86-
$billingDetails->addChild('firstName', $card->getBillingFirstName());
87-
$billingDetails->addChild('lastName', $card->getBillingLastName());
88-
$billingDetails->addChild('street', $card->getBillingAddress1());
89-
$billingDetails->addChild('street2', $card->getBillingAddress2());
90-
$billingDetails->addChild('city', $card->getBillingCity());
91-
$billingDetails->addChild('state', $card->getBillingState());
92-
$billingDetails->addChild('country', $card->getBillingCountry());
93-
$billingDetails->addChild('zip', $card->getBillingPostcode());
94-
$billingDetails->addChild('phone', $card->getBillingPhone());
95-
$billingDetails->addChild('email', $card->getEmail());
96-
97-
$shippingDetails = $sxml->addChild('shippingDetails');
98-
99-
$shippingDetails->addChild('firstName', $card->getShippingFirstName());
100-
$shippingDetails->addChild('lastName', $card->getShippingLastName());
101-
$shippingDetails->addChild('street', $card->getShippingAddress1());
102-
$shippingDetails->addChild('street2', $card->getShippingAddress2());
103-
$shippingDetails->addChild('city', $card->getShippingCity());
104-
$shippingDetails->addChild('state', $card->getShippingState());
105-
$shippingDetails->addChild('country', $card->getShippingCountry());
106-
$shippingDetails->addChild('zip', $card->getShippingPostcode());
107-
$shippingDetails->addChild('phone', $card->getShippingPhone());
108-
$shippingDetails->addChild('email', $card->getEmail());
81+
82+
if ($this->getTransactionReference()) {
83+
$sxml->addChild('confirmationNumber', $this->getTransactionReference());
84+
$sxml->addChild('amount', $this->getAmountDecimal());
85+
} else {
86+
/** @var $card CreditCard */
87+
$card = $this->getCard();
88+
89+
$sxml->addChild('amount', $this->getAmountDecimal());
90+
91+
$cardChild = $sxml->addChild('card');
92+
93+
$cardChild->addChild('cardNum', $card->getNumber());
94+
95+
$cardExpiry = $cardChild->addChild('cardExpiry');
96+
$cardExpiry->addChild('month', $card->getExpiryDate('m'));
97+
$cardExpiry->addChild('year', $card->getExpiryDate('Y'));
98+
99+
$cardChild->addChild('cardType', $this->translateCardType($card->getBrand()));
100+
$cardChild->addChild('cvdIndicator', '1');
101+
$cardChild->addChild('cvd', $card->getCvv());
102+
103+
$billingDetails = $sxml->addChild('billingDetails');
104+
105+
$billingDetails->addChild('cardPayMethod', 'WEB');
106+
$billingDetails->addChild('firstName', $card->getBillingFirstName());
107+
$billingDetails->addChild('lastName', $card->getBillingLastName());
108+
$billingDetails->addChild('street', $card->getBillingAddress1());
109+
$billingDetails->addChild('street2', $card->getBillingAddress2());
110+
$billingDetails->addChild('city', $card->getBillingCity());
111+
$billingDetails->addChild('state', $card->getBillingState());
112+
$billingDetails->addChild('country', $card->getBillingCountry());
113+
$billingDetails->addChild('zip', $card->getBillingPostcode());
114+
$billingDetails->addChild('phone', $card->getBillingPhone());
115+
$billingDetails->addChild('email', $card->getEmail());
116+
117+
$shippingDetails = $sxml->addChild('shippingDetails');
118+
119+
$shippingDetails->addChild('firstName', $card->getShippingFirstName());
120+
$shippingDetails->addChild('lastName', $card->getShippingLastName());
121+
$shippingDetails->addChild('street', $card->getShippingAddress1());
122+
$shippingDetails->addChild('street2', $card->getShippingAddress2());
123+
$shippingDetails->addChild('city', $card->getShippingCity());
124+
$shippingDetails->addChild('state', $card->getShippingState());
125+
$shippingDetails->addChild('country', $card->getShippingCountry());
126+
$shippingDetails->addChild('zip', $card->getShippingPostcode());
127+
$shippingDetails->addChild('phone', $card->getShippingPhone());
128+
$shippingDetails->addChild('email', $card->getEmail());
129+
}
109130

110131
return $sxml->asXML();
111132
}
133+
134+
/**
135+
* Get Stored Data Mode
136+
*
137+
* @return string
138+
*/
139+
protected function getStoredDataMode()
140+
{
141+
return self::MODE_STORED_DATA_AUTH;
142+
}
143+
144+
/**
145+
* Get Stored Data Mode
146+
*
147+
* @return string
148+
*/
149+
protected function getBasicMode()
150+
{
151+
return self::MODE_AUTH;
152+
}
112153
}

src/Omnipay/NetBanx/Message/CaptureRequest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public function getData()
3939
}
4040

4141
/**
42-
* Get XML string (without header)
42+
* Get XML string
4343
*
4444
* @return string
4545
*/

src/Omnipay/NetBanx/Message/PurchaseRequest.php

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,22 @@
1616
*/
1717
class PurchaseRequest extends AuthorizeRequest
1818
{
19+
const MODE_PURCHASE = 'ccPurchase';
20+
const MODE_STORED_DATA_PURCHASE = 'ccStoredDataPurchase';
21+
22+
/**
23+
* @inheritdoc
24+
*/
25+
protected function getStoredDataMode()
26+
{
27+
return self::MODE_STORED_DATA_PURCHASE;
28+
}
29+
1930
/**
20-
* Method
21-
*
22-
* @var string
31+
* @inheritdoc
2332
*/
24-
protected $txnMode = 'ccPurchase';
33+
protected function getBasicMode()
34+
{
35+
return self::MODE_PURCHASE;
36+
}
2537
}

src/Omnipay/NetBanx/Message/VoidRequest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public function getData()
3939
}
4040

4141
/**
42-
* Get XML string (without header)
42+
* Get XML string
4343
*
4444
* @return string
4545
*/

0 commit comments

Comments
 (0)