7ce6947e775d51e76cb3843259942a8bb93fac43
[Business-OnlinePayment-USAePay.git] / t / USAePay.t
1 # Before `make install' is performed this script should be runnable with
2 # `make test'. After `make install' it should work as `perl eWay.t'
3
4 use Test;
5 BEGIN { plan tests => 391, todo => [379,380,382] };
6 use Business::OnlinePayment::USAePay;
7
8 # a test transaction
9 my ($tx, $txnum, $res);
10 ok($tx = new Business::OnlinePayment("USAePay"));
11 ok(
12     $tx->content(
13         type           => 'CC',
14         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
15         action         => 'Normal Authorization',
16         description    => 'Business::OnlinePayment test',
17         amount         => '49.95',
18         invoice_number => '100100',
19         name           => 'Tofu Beast',
20         card_number    => '4005562233445564',
21         expiration     => '11/08',
22         address        => '1234 Bean Curd Lane, San Francisco',
23         zip            => '94102',
24     )
25 );
26 ok($tx->submit());
27 ok($tx->is_success());
28 ok($tx->error_message(), 'Approved');
29 ok($tx->authorization(), '/\d{6}/');
30 ok($res = $tx->server_response());
31 ok($txnum = $res->{UMauthCode});
32 ok($res->{UMavsResultCode}, "YYY");
33 ok($res->{UMresult}, "A");
34 ok($res->{UMcvv2Result}, "Not Processed");
35 ok($res->{UMversion}, "2.9");
36 ok($res->{UMavsResult}, "Address: Match & 5 Digit Zip: Match");
37 ok($res->{UMrefNum}, qr/^\d+/);
38 ok($res->{UMbatch}, qr/^\d+/);
39 ok($res->{UMerrorcode}, "00000");
40 ok($res->{UMvpasResultCode}, "");
41 ok($res->{UMcvv2ResultCode}, "P");
42
43 #resubmit test
44 ok($tx->submit());
45 ok(($tx->server_response->{UMauthCode} - $txnum) > 0);
46
47 # a test transaction with cvn
48 ok(
49     $tx->content(
50         type           => 'CC',
51         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
52         action         => 'Normal Authorization',
53         description    => 'Business::OnlinePayment test',
54         amount         => '49.95',
55         invoice_number => '100100',
56         name           => 'Tofu Beast',
57         card_number    => '4005562233445564',
58         expiration     => '11/08',
59         cvv2           => '123',
60         address        => '1234 Bean Curd Lane, San Francisco',
61         zip            => '94102',
62     )
63 );
64 ok($tx->submit());
65 ok($tx->is_success());
66 ok($tx->error_message(), 'Approved');
67 ok($tx->authorization(), '/\d{6}/');
68 ok($tx->server_response->{UMcvv2Result}, "Not Processed");
69
70 # a failing transaction
71 ok(
72     $tx->content(
73         type           => 'CC',
74         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
75         action         => 'Normal Authorization',
76         description    => 'Business::OnlinePayment test',
77         amount         => '49.95',
78         invoice_number => '100100',
79         name           => 'Tofu Beast',
80         first_name     => 'Tofu',
81         last_name      => 'Beast',
82         email          => 'tofu@example.com',
83         address        => '1234 Bean Curd Lane, Sydney',
84         zip            => '2034',
85         card_number    => '4646464646464646',
86         expiration     => '11/08',
87         cvv2           => '123',
88     )
89 );
90 ok($tx->test_transaction(0),0);
91 ok($tx->submit());
92 ok($tx->is_success(),0);
93 ok($tx->error_message(), 'Invalid Card Number (3)');
94 ok($tx->authorization(), '/\d{6}/');
95 ok($tx->server_response->{UMcvv2Result}, "No CVV2/CVC data available for transaction.");
96
97 #various test cards; semi-useful testing
98 #Full match avs, zip9 & cvv2
99 ok(
100     $tx->content(
101         type           => 'CC',
102         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
103         action         => 'Normal Authorization',
104         description    => 'Business::OnlinePayment test',
105         amount         => '49.95',
106         invoice_number => '100100',
107         name           => 'Tofu Beast',
108         card_number    => '4000100011112224',
109         expiration     => '09/09',
110         address        => '1234 Bean Curd Lane, San Francisco',
111         zip            => '94102',
112         cvv2           => '102',
113     )
114 );
115 ok($tx->submit());
116 ok($tx->is_success());
117 ok($tx->error_message(), 'Approved');
118 ok($tx->authorization(), '/\d{6}/');
119 ok($tx->server_response->{UMavsResultCode}, "YYY");
120 ok($tx->server_response->{UMresult}, "A");
121 ok($tx->server_response->{UMcvv2Result}, "Match");
122 ok($tx->server_response->{UMversion}, "2.9");
123 ok($tx->server_response->{UMavsResult}, "Address: Match & 5 Digit Zip: Match");
124 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
125 ok($tx->server_response->{UMerrorcode}, "00000");
126 ok($tx->server_response->{UMbatch}, qr/^\d+/);
127
128 #Full match avs, zip9 & cvv2
129 ok(
130     $tx->content(
131         type           => 'CC',
132         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
133         action         => 'Normal Authorization',
134         description    => 'Business::OnlinePayment test',
135         amount         => '49.95',
136         invoice_number => '100100',
137         name           => 'Tofu Beast',
138         card_number    => '4000100111112223',
139         expiration     => '09/09',
140         address        => '1234 Bean Curd Lane, San Francisco',
141         zip            => '94102',
142         cvv2           => '102',
143     )
144 );
145 ok($tx->submit());
146 ok($tx->is_success());
147 ok($tx->error_message(), 'Approved');
148 ok($tx->authorization(), '/\d{6}/');
149 ok($tx->server_response->{UMavsResultCode}, "YYX");
150 ok($tx->server_response->{UMresult}, "A");
151 ok($tx->server_response->{UMcvv2Result}, "Match");
152 ok($tx->server_response->{UMversion}, "2.9");
153 ok($tx->server_response->{UMavsResult}, "Address: Match & 9 Digit Zip: Match");
154 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
155 ok($tx->server_response->{UMerrorcode}, "00000");
156 ok($tx->server_response->{UMbatch}, qr/^\d+/);
157 ok($tx->server_response->{UMvpasResultCode}, "");
158 ok($tx->server_response->{UMcvv2ResultCode}, "M");
159
160 #no match avs, match zip5 & cvv2
161 ok(
162     $tx->content(
163         type           => 'CC',
164         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
165         action         => 'Normal Authorization',
166         description    => 'Business::OnlinePayment test',
167         amount         => '49.95',
168         invoice_number => '100100',
169         name           => 'Tofu Beast',
170         card_number    => '4000100211112222',
171         expiration     => '09/09',
172         address        => '1234 Bean Curd Lane, San Francisco',
173         zip            => '94102',
174         cvv2           => '102',
175     )
176 );
177 ok($tx->submit());
178 ok($tx->is_success());
179 ok($tx->error_message(), 'Approved');
180 ok($tx->authorization(), '/\d{6}/');
181 ok($tx->server_response->{UMavsResultCode}, "NYZ");
182 ok($tx->server_response->{UMresult}, "A");
183 ok($tx->server_response->{UMcvv2Result}, "Match");
184 ok($tx->server_response->{UMversion}, "2.9");
185 ok($tx->server_response->{UMavsResult}, "Address: No Match & 5 Digit Zip: Match");
186 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
187 ok($tx->server_response->{UMerrorcode}, "00000");
188 ok($tx->server_response->{UMbatch}, qr/^\d+/);
189 ok($tx->server_response->{UMvpasResultCode}, "");
190 ok($tx->server_response->{UMcvv2ResultCode}, "M");
191
192 # no match address, match zip9 & cvv2
193 ok(
194     $tx->content(
195         type           => 'CC',
196         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
197         action         => 'Normal Authorization',
198         description    => 'Business::OnlinePayment test',
199         amount         => '49.95',
200         invoice_number => '100100',
201         name           => 'Tofu Beast',
202         card_number    => '4000100311112221',
203         expiration     => '09/09',
204         address        => '1234 Bean Curd Lane, San Francisco',
205         zip            => '94102',
206         cvv2           => '102',
207     )
208 );
209 ok($tx->submit());
210 ok($tx->is_success());
211 ok($tx->error_message(), 'Approved');
212 ok($tx->authorization(), '/\d{6}/');
213 ok($tx->server_response->{UMavsResultCode}, "NYW");
214 ok($tx->server_response->{UMresult}, "A");
215 ok($tx->server_response->{UMcvv2Result}, "Match");
216 ok($tx->server_response->{UMversion}, "2.9");
217 ok($tx->server_response->{UMavsResult}, "Address: No Match & 9 Digit Zip: Match");
218 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
219 ok($tx->server_response->{UMerrorcode}, "00000");
220 ok($tx->server_response->{UMbatch}, qr/^\d+/);
221 ok($tx->server_response->{UMvpasResultCode}, "");
222 ok($tx->server_response->{UMcvv2ResultCode}, "M");
223
224 # match address, no match zip5 & match cvv2
225 ok(
226     $tx->content(
227         type           => 'CC',
228         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
229         action         => 'Normal Authorization',
230         description    => 'Business::OnlinePayment test',
231         amount         => '49.95',
232         invoice_number => '100100',
233         name           => 'Tofu Beast',
234         card_number    => '4000100411112220',
235         expiration     => '09/09',
236         address        => '1234 Bean Curd Lane, San Francisco',
237         zip            => '94102',
238         cvv2           => '102',
239     )
240 );
241 ok($tx->submit());
242 ok($tx->is_success());
243 ok($tx->error_message(), 'Approved');
244 ok($tx->authorization(), '/\d{6}/');
245 ok($tx->server_response->{UMavsResultCode}, "YNA");
246 ok($tx->server_response->{UMresult}, "A");
247 ok($tx->server_response->{UMcvv2Result}, "Match");
248 ok($tx->server_response->{UMversion}, "2.9");
249 ok($tx->server_response->{UMavsResult}, "Address: Match & 5 Digit Zip: No Match");
250 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
251 ok($tx->server_response->{UMerrorcode}, "00000");
252 ok($tx->server_response->{UMbatch}, qr/^\d+/);
253 ok($tx->server_response->{UMvpasResultCode}, "");
254 ok($tx->server_response->{UMcvv2ResultCode}, "M");
255
256 # no match address, zip5 & match cvv2
257 ok(
258     $tx->content(
259         type           => 'CC',
260         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
261         action         => 'Normal Authorization',
262         description    => 'Business::OnlinePayment test',
263         amount         => '49.95',
264         invoice_number => '100100',
265         name           => 'Tofu Beast',
266         card_number    => '4000100511112229',
267         expiration     => '09/09',
268         address        => '1234 Bean Curd Lane, San Francisco',
269         zip            => '94102',
270         cvv2           => '102',
271     )
272 );
273 ok($tx->submit());
274 ok($tx->is_success());
275 ok($tx->error_message(), 'Approved');
276 ok($tx->authorization(), '/\d{6}/');
277 ok($tx->server_response->{UMavsResultCode}, "NNN");
278 ok($tx->server_response->{UMresult}, "A");
279 ok($tx->server_response->{UMcvv2Result}, "Match");
280 ok($tx->server_response->{UMversion}, "2.9");
281 ok($tx->server_response->{UMavsResult}, "Address: No Match & 5 Digit Zip: No Match");
282 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
283 ok($tx->server_response->{UMerrorcode}, "00000");
284 ok($tx->server_response->{UMbatch}, qr/^\d+/);
285 ok($tx->server_response->{UMvpasResultCode}, "");
286 ok($tx->server_response->{UMcvv2ResultCode}, "M");
287
288 # card number not on avs file
289 ok(
290     $tx->content(
291         type           => 'CC',
292         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
293         action         => 'Normal Authorization',
294         description    => 'Business::OnlinePayment test',
295         amount         => '49.95',
296         invoice_number => '100100',
297         name           => 'Tofu Beast',
298         card_number    => '4000100611112228',
299         expiration     => '09/09',
300         address        => '1234 Bean Curd Lane, San Francisco',
301         zip            => '94102',
302         cvv2           => '102',
303     )
304 );
305 ok($tx->submit());
306 ok($tx->is_success());
307 ok($tx->error_message(), 'Approved');
308 ok($tx->authorization(), '/\d{6}/');
309 ok($tx->server_response->{UMavsResultCode}, "XXW");
310 ok($tx->server_response->{UMresult}, "A");
311 ok($tx->server_response->{UMcvv2Result}, "Match");
312 ok($tx->server_response->{UMversion}, "2.9");
313 ok($tx->server_response->{UMavsResult}, "Card Number Not On File");
314 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
315 ok($tx->server_response->{UMerrorcode}, "00000");
316 ok($tx->server_response->{UMbatch}, qr/^\d+/);
317 ok($tx->server_response->{UMvpasResultCode}, "");
318 ok($tx->server_response->{UMcvv2ResultCode}, "M");
319
320 # not verified
321 ok(
322     $tx->content(
323         type           => 'CC',
324         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
325         action         => 'Normal Authorization',
326         description    => 'Business::OnlinePayment test',
327         amount         => '49.95',
328         invoice_number => '100100',
329         name           => 'Tofu Beast',
330         card_number    => '4000100711112227',
331         expiration     => '09/09',
332         address        => '1234 Bean Curd Lane, San Francisco',
333         zip            => '94102',
334         cvv2           => '102',
335     )
336 );
337 ok($tx->submit());
338 ok($tx->is_success());
339 ok($tx->error_message(), 'Approved');
340 ok($tx->authorization(), '/\d{6}/');
341 ok($tx->server_response->{UMavsResultCode}, "XXU");
342 ok($tx->server_response->{UMresult}, "A");
343 ok($tx->server_response->{UMcvv2Result}, "Match");
344 ok($tx->server_response->{UMversion}, "2.9");
345 ok($tx->server_response->{UMavsResult}, "Address Information not verified for domestic transaction");
346 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
347 ok($tx->server_response->{UMerrorcode}, "00000");
348 ok($tx->server_response->{UMbatch}, qr/^\d+/);
349 ok($tx->server_response->{UMvpasResultCode}, "");
350 ok($tx->server_response->{UMcvv2ResultCode}, "M");
351
352 # retry avs   
353 ok(
354     $tx->content(
355         type           => 'CC',
356         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
357         action         => 'Normal Authorization',
358         description    => 'Business::OnlinePayment test',
359         amount         => '49.95',
360         invoice_number => '100100',
361         name           => 'Tofu Beast',
362         card_number    => '4000100811112226',
363         expiration     => '09/09',
364         address        => '1234 Bean Curd Lane, San Francisco',
365         zip            => '94102',
366         cvv2           => '102',
367     )
368 );
369 ok($tx->submit());
370 ok($tx->is_success());
371 ok($tx->error_message(), 'Approved');
372 ok($tx->authorization(), '/\d{6}/');
373 ok($tx->server_response->{UMavsResultCode}, "XXR");
374 ok($tx->server_response->{UMresult}, "A");
375 ok($tx->server_response->{UMcvv2Result}, "Match");
376 ok($tx->server_response->{UMversion}, "2.9");
377 ok($tx->server_response->{UMavsResult}, "Retry / System Unavailable");
378 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
379 ok($tx->server_response->{UMerrorcode}, "00000");
380 ok($tx->server_response->{UMbatch}, qr/^\d+/);
381 ok($tx->server_response->{UMvpasResultCode}, "");
382 ok($tx->server_response->{UMcvv2ResultCode}, "M");
383
384 # avs not supported
385 ok(
386     $tx->content(
387         type           => 'CC',
388         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
389         action         => 'Normal Authorization',
390         description    => 'Business::OnlinePayment test',
391         amount         => '49.95',
392         invoice_number => '100100',
393         name           => 'Tofu Beast',
394         card_number    => '4000100911112225',
395         expiration     => '09/09',
396         address        => '1234 Bean Curd Lane, San Francisco',
397         zip            => '94102',
398         cvv2           => '102',
399     )
400 );
401 ok($tx->submit());
402 ok($tx->is_success());
403 ok($tx->error_message(), 'Approved');
404 ok($tx->authorization(), '/\d{6}/');
405 ok($tx->server_response->{UMavsResultCode}, "XXS");
406 ok($tx->server_response->{UMresult}, "A");
407 ok($tx->server_response->{UMcvv2Result}, "Match");
408 ok($tx->server_response->{UMversion}, "2.9");
409 ok($tx->server_response->{UMavsResult}, "Service Not Support");
410 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
411 ok($tx->server_response->{UMerrorcode}, "00000");
412 ok($tx->server_response->{UMbatch}, qr/^\d+/);
413 ok($tx->server_response->{UMvpasResultCode}, "");
414 ok($tx->server_response->{UMcvv2ResultCode}, "M");
415
416 # avs not allowed for card type
417 ok(
418     $tx->content(
419         type           => 'CC',
420         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
421         action         => 'Normal Authorization',
422         description    => 'Business::OnlinePayment test',
423         amount         => '49.95',
424         invoice_number => '100100',
425         name           => 'Tofu Beast',
426         card_number    => '4000101011112222',
427         expiration     => '09/09',
428         address        => '1234 Bean Curd Lane, San Francisco',
429         zip            => '94102',
430         cvv2           => '102',
431     )
432 );
433 ok($tx->submit());
434 ok($tx->is_success());
435 ok($tx->error_message(), 'Approved');
436 ok($tx->authorization(), '/\d{6}/');
437 ok($tx->server_response->{UMavsResultCode}, "XXE");
438 ok($tx->server_response->{UMresult}, "A");
439 ok($tx->server_response->{UMcvv2Result}, "Match");
440 ok($tx->server_response->{UMversion}, "2.9");
441 ok($tx->server_response->{UMavsResult}, "Address Verification Not Allowed For Card Type");
442 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
443 ok($tx->server_response->{UMerrorcode}, "00000");
444 ok($tx->server_response->{UMbatch}, qr/^\d+/);
445 ok($tx->server_response->{UMvpasResultCode}, "");
446 ok($tx->server_response->{UMcvv2ResultCode}, "M");
447
448 # global non-avs participant
449 ok(
450     $tx->content(
451         type           => 'CC',
452         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
453         action         => 'Normal Authorization',
454         description    => 'Business::OnlinePayment test',
455         amount         => '49.95',
456         invoice_number => '100100',
457         name           => 'Tofu Beast',
458         card_number    => '4000101111112221',
459         expiration     => '09/09',
460         address        => '1234 Bean Curd Lane, San Francisco',
461         zip            => '94102',
462         cvv2           => '102',
463     )
464 );
465 ok($tx->submit());
466 ok($tx->is_success());
467 ok($tx->error_message(), 'Approved');
468 ok($tx->authorization(), '/\d{6}/');
469 ok($tx->server_response->{UMavsResultCode}, "XXG");
470 ok($tx->server_response->{UMresult}, "A");
471 ok($tx->server_response->{UMcvv2Result}, "Match");
472 ok($tx->server_response->{UMversion}, "2.9");
473 ok($tx->server_response->{UMavsResult}, "Global Non-AVS participant");
474 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
475 ok($tx->server_response->{UMerrorcode}, "00000");
476 ok($tx->server_response->{UMbatch}, qr/^\d+/);
477 ok($tx->server_response->{UMvpasResultCode}, "");
478 ok($tx->server_response->{UMcvv2ResultCode}, "M");
479
480 # international address match, zip incompat
481 ok(
482     $tx->content(
483         type           => 'CC',
484         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
485         action         => 'Normal Authorization',
486         description    => 'Business::OnlinePayment test',
487         amount         => '49.95',
488         invoice_number => '100100',
489         name           => 'Tofu Beast',
490         card_number    => '4000101211112220',
491         expiration     => '09/09',
492         address        => '1234 Bean Curd Lane, San Francisco',
493         zip            => '94102',
494         cvv2           => '102',
495     )
496 );
497 ok($tx->submit());
498 ok($tx->is_success());
499 ok($tx->error_message(), 'Approved');
500 ok($tx->authorization(), '/\d{6}/');
501 ok($tx->server_response->{UMavsResultCode}, "YYG");
502 ok($tx->server_response->{UMresult}, "A");
503 ok($tx->server_response->{UMcvv2Result}, "Match");
504 ok($tx->server_response->{UMversion}, "2.9");
505 ok($tx->server_response->{UMavsResult}, "International Address: Match & Zip: Not Compatible");
506 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
507 ok($tx->server_response->{UMerrorcode}, "00000");
508 ok($tx->server_response->{UMbatch}, qr/^\d+/);
509 ok($tx->server_response->{UMvpasResultCode}, "");
510 ok($tx->server_response->{UMcvv2ResultCode}, "M");
511
512 # international address match, zip 
513 ok(
514     $tx->content(
515         type           => 'CC',
516         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
517         action         => 'Normal Authorization',
518         description    => 'Business::OnlinePayment test',
519         amount         => '49.95',
520         invoice_number => '100100',
521         name           => 'Tofu Beast',
522         card_number    => '4000101311112229',
523         expiration     => '09/09',
524         address        => '1234 Bean Curd Lane, San Francisco',
525         zip            => '94102',
526         cvv2           => '102',
527     )
528 );
529 ok($tx->submit());
530 ok($tx->is_success());
531 ok($tx->error_message(), 'Approved');
532 ok($tx->authorization(), '/\d{6}/');
533 ok($tx->server_response->{UMavsResultCode}, "GGG");
534 ok($tx->server_response->{UMresult}, "A");
535 ok($tx->server_response->{UMcvv2Result}, "Match");
536 ok($tx->server_response->{UMversion}, "2.9");
537 ok($tx->server_response->{UMavsResult}, "International Address: Match & Zip: Match");
538 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
539 ok($tx->server_response->{UMerrorcode}, "00000");
540 ok($tx->server_response->{UMbatch}, qr/^\d+/);
541 ok($tx->server_response->{UMvpasResultCode}, "");
542 ok($tx->server_response->{UMcvv2ResultCode}, "M");
543
544 # international address Not compat & match, zip 
545 ok(
546     $tx->content(
547         type           => 'CC',
548         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
549         action         => 'Normal Authorization',
550         description    => 'Business::OnlinePayment test',
551         amount         => '49.95',
552         invoice_number => '100100',
553         name           => 'Tofu Beast',
554         card_number    => '4000101411112228',
555         expiration     => '09/09',
556         address        => '1234 Bean Curd Lane, San Francisco',
557         zip            => '94102',
558         cvv2           => '102',
559     )
560 );
561 ok($tx->submit());
562 ok($tx->is_success());
563 ok($tx->error_message(), 'Approved');
564 ok($tx->authorization(), '/\d{6}/');
565 ok($tx->server_response->{UMavsResultCode}, "YGG");
566 ok($tx->server_response->{UMresult}, "A");
567 ok($tx->server_response->{UMcvv2Result}, "Match");
568 ok($tx->server_response->{UMversion}, "2.9");
569 ok($tx->server_response->{UMavsResult}, "International Address: No Compatible & Zip: Match");
570 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
571 ok($tx->server_response->{UMerrorcode}, "00000");
572 ok($tx->server_response->{UMbatch}, qr/^\d+/);
573 ok($tx->server_response->{UMvpasResultCode}, "");
574 ok($tx->server_response->{UMcvv2ResultCode}, "M");
575
576 # full match, avs & match, zip 
577 ok(
578     $tx->content(
579         type           => 'CC',
580         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
581         action         => 'Normal Authorization',
582         description    => 'Business::OnlinePayment test',
583         amount         => '49.95',
584         invoice_number => '100100',
585         name           => 'Tofu Beast',
586         card_number    => '4000200011112222',
587         expiration     => '09/09',
588         address        => '1234 Bean Curd Lane, San Francisco',
589         zip            => '94102',
590         cvv2           => '102',
591     )
592 );
593 ok($tx->submit());
594 ok($tx->is_success());
595 ok($tx->error_message(), 'Approved');
596 ok($tx->authorization(), '/\d{6}/');
597 ok($tx->server_response->{UMavsResultCode}, "YYY");
598 ok($tx->server_response->{UMresult}, "A");
599 ok($tx->server_response->{UMcvv2Result}, "Match");
600 ok($tx->server_response->{UMversion}, "2.9");
601 ok($tx->server_response->{UMavsResult}, "Address: Match & 5 Digit Zip: Match");
602 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
603 ok($tx->server_response->{UMerrorcode}, "00000");
604 ok($tx->server_response->{UMbatch}, qr/^\d+/);
605 ok($tx->server_response->{UMvpasResultCode}, "");
606 ok($tx->server_response->{UMcvv2ResultCode}, "M");
607
608 # match avs & no match cvv2
609 ok(
610     $tx->content(
611         type           => 'CC',
612         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
613         action         => 'Normal Authorization',
614         description    => 'Business::OnlinePayment test',
615         amount         => '49.95',
616         invoice_number => '100100',
617         name           => 'Tofu Beast',
618         card_number    => '4000200111112221',
619         expiration     => '09/09',
620         address        => '1234 Bean Curd Lane, San Francisco',
621         zip            => '94102',
622         cvv2           => '102',
623     )
624 );
625 ok($tx->submit());
626 ok($tx->is_success());
627 ok($tx->error_message(), 'Approved');
628 ok($tx->authorization(), '/\d{6}/');
629 ok($tx->server_response->{UMavsResultCode}, "YYY");
630 ok($tx->server_response->{UMresult}, "A");
631 ok($tx->server_response->{UMcvv2Result}, "No Match");
632 ok($tx->server_response->{UMversion}, "2.9");
633 ok($tx->server_response->{UMavsResult}, "Address: Match & 5 Digit Zip: Match");
634 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
635 ok($tx->server_response->{UMerrorcode}, "00000");
636 ok($tx->server_response->{UMbatch}, qr/^\d+/);
637 ok($tx->server_response->{UMvpasResultCode}, "");
638 ok($tx->server_response->{UMcvv2ResultCode}, "N");
639
640 # match avs & not processed cvv2
641 ok(
642     $tx->content(
643         type           => 'CC',
644         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
645         action         => 'Normal Authorization',
646         description    => 'Business::OnlinePayment test',
647         amount         => '49.95',
648         invoice_number => '100100',
649         name           => 'Tofu Beast',
650         card_number    => '4000200211112220',
651         expiration     => '09/09',
652         address        => '1234 Bean Curd Lane, San Francisco',
653         zip            => '94102',
654         cvv2           => '102',
655     )
656 );
657 ok($tx->submit());
658 ok($tx->is_success());
659 ok($tx->error_message(), 'Approved');
660 ok($tx->authorization(), '/\d{6}/');
661 ok($tx->server_response->{UMavsResultCode}, "YYY");
662 ok($tx->server_response->{UMresult}, "A");
663 ok($tx->server_response->{UMcvv2Result}, "Not Processed");
664 ok($tx->server_response->{UMversion}, "2.9");
665 ok($tx->server_response->{UMavsResult}, "Address: Match & 5 Digit Zip: Match");
666 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
667 ok($tx->server_response->{UMerrorcode}, "00000");
668 ok($tx->server_response->{UMbatch}, qr/^\d+/);
669 ok($tx->server_response->{UMvpasResultCode}, "");
670 ok($tx->server_response->{UMcvv2ResultCode}, "P");
671
672 # match avs & fault in cvv2 database
673 ok(
674     $tx->content(
675         type           => 'CC',
676         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
677         action         => 'Normal Authorization',
678         description    => 'Business::OnlinePayment test',
679         amount         => '49.95',
680         invoice_number => '100100',
681         name           => 'Tofu Beast',
682         card_number    => '4000200311112229',
683         expiration     => '09/09',
684         address        => '1234 Bean Curd Lane, San Francisco',
685         zip            => '94102',
686         cvv2           => '102',
687     )
688 );
689 ok($tx->submit());
690 ok($tx->is_success(),0);
691 ok($tx->error_message(), 'Card Declined');
692 ok($tx->authorization(), '/\d{6}/');
693 ok($tx->server_response->{UMavsResultCode}, "YYY");
694 ok($tx->server_response->{UMresult}, "D");
695 ok($tx->server_response->{UMcvv2Result}, "Should be on card but not so indicated");
696 ok($tx->server_response->{UMversion}, "2.9");
697 ok($tx->server_response->{UMavsResult}, "Address: Match & 5 Digit Zip: Match");
698 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
699 ok($tx->server_response->{UMerrorcode}, "10127");
700 ok($tx->server_response->{UMbatch}, qr/^\d+/);
701 ok($tx->server_response->{UMvpasResultCode}, "");
702 ok($tx->server_response->{UMcvv2ResultCode}, "S");
703
704 # match avs & issuer not certified for cvv2
705 ok(
706     $tx->content(
707         type           => 'CC',
708         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
709         action         => 'Normal Authorization',
710         description    => 'Business::OnlinePayment test',
711         amount         => '49.95',
712         invoice_number => '100100',
713         name           => 'Tofu Beast',
714         card_number    => '4000200411112228',
715         expiration     => '09/09',
716         address        => '1234 Bean Curd Lane, San Francisco',
717         zip            => '94102',
718         cvv2           => '102',
719     )
720 );
721 ok($tx->submit());
722 ok($tx->is_success());
723 ok($tx->error_message(), 'Approved');
724 ok($tx->authorization(), '/\d{6}/');
725 ok($tx->server_response->{UMavsResultCode}, "YYY");
726 ok($tx->server_response->{UMresult}, "A");
727 ok($tx->server_response->{UMcvv2Result}, "Issuer Not Certified");
728 ok($tx->server_response->{UMversion}, "2.9");
729 ok($tx->server_response->{UMavsResult}, "Address: Match & 5 Digit Zip: Match");
730 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
731 ok($tx->server_response->{UMerrorcode}, "00000");
732 ok($tx->server_response->{UMbatch}, qr/^\d+/);
733 ok($tx->server_response->{UMvpasResultCode}, "");
734 ok($tx->server_response->{UMcvv2ResultCode}, "U");
735
736 # match avs & no response for cvv2
737 ok(
738     $tx->content(
739         type           => 'CC',
740         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
741         action         => 'Normal Authorization',
742         description    => 'Business::OnlinePayment test',
743         amount         => '49.95',
744         invoice_number => '100100',
745         name           => 'Tofu Beast',
746         card_number    => '4000200511112227',
747         expiration     => '09/09',
748         address        => '1234 Bean Curd Lane, San Francisco',
749         zip            => '94102',
750         cvv2           => '102',
751     )
752 );
753 ok($tx->submit());
754 ok($tx->is_success());
755 ok($tx->error_message(), 'Approved');
756 ok($tx->authorization(), '/\d{6}/');
757 ok($tx->server_response->{UMavsResultCode}, "YYY");
758 ok($tx->server_response->{UMresult}, "A");
759 ok($tx->server_response->{UMcvv2Result}, "No response from association");
760 ok($tx->server_response->{UMversion}, "2.9");
761 ok($tx->server_response->{UMavsResult}, "Address: Match & 5 Digit Zip: Match");
762 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
763 ok($tx->server_response->{UMerrorcode}, "00000");
764 ok($tx->server_response->{UMbatch}, qr/^\d+/);
765 ok($tx->server_response->{UMvpasResultCode}, "");
766 ok($tx->server_response->{UMcvv2ResultCode}, "X");
767
768 # hard decline
769 ok(
770     $tx->content(
771         type           => 'CC',
772         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
773         action         => 'Normal Authorization',
774         description    => 'Business::OnlinePayment test',
775         amount         => '49.95',
776         invoice_number => '100100',
777         name           => 'Tofu Beast',
778         card_number    => '4000300011112220',
779         expiration     => '09/09',
780         address        => '1234 Bean Curd Lane, San Francisco',
781         zip            => '94102',
782         cvv2           => '102',
783     )
784 );
785 ok($tx->submit());
786 ok($tx->is_success(),0);
787 ok($tx->error_message(), 'Card Declined');
788 ok($tx->authorization(), '/\d{6}/');
789 ok($tx->server_response->{UMavsResultCode}, "YYY");
790 ok($tx->server_response->{UMresult}, "D");
791 ok($tx->server_response->{UMcvv2Result}, "Not Processed");
792 ok($tx->server_response->{UMversion}, "2.9");
793 ok($tx->server_response->{UMavsResult}, "Address: Match & 5 Digit Zip: Match");
794 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
795 ok($tx->server_response->{UMerrorcode}, "10127");
796 ok($tx->server_response->{UMbatch}, qr/^\d+/);
797 ok($tx->server_response->{UMvpasResultCode}, "");
798 ok($tx->server_response->{UMcvv2ResultCode}, "P");
799
800 # referral
801 ok(
802     $tx->content(
803         type           => 'CC',
804         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
805         action         => 'Normal Authorization',
806         description    => 'Business::OnlinePayment test',
807         amount         => '49.95',
808         invoice_number => '100100',
809         name           => 'Tofu Beast',
810         card_number    => '4000300111112229',
811         expiration     => '09/09',
812         address        => '1234 Bean Curd Lane, San Francisco',
813         zip            => '94102',
814         cvv2           => '102',
815     )
816 );
817 ok($tx->submit());
818 ok($tx->is_success(),0);
819 ok($tx->error_message(), 'Transaction Requires Voice Authentication. Please Call-In.');
820 ok($tx->authorization(), '/\d{6}/');
821 ok($tx->server_response->{UMavsResultCode}, "YYY");
822 ok($tx->server_response->{UMresult}, "E");
823 ok($tx->server_response->{UMcvv2Result}, "Not Processed");
824 ok($tx->server_response->{UMversion}, "2.9");
825 ok($tx->server_response->{UMavsResult}, "Address: Match & 5 Digit Zip: Match");
826 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
827 ok($tx->server_response->{UMerrorcode}, "00043");
828 ok($tx->server_response->{UMbatch}, qr/^\d+/);
829 ok($tx->server_response->{UMvpasResultCode}, "");
830 ok($tx->server_response->{UMcvv2ResultCode}, "P");
831
832 # check
833 ok(
834     $tx->content(
835         type           => 'ECHECK',
836         login          => 'yCaWGYQsSVR0S48B6AKMK07RQhaxHvGu', #test platform
837         action         => 'Normal Authorization',
838         description    => 'Business::OnlinePayment test',
839         amount         => '49.95',
840         invoice_number => '100100',
841         name           => 'Tofu Beast',
842         routing_code   => '400020001',
843         account_number => '1112222',
844         customer_ssn   => '999999999',
845         address        => '1234 Bean Curd Lane, San Francisco',
846     )
847 );
848 ok($tx->submit());
849 ok($tx->is_success());
850 ok($tx->error_message(), 'Approved');
851 ok($tx->authorization(), '/^\d{6}/');
852 ok($tx->server_response->{UMavsResultCode}, "YYY");
853 ok($tx->server_response->{UMresult}, "E");
854 ok($tx->server_response->{UMcvv2Result}, "No CVV2/CVC data available for transaction.");
855 ok($tx->server_response->{UMversion}, "2.9");
856 ok($tx->server_response->{UMavsResult}, "n/a");
857 ok($tx->server_response->{UMrefNum}, qr/^\d+/);
858 ok($tx->server_response->{UMerrorcode}, "00011");
859 ok($tx->server_response->{UMbatch}, qr/^\d+/);
860 ok($tx->server_response->{UMvpasResultCode}, "");
861 ok($tx->server_response->{UMcvv2ResultCode}, "");
862
863