Open Journal Systems  3.3.0
vendor/omnipay/paypal/tests/Message/ExpressInContextAuthorizeRequestTest.php
1 <?php
2 
3 namespace Omnipay\PayPal\Message;
4 
9 use Omnipay\Tests\TestCase;
10 
11 class ExpressInContextAuthorizeRequestTest extends TestCase
12 {
16  private $request;
17 
18  public function setUp()
19  {
20  parent::setUp();
21 
22  $this->request = new ExpressInContextAuthorizeRequest($this->getHttpClient(), $this->getHttpRequest());
23  $this->request->initialize(
24  array(
25  'amount' => '10.00',
26  'returnUrl' => 'https://www.example.com/return',
27  'cancelUrl' => 'https://www.example.com/cancel',
28  )
29  );
30  }
31 
32  public function testGetDataWithoutCard()
33  {
34  $this->request->initialize(array(
35  'amount' => '10.00',
36  'currency' => 'AUD',
37  'transactionId' => '111',
38  'description' => 'Order Description',
39  'returnUrl' => 'https://www.example.com/return',
40  'cancelUrl' => 'https://www.example.com/cancel',
41  'subject' => 'demo@example.com',
42  'headerImageUrl' => 'https://www.example.com/header.jpg',
43  'noShipping' => 0,
44  'localeCode' => 'EN',
45  'allowNote' => 0,
46  'addressOverride' => 0,
47  'brandName' => 'Dunder Mifflin Paper Company, Inc.',
48  'customerServiceNumber' => '1-801-FLOWERS',
49  ));
50 
51  $data = $this->request->getData();
52 
53  $this->assertSame('10.00', $data['PAYMENTREQUEST_0_AMT']);
54  $this->assertSame('AUD', $data['PAYMENTREQUEST_0_CURRENCYCODE']);
55  $this->assertSame('111', $data['PAYMENTREQUEST_0_INVNUM']);
56  $this->assertSame('Order Description', $data['PAYMENTREQUEST_0_DESC']);
57  $this->assertSame('https://www.example.com/return', $data['RETURNURL']);
58  $this->assertSame('https://www.example.com/cancel', $data['CANCELURL']);
59  $this->assertSame('demo@example.com', $data['SUBJECT']);
60  $this->assertSame('https://www.example.com/header.jpg', $data['HDRIMG']);
61  $this->assertSame(0, $data['NOSHIPPING']);
62  $this->assertSame(0, $data['ALLOWNOTE']);
63  $this->assertSame('EN', $data['LOCALECODE']);
64  $this->assertSame(0, $data['ADDROVERRIDE']);
65  $this->assertSame('Dunder Mifflin Paper Company, Inc.', $data['BRANDNAME']);
66  $this->assertSame('1-801-FLOWERS', $data['CUSTOMERSERVICENUMBER']);
67  }
68 
69  public function testGetDataWithCard()
70  {
71  $this->request->initialize(array(
72  'amount' => '10.00',
73  'currency' => 'AUD',
74  'transactionId' => '111',
75  'description' => 'Order Description',
76  'returnUrl' => 'https://www.example.com/return',
77  'cancelUrl' => 'https://www.example.com/cancel',
78  'subject' => 'demo@example.com',
79  'headerImageUrl' => 'https://www.example.com/header.jpg',
80  'noShipping' => 2,
81  'allowNote' => 1,
82  'addressOverride' => 1,
83  'brandName' => 'Dunder Mifflin Paper Company, Inc.',
84  'maxAmount' => 123.45,
85  'logoImageUrl' => 'https://www.example.com/logo.jpg',
86  'borderColor' => 'CCCCCC',
87  'localeCode' => 'EN',
88  'customerServiceNumber' => '1-801-FLOWERS',
89  'sellerPaypalAccountId' => 'billing@example.com',
90  ));
91 
92  $card = new CreditCard(array(
93  'name' => 'John Doe',
94  'address1' => '123 NW Blvd',
95  'address2' => 'Lynx Lane',
96  'city' => 'Topeka',
97  'state' => 'KS',
98  'country' => 'USA',
99  'postcode' => '66605',
100  'phone' => '555-555-5555',
101  'email' => 'test@email.com',
102  ));
103  $this->request->setCard($card);
104 
105  $expected = array(
106  'METHOD' => 'SetExpressCheckout',
108  'USER' => null,
109  'PWD' => null,
110  'SIGNATURE' => null,
111  'PAYMENTREQUEST_0_PAYMENTACTION' => 'Authorization',
112  'SOLUTIONTYPE' => null,
113  'LANDINGPAGE' => null,
114  'NOSHIPPING' => 2,
115  'ALLOWNOTE' => 1,
116  'ADDROVERRIDE' => 1,
117  'PAYMENTREQUEST_0_AMT' => '10.00',
118  'PAYMENTREQUEST_0_CURRENCYCODE' => 'AUD',
119  'PAYMENTREQUEST_0_INVNUM' => '111',
120  'PAYMENTREQUEST_0_DESC' => 'Order Description',
121  'RETURNURL' => 'https://www.example.com/return',
122  'CANCELURL' => 'https://www.example.com/cancel',
123  'SUBJECT' => 'demo@example.com',
124  'HDRIMG' => 'https://www.example.com/header.jpg',
125  'PAYMENTREQUEST_0_SHIPTONAME' => 'John Doe',
126  'PAYMENTREQUEST_0_SHIPTOSTREET' => '123 NW Blvd',
127  'PAYMENTREQUEST_0_SHIPTOSTREET2' => 'Lynx Lane',
128  'PAYMENTREQUEST_0_SHIPTOCITY' => 'Topeka',
129  'PAYMENTREQUEST_0_SHIPTOSTATE' => 'KS',
130  'PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE' => 'USA',
131  'PAYMENTREQUEST_0_SHIPTOZIP' => '66605',
132  'PAYMENTREQUEST_0_SHIPTOPHONENUM' => '555-555-5555',
133  'EMAIL' => 'test@email.com',
134  'BRANDNAME' => 'Dunder Mifflin Paper Company, Inc.',
135  'MAXAMT' => 123.45,
136  'PAYMENTREQUEST_0_TAXAMT' => null,
137  'PAYMENTREQUEST_0_SHIPPINGAMT' => null,
138  'PAYMENTREQUEST_0_HANDLINGAMT' => null,
139  'PAYMENTREQUEST_0_SHIPDISCAMT' => null,
140  'PAYMENTREQUEST_0_INSURANCEAMT' => null,
141  'LOGOIMG' => 'https://www.example.com/logo.jpg',
142  'CARTBORDERCOLOR' => 'CCCCCC',
143  'LOCALECODE' => 'EN',
144  'CUSTOMERSERVICENUMBER' => '1-801-FLOWERS',
145  'PAYMENTREQUEST_0_SELLERPAYPALACCOUNTID' => 'billing@example.com',
146  );
147 
148  $this->assertEquals($expected, $this->request->getData());
149  }
150 
151  public function testGetDataWithItems()
152  {
153  $this->request->setItems(array(
154  array('name' => 'Floppy Disk', 'description' => 'MS-DOS', 'quantity' => 2, 'price' => 10, 'code' => '123456'),
155  array('name' => 'CD-ROM', 'description' => 'Windows 95', 'quantity' => 1, 'price' => 40),
156  ));
157 
158  $data = $this->request->getData();
159  $this->assertSame('Floppy Disk', $data['L_PAYMENTREQUEST_0_NAME0']);
160  $this->assertSame('MS-DOS', $data['L_PAYMENTREQUEST_0_DESC0']);
161  $this->assertSame(2, $data['L_PAYMENTREQUEST_0_QTY0']);
162  $this->assertSame('10.00', $data['L_PAYMENTREQUEST_0_AMT0']);
163  $this->assertSame('123456', $data['L_PAYMENTREQUEST_0_NUMBER0']);
164 
165  $this->assertSame('CD-ROM', $data['L_PAYMENTREQUEST_0_NAME1']);
166  $this->assertSame('Windows 95', $data['L_PAYMENTREQUEST_0_DESC1']);
167  $this->assertSame(1, $data['L_PAYMENTREQUEST_0_QTY1']);
168  $this->assertSame('40.00', $data['L_PAYMENTREQUEST_0_AMT1']);
169 
170  $this->assertSame('60.00', $data['PAYMENTREQUEST_0_ITEMAMT']);
171  }
172 
173  public function testGetDataWithExtraOrderDetails()
174  {
175  $this->request->initialize(array(
176  'amount' => '10.00',
177  'currency' => 'AUD',
178  'transactionId' => '111',
179  'description' => 'Order Description',
180  'returnUrl' => 'https://www.example.com/return',
181  'cancelUrl' => 'https://www.example.com/cancel',
182  'subject' => 'demo@example.com',
183  'headerImageUrl' => 'https://www.example.com/header.jpg',
184  'noShipping' => 0,
185  'allowNote' => 0,
186  'addressOverride' => 0,
187  'brandName' => 'Dunder Mifflin Paper Company, Inc.',
188  'taxAmount' => '2.00',
189  'shippingAmount' => '5.00',
190  'handlingAmount' => '1.00',
191  'shippingDiscount' => '-1.00',
192  'insuranceAmount' => '3.00',
193  ));
194 
195  $data = $this->request->getData();
196  $this->assertSame('2.00', $data['PAYMENTREQUEST_0_TAXAMT']);
197  $this->assertSame('5.00', $data['PAYMENTREQUEST_0_SHIPPINGAMT']);
198  $this->assertSame('1.00', $data['PAYMENTREQUEST_0_HANDLINGAMT']);
199  $this->assertSame('-1.00', $data['PAYMENTREQUEST_0_SHIPDISCAMT']);
200  $this->assertSame('3.00', $data['PAYMENTREQUEST_0_INSURANCEAMT']);
201  }
202 
203  public function testHeaderImageUrl()
204  {
205  $this->assertSame($this->request, $this->request->setHeaderImageUrl('https://www.example.com/header.jpg'));
206  $this->assertSame('https://www.example.com/header.jpg', $this->request->getHeaderImageUrl());
207 
208  $data = $this->request->getData();
209  $this->assertEquals('https://www.example.com/header.jpg', $data['HDRIMG']);
210  }
211 
212  public function testMaxAmount()
213  {
214  $this->request->setMaxAmount(321.54);
215 
216  $this->assertSame(321.54, $this->request->getMaxAmount());
217 
218  $data = $this->request->getData();
219 
220  $this->assertSame(321.54, $data['MAXAMT']);
221  }
222 
223  public function testDataWithCallback()
224  {
225  $baseData = array(
226  'amount' => '10.00',
227  'currency' => 'AUD',
228  'transactionId' => '111',
229  'description' => 'Order Description',
230  'returnUrl' => 'https://www.example.com/return',
231  'cancelUrl' => 'https://www.example.com/cancel',
232  'subject' => 'demo@example.com',
233  'headerImageUrl' => 'https://www.example.com/header.jpg',
234  'allowNote' => 0,
235  'addressOverride' => 0,
236  'brandName' => 'Dunder Mifflin Paper Company, Incy.',
237  );
238 
239  $shippingOptions = array(
240  new ShippingOption('First Class', 1.20, true, '1-2 days'),
241  new ShippingOption('Second Class', 0.70, false, '3-5 days'),
242  new ShippingOption('International', 3.50),
243  );
244 
245  // with a default callback timeout
246  $this->request->initialize(array_merge($baseData, array(
247  'callback' => 'https://www.example.com/calculate-shipping',
248  'shippingOptions' => $shippingOptions,
249  )));
250 
251  $data = $this->request->getData();
252  $this->assertSame('https://www.example.com/calculate-shipping', $data['CALLBACK']);
253  $this->assertSame(ExpressInContextAuthorizeRequest::DEFAULT_CALLBACK_TIMEOUT, $data['CALLBACKTIMEOUT']);
254 
255  $this->assertSame('First Class', $data['L_SHIPPINGOPTIONNAME0']);
256  $this->assertSame('1.20', $data['L_SHIPPINGOPTIONAMOUNT0']);
257  $this->assertSame('1', $data['L_SHIPPINGOPTIONISDEFAULT0']);
258  $this->assertSame('1-2 days', $data['L_SHIPPINGOPTIONLABEL0']);
259 
260  $this->assertSame('Second Class', $data['L_SHIPPINGOPTIONNAME1']);
261  $this->assertSame('0.70', $data['L_SHIPPINGOPTIONAMOUNT1']);
262  $this->assertSame('0', $data['L_SHIPPINGOPTIONISDEFAULT1']);
263  $this->assertSame('3-5 days', $data['L_SHIPPINGOPTIONLABEL1']);
264 
265  $this->assertSame('International', $data['L_SHIPPINGOPTIONNAME2']);
266  $this->assertSame('3.50', $data['L_SHIPPINGOPTIONAMOUNT2']);
267  $this->assertSame('0', $data['L_SHIPPINGOPTIONISDEFAULT2']);
268 
269  // with a defined callback timeout
270  $this->request->initialize(array_merge($baseData, array(
271  'callback' => 'https://www.example.com/calculate-shipping',
272  'callbackTimeout' => 10,
273  'shippingOptions' => $shippingOptions,
274  )));
275 
276  $data = $this->request->getData();
277  $this->assertSame('https://www.example.com/calculate-shipping', $data['CALLBACK']);
278  $this->assertSame(10, $data['CALLBACKTIMEOUT']);
279  }
280 
282  {
283  $baseData = array(
284  'amount' => '10.00',
285  'currency' => 'AUD',
286  'transactionId' => '111',
287  'description' => 'Order Description',
288  'returnUrl' => 'https://www.example.com/return',
289  'cancelUrl' => 'https://www.example.com/cancel',
290  'subject' => 'demo@example.com',
291  'headerImageUrl' => 'https://www.example.com/header.jpg',
292  'allowNote' => 0,
293  'addressOverride' => 0,
294  'brandName' => 'Dunder Mifflin Paper Company, Incy.',
295  );
296 
297  $shippingOptions = array(
298  new ShippingOption('First Class', 1.20, false, '1-2 days'),
299  new ShippingOption('Second Class', 0.70, false, '3-5 days'),
300  new ShippingOption('International', 3.50),
301  );
302 
303  // with a default callback timeout
304  $this->request->initialize(array_merge($baseData, array(
305  'callback' => 'https://www.example.com/calculate-shipping',
306  'shippingOptions' => $shippingOptions,
307  )));
308 
309  $this->expectException(InvalidRequestException::class);
310  $this->expectExceptionMessage('One of the supplied shipping options must be set as default');
311 
312  $this->request->getData();
313  }
314 
315  public function testNoAmount()
316  {
317  $baseData = array(// nothing here - should cause a certain exception
318  );
319 
320  $this->request->initialize($baseData);
321 
322  $this->expectException(InvalidRequestException::class);
323  $this->expectExceptionMessage('The amount parameter is required');
324 
325  $this->request->getData();
326  }
327 
328  public function testAmountButNoReturnUrl()
329  {
330  $baseData = array(
331  'amount' => 10.00,
332  );
333 
334  $this->request->initialize($baseData);
335 
336  $this->expectException(InvalidRequestException::class);
337  $this->expectExceptionMessage('The returnUrl parameter is required');
338 
339  $this->request->getData();
340  }
341 
342  public function testBadCallbackConfiguration()
343  {
344  $baseData = array(
345  'amount' => '10.00',
346  'currency' => 'AUD',
347  'transactionId' => '111',
348  'description' => 'Order Description',
349  'returnUrl' => 'https://www.example.com/return',
350  'cancelUrl' => 'https://www.example.com/cancel',
351  'subject' => 'demo@example.com',
352  'headerImageUrl' => 'https://www.example.com/header.jpg',
353  'allowNote' => 0,
354  'addressOverride' => 0,
355  'brandName' => 'Dunder Mifflin Paper Company, Incy.',
356  );
357 
358  $this->request->initialize(array_merge($baseData, array(
359  'callback' => 'https://www.example.com/calculate-shipping',
360  )));
361 
362  // from the docblock on this exception -
363  // Thrown when a request is invalid or missing required fields.
364  // callback has been set but no shipping options so expect one of these:
365  $this->expectException(InvalidRequestException::class);
366 
367  $this->request->getData();
368  }
369 }
Omnipay\PayPal\Message\ExpressInContextAuthorizeRequestTest\testNoAmount
testNoAmount()
Definition: vendor/omnipay/paypal/tests/Message/ExpressInContextAuthorizeRequestTest.php:318
Omnipay\PayPal\Message\ExpressInContextAuthorizeRequestTest\setUp
setUp()
Definition: vendor/omnipay/paypal/tests/Message/ExpressInContextAuthorizeRequestTest.php:21
Omnipay\PayPal\Message\AbstractRequest\API_VERSION
const API_VERSION
Definition: lib/vendor/omnipay/paypal/src/Message/AbstractRequest.php:37
Omnipay\PayPal\Message\ExpressInContextAuthorizeRequestTest\testDataWithCallback
testDataWithCallback()
Definition: vendor/omnipay/paypal/tests/Message/ExpressInContextAuthorizeRequestTest.php:226
Omnipay\PayPal\Message\ExpressInContextAuthorizeRequestTest\testGetDataWithCard
testGetDataWithCard()
Definition: vendor/omnipay/paypal/tests/Message/ExpressInContextAuthorizeRequestTest.php:72
Omnipay\PayPal\Message\ExpressInContextAuthorizeRequestTest\testBadCallbackConfiguration
testBadCallbackConfiguration()
Definition: vendor/omnipay/paypal/tests/Message/ExpressInContextAuthorizeRequestTest.php:345
Omnipay\Common\Exception\InvalidRequestException
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/Exception/InvalidRequestException.php:10
Omnipay\PayPal\Message\ExpressInContextAuthorizeRequestTest\testAmountButNoReturnUrl
testAmountButNoReturnUrl()
Definition: vendor/omnipay/paypal/tests/Message/ExpressInContextAuthorizeRequestTest.php:331
Omnipay\PayPal\Message\ExpressInContextAuthorizeRequestTest\testGetDataWithItems
testGetDataWithItems()
Definition: vendor/omnipay/paypal/tests/Message/ExpressInContextAuthorizeRequestTest.php:154
Omnipay\PayPal\Message\ExpressAuthorizeRequest\DEFAULT_CALLBACK_TIMEOUT
const DEFAULT_CALLBACK_TIMEOUT
Definition: lib/vendor/omnipay/paypal/src/Message/ExpressAuthorizeRequest.php:15
Omnipay\PayPal\Message\ExpressInContextAuthorizeRequest
Definition: lib/vendor/omnipay/paypal/src/Message/ExpressInContextAuthorizeRequest.php:8
Omnipay\PayPal\Message\ExpressInContextAuthorizeRequestTest\testGetDataWithoutCard
testGetDataWithoutCard()
Definition: vendor/omnipay/paypal/tests/Message/ExpressInContextAuthorizeRequestTest.php:35
Omnipay\PayPal\Message\ExpressInContextAuthorizeRequestTest\testGetDataWithExtraOrderDetails
testGetDataWithExtraOrderDetails()
Definition: vendor/omnipay/paypal/tests/Message/ExpressInContextAuthorizeRequestTest.php:176
Omnipay\PayPal\Message\ExpressInContextAuthorizeRequestTest\testDataWithCallbackAndNoDefaultShippingOption
testDataWithCallbackAndNoDefaultShippingOption()
Definition: vendor/omnipay/paypal/tests/Message/ExpressInContextAuthorizeRequestTest.php:284
Omnipay\PayPal\Support\InstantUpdateApi\ShippingOption
Definition: lib/vendor/omnipay/paypal/src/Support/InstantUpdateApi/ShippingOption.php:5
Omnipay\Common\CreditCard
Definition: lib/vendor/omnipay/common/src/Omnipay/Common/CreditCard.php:94
Omnipay\PayPal\Message
Definition: lib/vendor/omnipay/paypal/src/Message/AbstractRequest.php:6
Omnipay\PayPal\Message\ExpressInContextAuthorizeRequestTest\testHeaderImageUrl
testHeaderImageUrl()
Definition: vendor/omnipay/paypal/tests/Message/ExpressInContextAuthorizeRequestTest.php:206
Omnipay\PayPal\Message\ExpressInContextAuthorizeRequestTest\testMaxAmount
testMaxAmount()
Definition: vendor/omnipay/paypal/tests/Message/ExpressInContextAuthorizeRequestTest.php:215