LitleOnline 8.13.1 → 8.13.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +5 -0
- data/README.md +2 -1
- data/Rakefile +1 -1
- data/index.html?grep= +18 -0
- data/lib/LitleOnlineRequest.rb +45 -29
- data/lib/XMLFields.rb +220 -21
- data/test/functional/test_auth.rb +0 -18
- data/test/functional/test_echeckRedeposit.rb +0 -25
- data/test/functional/test_sale.rb +0 -18
- data/test/functional/test_token.rb +0 -12
- data/test/functional/test_xmlfields.rb +0 -144
- data/test/unit/test_LitleOnlineRequest.rb +1 -1
- data/test/unit/test_auth.rb +107 -2
- data/test/unit/test_captureGivenAuth.rb +1 -1
- data/test/unit/test_credit.rb +98 -2
- data/test/unit/test_echeckRedeposit.rb +24 -0
- data/test/unit/test_forceCapture.rb +2 -2
- data/test/unit/test_sale.rb +22 -3
- data/test/unit/test_token.rb +13 -1
- data/test/unit/test_xmlfields.rb +2385 -3
- metadata +9 -8
data/CHANGELOG
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
= LitleOnline CHANGELOG
|
2
2
|
|
3
|
+
== Version 8.13.2 (June 28, 2012)
|
4
|
+
|
5
|
+
* Feature: Most schema validations are now handled by ruby code and throw errors.
|
6
|
+
* Bugfix: Remove hardcoded username/password fields
|
7
|
+
|
3
8
|
== Version 8.13.1 (May 22, 2012)
|
4
9
|
|
5
10
|
* Feature: Echeck Void now supported
|
data/README.md
CHANGED
@@ -18,7 +18,7 @@ See LICENSE file for details on using this software.
|
|
18
18
|
|
19
19
|
Source Code available from : https://github.com/LitleCo/litle-sdk-for-ruby
|
20
20
|
|
21
|
-
Please contact [Litle & Co.](http://www.litle.com) to receive valid merchant credentials in order to run tests successfully or if you require assistance in any way. We are reachable at
|
21
|
+
Please contact [Litle & Co.](http://www.litle.com) to receive valid merchant credentials in order to run tests successfully or if you require assistance in any way. We are reachable at sdksupport@litle.com
|
22
22
|
|
23
23
|
Setup
|
24
24
|
-----
|
@@ -39,6 +39,7 @@ For more details on setup see our instructions [here](https://github.com/LitleCo
|
|
39
39
|
|
40
40
|
```ruby
|
41
41
|
require 'LitleOnline'
|
42
|
+
include LitleOnline
|
42
43
|
|
43
44
|
# Visa $10 Sale
|
44
45
|
litleSaleTxn = {
|
data/Rakefile
CHANGED
@@ -34,7 +34,7 @@ spec = Gem::Specification.new do |s|
|
|
34
34
|
s.description = File.read(File.join(File.dirname(__FILE__), 'DESCRIPTION'))
|
35
35
|
s.requirements =
|
36
36
|
[ 'Contact sdksupport@litle.com for more information' ]
|
37
|
-
s.version = "8.13.
|
37
|
+
s.version = "8.13.2"
|
38
38
|
s.author = "Litle & Co"
|
39
39
|
s.email = "sdksupport@litle.com"
|
40
40
|
s.homepage = "http://www.litle.com/developers"
|
data/index.html?grep=
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
<!doctype html><html itemscope itemtype="http://schema.org/WebPage"><head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><meta name="description" content="Search the world's information, including webpages, images, videos and more. Google has many special features to help you find exactly what you're looking for."><meta name="robots" content="noodp"><meta itemprop="image" content="/images/google_favicon_128.png"><title>Google</title><script>window.google={kEI:"caDoT43yLcrj0QHFrPmgCg",getEI:function(a){var b;while(a&&!(a.getAttribute&&(b=a.getAttribute("eid"))))a=a.parentNode;return b||google.kEI},https:function(){return window.location.protocol=="https:"},kEXPI:"17259,24472,35702,37607,37864,38252,38816,39366,39370,39410,39423,39537,39730,39737",kCSI:{e:"17259,24472,35702,37607,37864,38252,38816,39366,39370,39410,39423,39537,39730,39737",ei:"caDoT43yLcrj0QHFrPmgCg"},authuser:0,ml:function(){},kHL:"en",time:function(){return(new Date).getTime()},log:function(a,
|
2
|
+
b,c,e){var d=new Image,h=google,i=h.lc,f=h.li,j="";d.onerror=(d.onload=(d.onabort=function(){delete i[f]}));i[f]=d;if(!c&&b.search("&ei=")==-1)j="&ei="+google.getEI(e);var g=c||"/gen_204?atyp=i&ct="+a+"&cad="+b+j+"&zx="+google.time();var k=/^http:/i;if(k.test(g)&&google.https()){google.ml(new Error("GLMM"),false,{src:g});delete i[f];return}d.src=g;h.li=f+1},lc:[],li:0,Toolbelt:{},y:{},x:function(a,b){google.y[a.id]=[a,b];return false}};
|
3
|
+
window.google.sn="webhp";window.google.timers={};window.google.startTick=function(a,b){window.google.timers[a]={t:{start:(new Date).getTime()},bfr:!(!b)}};window.google.tick=function(a,b,c){if(!window.google.timers[a])google.startTick(a);window.google.timers[a].t[b]=c||(new Date).getTime()};google.startTick("load",true);try{}catch(u){}
|
4
|
+
var _gjwl=location;function _gjuc(){var e=_gjwl.href.indexOf("#");if(e>=0){var a=_gjwl.href.substring(e);if(a.indexOf("&q=")>0||a.indexOf("#q=")>=0){a=a.substring(1);if(a.indexOf("#")==-1){for(var c=0;c<a.length;){var d=c;if(a.charAt(d)=="&")++d;var b=a.indexOf("&",d);if(b==-1)b=a.length;var f=a.substring(d,b);if(f.indexOf("fp=")==0){a=a.substring(0,c)+a.substring(b,a.length);b=c}else if(f=="cad=h")return 0;c=b}_gjwl.href="/search?"+a+"&cad=h";return 1}}}return 0}function _gjp(){!(window._gjwl.hash&&
|
5
|
+
window._gjuc())&&setTimeout(_gjp,500)};
|
6
|
+
window._gjp && _gjp()</script><style>#gbar,#guser{font-size:13px;padding-top:1px !important;}#gbar{height:22px}#guser{padding-bottom:7px !important;text-align:right}.gbh,.gbd{border-top:1px solid #c9d7f1;font-size:1px}.gbh{height:0;position:absolute;top:24px;width:100%}@media all{.gb1{height:22px;margin-right:.5em;vertical-align:top}#gbar{float:left}}a.gb1,a.gb4{text-decoration:underline !important}a.gb1,a.gb4{color:#00c !important}</style><style id=gstyle>body{margin:0;overflow-y:scroll}#gog{padding:3px 8px 0}td{line-height:.8em}.gac_m td{line-height:17px}form{margin-bottom:20px}body,td,a,p,.h{font-family:arial,sans-serif}.h{color:#36c;font-size:20px}.q{color:#00c}.ts td{padding:0}.ts{border-collapse:collapse}em{font-weight:bold;font-style:normal}.lst{height:25px;width:496px}.gsfi,.lst{font:18px arial,sans-serif}.gsfs{font:17px arial,sans-serif}.ds{display:-moz-inline-box;display:inline-block;margin:3px 0 4px;margin-left:4px}input{font-family:inherit}a.gb1,a.gb2,a.gb3,a.gb4{color:#11c !important}body{background:#fff;color:black}a{color:#11c;text-decoration:none}a:hover,a:active{text-decoration:underline}.fl a{color:#36c}a:visited{color:#551a8b}a.gb1,a.gb4{text-decoration:underline}a.gb3:hover{text-decoration:none}#ghead a.gb2:hover{color:#fff!important}.sblc{padding-top:5px}.sblc a{display:block;margin:2px 0;margin-left:13px;font-size:11px;}.lsbb{background:#eee;border:solid 1px;border-color:#ccc #999 #999 #ccc;height:30px;display:block}.ftl,#fll a{display:inline-block;margin:0 12px}.lsb{background:url(/images/srpr/nav_logo80.png) 0 -258px repeat-x;border:none;color:#000;cursor:pointer;height:30px;margin:0;outline:0;font:15px arial,sans-serif;vertical-align:top}.lsb:active{background:#ccc}.lst:focus{outline:none}#addlang a{padding:0 3px}.gac_v div{display:none}.gac_v .gac_v2,.gac_bt{display:block!important}table.gssb_c{z-index:986 }.nbcl{background:url(/images/srpr/nav_logo80.png) no-repeat ;height:px;width:px}</style><script>window.rwt=function(a,f,g,l,m,h,c,n,i){try{if(a===window){a=window.event.srcElement;while(a){if(a.href)break;a=a.parentNode}}var b=encodeURIComponent||escape,d;d=a.getAttribute("href");if(c&&c.substring(0,6)!="&sig2=")c="&sig2="+c;var o=["/url?sa=t","","&cd=",b(m),i?"&authuser="+b(i):"",google.j&&google.j.pf?"&sqi=2":"","&ved=",b(n),"&url=",b(d).replace(/\+/g,"%2B"),"&ei=","caDoT43yLcrj0QHFrPmgCg",h?"&usg="+h:"",c].join("");a.href=o;a.onmousedown=""}catch(p){}return true};
|
7
|
+
</script></head><body bgcolor=#ffffff text=#000000 link=#0000cc vlink=#551a8b alink=#ff0000 onload="document.f&&document.f.q.focus();document.gbqf&&document.gbqf.q.focus();if(document.images)new Image().src='/images/srpr/nav_logo80.png'" ><textarea id=csi style=display:none></textarea><div id=mngb><div id=gbar><nobr><b class=gb1>Search</b> <a class=gb1 href="http://www.google.com/imghp?hl=en&tab=wi">Images</a> <a class=gb1 href="http://video.google.com/?hl=en&tab=wv">Videos</a> <a class=gb1 href="http://maps.google.com/maps?hl=en&tab=wl">Maps</a> <a class=gb1 href="http://news.google.com/nwshp?hl=en&tab=wn">News</a> <a class=gb1 href="http://www.google.com/shopping?hl=en&tab=wf">Shopping</a> <a class=gb1 href="https://mail.google.com/mail/?tab=wm">Gmail</a> <a class=gb1 style="text-decoration:none" href="http://www.google.com/intl/en/options/"><u>More</u> »</a></nobr></div><div id=guser width=100%><nobr><span id=gbn class=gbi></span><span id=gbf class=gbf></span><span id=gbe><a href="/url?sa=p&pref=ig&pval=3&q=http://www.google.com/ig%3Fgrep%3D%26hl%3Den%26source%3Diglk&usg=AFQjCNH79yl80yOtNV3l-pB6DxUyFBANTA" class=gb4>iGoogle</a> | </span><a href="http://www.google.com/history/optout?hl=en" class=gb4>Web History</a> | <a href="/preferences?hl=en" class=gb4>Settings</a> | <a target=_top id=gb_70 href="https://accounts.google.com/ServiceLogin?hl=en&continue=http://www.google.com/%3Fgrep%3D" class=gb4>Sign in</a></nobr></div><div class=gbh style=left:0></div><div class=gbh style=right:0></div></div><iframe name=wgjf style=display:none></iframe><center><br clear=all id=lgpd><div id=lga><img alt="Google" height=95 id=hplogo src="/intl/en_ALL/images/srpr/logo1w.png" width=275 style="padding:28px 0 14px" onload="window.lol&&lol()"><br><br></div><form action="/search" name=f><table cellpadding=0 cellspacing=0><tr valign=top><td width=25%> </td><td align=center nowrap><input type=hidden name=ie value="ISO-8859-1"><input name=hl type=hidden value=en><input name=source type=hidden value=hp><div class=ds style="height:32px;margin:4px 0"><input autocomplete=off maxlength=2048 name=q class="lst" title="Google Search" value="" size=57 style="color:#000;margin:0;padding:5px 8px 0 6px;vertical-align:top"></div><br style="line-height:0"><span class=ds ><span class=lsbb><input name=btnG type=submit value="Google Search" class=lsb></span></span><span class=ds><span class=lsbb><input name=btnI type=submit class=lsb value="I'm Feeling Lucky" onclick="if(this.form.q.value)this.checked=1;else top.location='/doodles/'"></span></span></td><td nowrap width=25% align=left class="fl sblc"><a href="/advanced_search?hl=en">Advanced search</a><a href="/language_tools?hl=en">Language tools</a></td></tr></table><input type=hidden id=gbv name=gbv value="1"></form><div style="font-size:83%;min-height:3.5em"><br></div><span id=footer><center id=fctr><div style="font-size:10pt"><div id=fll style="margin:19px auto;text-align:center"><a href="/intl/en/ads/">Advertising Programs</a><a href="/services/">Business Solutions</a><a href="https://plus.google.com/116899029375914044550" rel="publisher">+Google</a><a href="/intl/en/about.html">About Google</a></div></div><p style="color:#767676;font-size:8pt">© 2012 - <a href="/intl/en/policies/">Privacy & Terms</a></p></center></span> </center><div id=xjsd></div><div id=xjsi><script>if(google.y)google.y.first=[];google.dlj=function(b){window.setTimeout(function(){var a=document.createElement("script");a.src=b;document.getElementById("xjsd").appendChild(a)},0)};
|
8
|
+
(function(){
|
9
|
+
var c,d,e=false;function f(a){var b={_sn:a?"FAILURE":"FALLBACK",_pu:c,_fu:d},h=google.ml(new Error("pml"),false,b,true);google.log(0,"",h)}function g(){if(!google.pml)f(true)}function i(a){var b=document.createElement("script");b.src=a;document.getElementById("xjsd").appendChild(b)}function j(){if(!e&&!google.pml){e=true;f();i(d,g)}}google.dljp=
|
10
|
+
function(a,b){c=a;google.xjsu=a;d=b;if(!google.xjsi)window.setTimeout(function(){i(c,j)},0)};
|
11
|
+
})();
|
12
|
+
(function(){google.xjsol=function(a){if(google.sc&&(a=google.sc[a])){for(var b=0;b<a.cb.length;b++)a.cb[b]();a.cb=[];a.lc=!0}};google.xjsl=function(a,b){var c=google.sc[a];c&&(b&&(c.lc?b():c.cb.push(b)),!c.ls&&!c.lc&&(google.dlj(c.u),c.ls=!0))};google.register=google.register||function(a,b){google.y.first.push(function(){google.register(a,b)})};})();
|
13
|
+
google.y.first=[];if(!google.xjs){google.dstr=[];google.rein=[];window._=window._||{};window._._DumpException=function(e){throw e};if(google.timers&&google.timers.load.t){google.timers.load.t.xjsls=new Date().getTime();}google.xjsuo='/xjs/_/js/s/s,st,anim,bbd,sb_he,hv,pj,tbpr,tbui,spp,rsn,ob,mb,lc,du,ada,lu,pcc,csitl/rt\x3dj/ver\x3dcQPWT20rjmA.en_US./d\x3d1/rs\x3dAItRSTMrrebjXekqCRh-6t6eA1DHRj0V7g';if(google.xjsuop)google.xjsuo=google.xjsuo.replace(/xjs\/_\/js/,google.xjsuop);google.dljp(google.xjsuo,'/xjs/_/js/s/s,st,anim,bbd,sb_he,hv,pj,tbpr,tbui,spp,rsn,ob,mb,lc,du,ada,lu,pcc,csitl/rt\x3dj/ver\x3dVhqBgPa68yo.en_US./d\x3d1/rs\x3dAItRSTNVtd_7RGA-1diChwBGjIknyJlDUQ');google.xjs=1}google.pmc={14:{},263:{},60:{},81:{},10:{"client":"hp","dh":true,"ds":"","fl":true,"host":"google.com","jsonp":true,"msgs":{"lcky":"I\u0026#39;m Feeling Lucky","lml":"Learn more","psrc":"This search was removed from your \u003Ca href=\"/history\"\u003EWeb History\u003C/a\u003E","psrl":"Remove","srch":"Google Search"},"ovr":{"l":1,"ms":1,"p":1},"pq":"","rgen":true,"scd":10,"sce":5,"stok":"GeMuz8exdG27fwjKX7r7Pm-tkTc"},152:{},213:{"pberr":"\u003Cfont color=red\u003EError:\u003C/font\u003E The server could not complete your request. Try again in 30 seconds."},114:{"rvu_report_msg":"Report","rvu_reported_msg":"Reported"},78:{},25:{"g":8,"k":false,"m":{"app":true,"bks":true,"blg":true,"dsc":true,"evn":true,"fin":true,"flm":true,"frm":true,"isch":true,"klg":true,"mbl":true,"nws":true,"plcs":true,"ppl":true,"prc":true,"pts":true,"rcp":true,"shop":true,"vid":true},"t":null},216:{},105:{},22:{"db":false,"m_errors":{"32":"Sorry, no more results to show.","default":"\u003Cfont color=red\u003EError:\u003C/font\u003E The server could not complete your request. Try again in 30 seconds."},"m_tip":"Click for more information","nlpm":"-153px -84px","nlpp":"-153px -70px","utp":false},77:{},254:{},146:{},144:{},121:{},63:{"cnfrm":"Reported","prmpt":"Report"},84:{"tt_kft":true},97:{},24:{},38:{}};google.y.first.push(function(){if(google.med){google.med('init');google.initHistory();google.med('history');}google.History&&google.History.initialize('/?grep\x3d')});if(google.j&&google.j.en&&google.j.xi){window.setTimeout(google.j.xi,0);}</script></div><script>(function(){
|
14
|
+
var b,d,e,f;function g(a,c){if(a.removeEventListener){a.removeEventListener("load",c,false);a.removeEventListener("error",c,false)}else{a.detachEvent("onload",c);a.detachEvent("onerror",c)}}function h(a){f=(new Date).getTime();++d;a=a||window.event;var c=a.target||a.srcElement;g(c,h)}var i=document.getElementsByTagName("img");b=i.length;d=0;for(var j=0,k;j<b;++j){k=i[j];if(k.complete||typeof k.src!="string"||!k.src)++d;else if(k.addEventListener){k.addEventListener("load",h,false);k.addEventListener("error",
|
15
|
+
h,false)}else{k.attachEvent("onload",h);k.attachEvent("onerror",h)}}e=b-d;function l(){if(!google.timers.load.t)return;google.timers.load.t.ol=(new Date).getTime();google.timers.load.t.iml=f;google.kCSI.imc=d;google.kCSI.imn=b;google.kCSI.imp=e;if(google.stt!==undefined)google.kCSI.stt=google.stt;google.timers.load.t.xjs&&google.report&&google.report(google.timers.load,google.kCSI)}if(window.addEventListener)window.addEventListener("load",
|
16
|
+
l,false);else if(window.attachEvent)window.attachEvent("onload",l);google.timers.load.t.prt=(f=(new Date).getTime());
|
17
|
+
})();
|
18
|
+
</script>
|
data/lib/LitleOnlineRequest.rb
CHANGED
@@ -77,8 +77,8 @@ module LitleOnline
|
|
77
77
|
request.authorization = authorization
|
78
78
|
|
79
79
|
authentication = Authentication.new
|
80
|
-
authentication.user =
|
81
|
-
authentication.password =
|
80
|
+
authentication.user = get_user(hash_in)
|
81
|
+
authentication.password = get_password(hash_in)
|
82
82
|
request.authentication = authentication
|
83
83
|
|
84
84
|
request.merchantId = get_merchant_id(hash_in)
|
@@ -133,8 +133,8 @@ module LitleOnline
|
|
133
133
|
request.sale = sale
|
134
134
|
|
135
135
|
authentication = Authentication.new
|
136
|
-
authentication.user =
|
137
|
-
authentication.password =
|
136
|
+
authentication.user = get_user(hash_in)
|
137
|
+
authentication.password = get_password(hash_in)
|
138
138
|
request.authentication = authentication
|
139
139
|
|
140
140
|
request.merchantId = get_merchant_id(hash_in)
|
@@ -165,8 +165,8 @@ module LitleOnline
|
|
165
165
|
request.authReversal = auth_reversal
|
166
166
|
|
167
167
|
authentication = Authentication.new
|
168
|
-
authentication.user =
|
169
|
-
authentication.password =
|
168
|
+
authentication.user = get_user(hash_in)
|
169
|
+
authentication.password = get_password(hash_in)
|
170
170
|
request.authentication = authentication
|
171
171
|
|
172
172
|
request.merchantId = get_merchant_id(hash_in)
|
@@ -211,8 +211,8 @@ module LitleOnline
|
|
211
211
|
request.credit = credit
|
212
212
|
|
213
213
|
authentication = Authentication.new
|
214
|
-
authentication.user =
|
215
|
-
authentication.password =
|
214
|
+
authentication.user = get_user(hash_in)
|
215
|
+
authentication.password = get_password(hash_in)
|
216
216
|
request.authentication = authentication
|
217
217
|
|
218
218
|
request.merchantId = get_merchant_id(hash_in)
|
@@ -243,8 +243,8 @@ module LitleOnline
|
|
243
243
|
request.registerTokenRequest = token_request
|
244
244
|
|
245
245
|
authentication = Authentication.new
|
246
|
-
authentication.user =
|
247
|
-
authentication.password =
|
246
|
+
authentication.user = get_user(hash_in)
|
247
|
+
authentication.password = get_password(hash_in)
|
248
248
|
request.authentication = authentication
|
249
249
|
|
250
250
|
request.merchantId = get_merchant_id(hash_in)
|
@@ -284,8 +284,8 @@ module LitleOnline
|
|
284
284
|
request.forceCapture = force_capture
|
285
285
|
|
286
286
|
authentication = Authentication.new
|
287
|
-
authentication.user =
|
288
|
-
authentication.password =
|
287
|
+
authentication.user = get_user(hash_in)
|
288
|
+
authentication.password = get_password(hash_in)
|
289
289
|
request.authentication = authentication
|
290
290
|
|
291
291
|
request.merchantId = get_merchant_id(hash_in)
|
@@ -319,8 +319,8 @@ module LitleOnline
|
|
319
319
|
request.captureTxn = capture
|
320
320
|
|
321
321
|
authentication = Authentication.new
|
322
|
-
authentication.user =
|
323
|
-
authentication.password =
|
322
|
+
authentication.user = get_user(hash_in)
|
323
|
+
authentication.password = get_password(hash_in)
|
324
324
|
request.authentication = authentication
|
325
325
|
|
326
326
|
request.merchantId = get_merchant_id(hash_in)
|
@@ -363,8 +363,8 @@ module LitleOnline
|
|
363
363
|
request.captureGivenAuth = capture_given_auth
|
364
364
|
|
365
365
|
authentication = Authentication.new
|
366
|
-
authentication.user =
|
367
|
-
authentication.password =
|
366
|
+
authentication.user = get_user(hash_in)
|
367
|
+
authentication.password = get_password(hash_in)
|
368
368
|
request.authentication = authentication
|
369
369
|
|
370
370
|
request.merchantId = get_merchant_id(hash_in)
|
@@ -394,8 +394,8 @@ module LitleOnline
|
|
394
394
|
request.echeckRedeposit = echeck_redeposit
|
395
395
|
|
396
396
|
authentication = Authentication.new
|
397
|
-
authentication.user =
|
398
|
-
authentication.password =
|
397
|
+
authentication.user = get_user(hash_in)
|
398
|
+
authentication.password = get_password(hash_in)
|
399
399
|
request.authentication = authentication
|
400
400
|
|
401
401
|
request.merchantId = get_merchant_id(hash_in)
|
@@ -432,8 +432,8 @@ module LitleOnline
|
|
432
432
|
request.echeckSale = echeck_sale
|
433
433
|
|
434
434
|
authentication = Authentication.new
|
435
|
-
authentication.user =
|
436
|
-
authentication.password =
|
435
|
+
authentication.user = get_user(hash_in)
|
436
|
+
authentication.password = get_password(hash_in)
|
437
437
|
request.authentication = authentication
|
438
438
|
|
439
439
|
request.merchantId = get_merchant_id(hash_in)
|
@@ -468,8 +468,8 @@ module LitleOnline
|
|
468
468
|
request.echeckCredit = echeck_credit
|
469
469
|
|
470
470
|
authentication = Authentication.new
|
471
|
-
authentication.user =
|
472
|
-
authentication.password =
|
471
|
+
authentication.user = get_user(hash_in)
|
472
|
+
authentication.password = get_password(hash_in)
|
473
473
|
request.authentication = authentication
|
474
474
|
|
475
475
|
request.merchantId = get_merchant_id(hash_in)
|
@@ -510,8 +510,8 @@ module LitleOnline
|
|
510
510
|
request.echeckVerification = echeck_verification
|
511
511
|
|
512
512
|
authentication = Authentication.new
|
513
|
-
authentication.user =
|
514
|
-
authentication.password =
|
513
|
+
authentication.user = get_user(hash_in)
|
514
|
+
authentication.password = get_password(hash_in)
|
515
515
|
request.authentication = authentication
|
516
516
|
|
517
517
|
request.merchantId = get_merchant_id(hash_in)
|
@@ -540,8 +540,8 @@ module LitleOnline
|
|
540
540
|
request.void = void
|
541
541
|
|
542
542
|
authentication = Authentication.new
|
543
|
-
authentication.user =
|
544
|
-
authentication.password =
|
543
|
+
authentication.user = get_user(hash_in)
|
544
|
+
authentication.password = get_password(hash_in)
|
545
545
|
request.authentication = authentication
|
546
546
|
|
547
547
|
request.merchantId = get_merchant_id(hash_in)
|
@@ -569,8 +569,8 @@ module LitleOnline
|
|
569
569
|
request.echeckVoid = void
|
570
570
|
|
571
571
|
authentication = Authentication.new
|
572
|
-
authentication.user =
|
573
|
-
authentication.password =
|
572
|
+
authentication.user = get_user(hash_in)
|
573
|
+
authentication.password = get_password(hash_in)
|
574
574
|
request.authentication = authentication
|
575
575
|
|
576
576
|
request.merchantId = get_merchant_id(hash_in)
|
@@ -603,7 +603,7 @@ module LitleOnline
|
|
603
603
|
|
604
604
|
def get_merchant_sdk(hash_in)
|
605
605
|
if(!hash_in['merchantSdk'])
|
606
|
-
return 'Ruby;8.13.
|
606
|
+
return 'Ruby;8.13.2'
|
607
607
|
else
|
608
608
|
return hash_in['merchantSdk']
|
609
609
|
end
|
@@ -616,5 +616,21 @@ module LitleOnline
|
|
616
616
|
return hash_in['reportGroup']
|
617
617
|
end
|
618
618
|
end
|
619
|
+
|
620
|
+
def get_user(hash_in)
|
621
|
+
if (hash_in['user'] == nil)
|
622
|
+
return @config_hash['user']
|
623
|
+
else
|
624
|
+
return hash_in['user']
|
625
|
+
end
|
626
|
+
end
|
627
|
+
|
628
|
+
def get_password(hash_in)
|
629
|
+
if (hash_in['password'] == nil)
|
630
|
+
return @config_hash['password']
|
631
|
+
else
|
632
|
+
return hash_in['password']
|
633
|
+
end
|
634
|
+
end
|
619
635
|
end
|
620
636
|
end
|
data/lib/XMLFields.rb
CHANGED
@@ -56,6 +56,84 @@ module LitleOnline
|
|
56
56
|
text_node :password, "password"
|
57
57
|
end
|
58
58
|
|
59
|
+
class SchemaValidation
|
60
|
+
|
61
|
+
def self.validate_required(value, required, class_name, field_name)
|
62
|
+
if(required)
|
63
|
+
if(value.nil?)
|
64
|
+
raise "If #{class_name} is specified, it must have a #{field_name}"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.validate_length(value, required, min, max, class_name, field_name)
|
70
|
+
validate_required(value, required, class_name, field_name)
|
71
|
+
if(value.nil?)
|
72
|
+
return
|
73
|
+
end
|
74
|
+
if(value.length < min || value.length > max)
|
75
|
+
raise "If " + class_name + " " + field_name + " is specified, it must be between " + min.to_s + " and " + max.to_s + " characters long"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def self.validate_size(value, required, min, max, class_name, field_name)
|
80
|
+
validate_required(value, required, class_name, field_name)
|
81
|
+
if(value.nil?)
|
82
|
+
return
|
83
|
+
end
|
84
|
+
if(value.to_i < min || value.to_i > max || !(/\A\-?\d+\Z/ =~ value))
|
85
|
+
raise "If " + class_name + " " + field_name + " is specified, it must be between " + min.to_s + " and " + max.to_s
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.validate_country(value, class_name, field_name)
|
90
|
+
if(value.nil?)
|
91
|
+
return
|
92
|
+
end
|
93
|
+
list = ["USA","AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","TL","EC","EG","SV","GQ","ER","EE","ET","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","KN","LC","MF","VC","WS","SM","ST","SA","SN","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","ES","LK","SH","PM","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UM","UY","UZ","VU","VA","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","RS","ME"]
|
94
|
+
if(!list.include? value)
|
95
|
+
raise "If " + class_name + " " + field_name + " is specified, it must be valid. You specified " + value
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
def self.validate_regex(value, required, regex, class_name, field_name)
|
100
|
+
validate_required(value, required, class_name, field_name)
|
101
|
+
if(value.nil?)
|
102
|
+
return
|
103
|
+
end
|
104
|
+
if(!(regex =~ value))
|
105
|
+
raise "If #{class_name} #{field_name} is specified, it must match the regular expression #{regex.inspect}"
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def self.validate_enum(value, required, list, class_name, field_name)
|
110
|
+
validate_required(value, required, class_name, field_name)
|
111
|
+
if(value.nil?)
|
112
|
+
return
|
113
|
+
end
|
114
|
+
if(!list.include?(value))
|
115
|
+
raise "If #{class_name} #{field_name} is specified, it must be in #{list.to_s}"
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def self.validate_long(value, required, class_name, field_name)
|
120
|
+
validate_size(value, required, -9223372036854775808, 9223372036854775807, class_name, field_name)
|
121
|
+
end
|
122
|
+
|
123
|
+
def self.validate_currency(value, required, class_name, field_name)
|
124
|
+
validate_enum(value, required, ['AUD','CAD','CHF','DKK','EUR','GBP','HKD','JPY','NOK','NZD','SEK','SGD','USD'], class_name, field_name)
|
125
|
+
end
|
126
|
+
|
127
|
+
def self.validate_boolean(value, required, class_name, field_name)
|
128
|
+
validate_enum(value, required, ['true','false','1','0'], class_name, field_name)
|
129
|
+
end
|
130
|
+
|
131
|
+
def self.validate_date(value, required, class_name, field_name)
|
132
|
+
validate_regex(value, required, /\A\d{4}-\d{2}-\d{2}\Z/, class_name, field_name)
|
133
|
+
end
|
134
|
+
|
135
|
+
end
|
136
|
+
|
59
137
|
class Contact
|
60
138
|
include XML::Mapping
|
61
139
|
text_node :name, "name", :default_value=>nil
|
@@ -90,6 +168,21 @@ module LitleOnline
|
|
90
168
|
this.country = base['country']
|
91
169
|
this.email = base['email']
|
92
170
|
this.phone = base['phone']
|
171
|
+
SchemaValidation.validate_length(this.name, false, 1, 100, name, "name")
|
172
|
+
SchemaValidation.validate_length(this.firstName, false, 1, 25, name, "firstName")
|
173
|
+
SchemaValidation.validate_length(this.middleInitial, false, 1, 1, name, "middleInitial")
|
174
|
+
SchemaValidation.validate_length(this.lastName, false, 1, 25, name, "lastName")
|
175
|
+
SchemaValidation.validate_length(this.companyName, false, 1, 40, name, "companyName")
|
176
|
+
SchemaValidation.validate_length(this.addressLine1, false, 1, 35, name, "addressLine1")
|
177
|
+
SchemaValidation.validate_length(this.addressLine2, false, 1, 35, name, "addressLine2")
|
178
|
+
SchemaValidation.validate_length(this.addressLine3, false, 1, 35, name, "addressLine3")
|
179
|
+
SchemaValidation.validate_length(this.city, false, 1, 35, name, "city")
|
180
|
+
SchemaValidation.validate_length(this.state, false, 1, 30, name, "state")
|
181
|
+
SchemaValidation.validate_length(this.zip, false, 1, 20, name, "zip")
|
182
|
+
SchemaValidation.validate_length(this.country, false, 1, 3, name, "country")
|
183
|
+
SchemaValidation.validate_country(this.country, name, "country")
|
184
|
+
SchemaValidation.validate_length(this.email, false, 1, 100, name, "email")
|
185
|
+
SchemaValidation.validate_length(this.phone, false, 1, 20, name, "phone")
|
93
186
|
this
|
94
187
|
else
|
95
188
|
nil
|
@@ -107,6 +200,7 @@ module LitleOnline
|
|
107
200
|
text_node :incomeCurrency, "incomeCurrency", :default_value=>nil
|
108
201
|
text_node :customerCheckingAccount, "customerCheckingAccount", :default_value=>nil
|
109
202
|
text_node :customerSavingAccount, "customerSavingAccount", :default_value=>nil
|
203
|
+
text_node :employerName, "employerName", :default_value=>nil
|
110
204
|
text_node :customerWorkTelephone, "customerWorkTelephone", :default_value=>nil
|
111
205
|
text_node :residenceStatus, "residenceStatus", :default_value=>nil
|
112
206
|
text_node :yearsAtResidence, "yearsAtResidence", :default_value=>nil
|
@@ -123,10 +217,24 @@ module LitleOnline
|
|
123
217
|
this.incomeCurrency = base['incomeCurrency']
|
124
218
|
this.customerCheckingAccount = base['customerCheckingAccount']
|
125
219
|
this.customerSavingAccount = base['customerSavingAccount']
|
220
|
+
this.employerName = base['employerName']
|
126
221
|
this.customerWorkTelephone = base['customerWorkTelephone']
|
127
222
|
this.residenceStatus = base['residenceStatus']
|
128
223
|
this.yearsAtResidence = base['yearsAtResidence']
|
129
224
|
this.yearsAtEmployer = base['yearsAtEmployer']
|
225
|
+
SchemaValidation.validate_regex(this.ssn, false, /\A\d{9}\Z/, name, 'ssn')
|
226
|
+
SchemaValidation.validate_date(this.dob, false, name, 'dob')
|
227
|
+
SchemaValidation.validate_regex(this.customerRegistrationDate, false, /\A\d{4}-\d{2}-\d{2}/, name, 'customerRegistrationDate')
|
228
|
+
SchemaValidation.validate_enum(this.customerType, false, ['New','Existing'], name, 'customerType')
|
229
|
+
SchemaValidation.validate_long(this.incomeAmount, false, name, 'incomeAmount')
|
230
|
+
SchemaValidation.validate_currency(this.incomeCurrency, false, name, 'incomeCurrency')
|
231
|
+
SchemaValidation.validate_boolean(this.customerCheckingAccount, false, name, 'customerCheckingAccount')
|
232
|
+
SchemaValidation.validate_boolean(this.customerSavingAccount, false, name, 'customerSavingAccount')
|
233
|
+
SchemaValidation.validate_length(this.employerName, false, 1, 20, name, "employerName")
|
234
|
+
SchemaValidation.validate_length(this.customerWorkTelephone, false, 1, 20, name, "customerWorkTelephone")
|
235
|
+
SchemaValidation.validate_enum(this.residenceStatus, false, ['Own','Rent','Other'], name, 'residenceStatus')
|
236
|
+
SchemaValidation.validate_size(this.yearsAtResidence, false, 0, 99, name, 'yearsAtResidence')
|
237
|
+
SchemaValidation.validate_size(this.yearsAtEmployer, false, 0, 99, name, 'yearsAtEmployer')
|
130
238
|
this
|
131
239
|
else
|
132
240
|
nil
|
@@ -137,10 +245,12 @@ module LitleOnline
|
|
137
245
|
class BillMeLaterRequest
|
138
246
|
include XML::Mapping
|
139
247
|
text_node :bmlMerchantId, "bmlMerchantId", :default_value=>nil
|
248
|
+
text_node :bmlProductType, "bmlProductType", :default_value=>nil
|
140
249
|
text_node :termsAndConditions, "termsAndConditions", :default_value=>nil
|
141
250
|
text_node :preapprovalNumber, "preapprovalNumber", :default_value=>nil
|
142
251
|
text_node :merchantPromotionalCode, "merchantPromotionalCode", :default_value=>nil
|
143
252
|
text_node :customerPasswordChanged, "customerPasswordChanged", :default_value=>nil
|
253
|
+
text_node :customerBillingAddressChanged, "customerBillingAddressChanged", :default_value=>nil
|
144
254
|
text_node :customerEmailChanged, "customerEmailChanged", :default_value=>nil
|
145
255
|
text_node :customerPhoneChanged, "customerPhoneChanged", :default_value=>nil
|
146
256
|
text_node :secretQuestionCode, "secretQuestionCode", :default_value=>nil
|
@@ -154,9 +264,12 @@ module LitleOnline
|
|
154
264
|
if(base)
|
155
265
|
this = BillMeLaterRequest.new
|
156
266
|
this.bmlMerchantId = base['bmlMerchantId']
|
267
|
+
this.bmlProductType = base['bmlProductType']
|
157
268
|
this.termsAndConditions = base['termsAndConditions']
|
269
|
+
this.preapprovalNumber = base['preapprovalNumber']
|
158
270
|
this.merchantPromotionalCode = base['merchantPromotionalCode']
|
159
271
|
this.customerPasswordChanged = base['customerPasswordChanged']
|
272
|
+
this.customerBillingAddressChanged = base['customerBillingAddressChanged']
|
160
273
|
this.customerEmailChanged = base['customerEmailChanged']
|
161
274
|
this.customerPhoneChanged = base['customerPhoneChanged']
|
162
275
|
this.secretQuestionCode = base['secretQuestionCode']
|
@@ -165,6 +278,20 @@ module LitleOnline
|
|
165
278
|
this.virtualAuthenticationKeyData = base['virtualAuthenticationKeyData']
|
166
279
|
this.itemCategoryCode = base['itemCategoryCode']
|
167
280
|
this.authorizationSourcePlatform = base['authorizationSourcePlatform']
|
281
|
+
SchemaValidation.validate_long(this.bmlMerchantId, false, name, 'bmlMerchantId')
|
282
|
+
SchemaValidation.validate_length(this.bmlProductType, false, 1, 2, name, "bmlProductType")
|
283
|
+
SchemaValidation.validate_size(this.termsAndConditions, false, -99999, 99999, name, 'termsAndConditions')
|
284
|
+
SchemaValidation.validate_length(this.preapprovalNumber, false, 13, 25, name, "preapprovalNumber")
|
285
|
+
SchemaValidation.validate_size(this.merchantPromotionalCode, false, -9999, 9999, name, 'merchantPromotionalCode')
|
286
|
+
SchemaValidation.validate_boolean(this.customerPasswordChanged, false, name, 'customerPasswordChanged')
|
287
|
+
SchemaValidation.validate_boolean(this.customerBillingAddressChanged, false, name, 'customerBillingAddressChanged')
|
288
|
+
SchemaValidation.validate_boolean(this.customerEmailChanged, false, name, 'customerEmailChanged')
|
289
|
+
SchemaValidation.validate_boolean(this.customerPhoneChanged, false, name, 'customerPhoneChanged')
|
290
|
+
SchemaValidation.validate_length(this.secretQuestionCode, false, 1, 2, name, "secretQuestionCode")
|
291
|
+
SchemaValidation.validate_length(this.secretQuestionAnswer, false, 1, 25, name, "secretQuestionAnswer")
|
292
|
+
SchemaValidation.validate_length(this.virtualAuthenticationKeyPresenceIndicator, false, 1, 1, name, "virtualAuthenticationKeyPresenceIndicator")
|
293
|
+
SchemaValidation.validate_length(this.virtualAuthenticationKeyData, false, 1, 4, name, "virtualAuthenticationKeyData")
|
294
|
+
SchemaValidation.validate_size(this.itemCategoryCode, false, -9999, 9999, name, 'itemCategoryCode')
|
168
295
|
this
|
169
296
|
else
|
170
297
|
nil
|
@@ -186,6 +313,10 @@ module LitleOnline
|
|
186
313
|
this.authenticationTransactionId = base['authenticationTransactionId']
|
187
314
|
this.customerIpAddress = base['customerIpAddress']
|
188
315
|
this.authenticatedByMerchant = base['authenticatedByMerchant']
|
316
|
+
SchemaValidation.validate_length(this.authenticationValue, false, 1, 32, name, "authenticationValue")
|
317
|
+
SchemaValidation.validate_length(this.authenticationTransactionId, false, 1, 28, name, "authenticationTransactionId")
|
318
|
+
SchemaValidation.validate_regex(this.customerIpAddress, false, /\A(\d{1,3}.){3}\d{1,3}\Z/, name, 'customerIpAddress')
|
319
|
+
SchemaValidation.validate_boolean(this.authenticatedByMerchant, false, name, 'authenticatedByMerchant')
|
189
320
|
this
|
190
321
|
else
|
191
322
|
nil
|
@@ -207,6 +338,9 @@ module LitleOnline
|
|
207
338
|
this.cardValidationResult = base['cardValidationResult']
|
208
339
|
this.authenticationResult = base['authenticationResult']
|
209
340
|
this.advancedAVSResult = base['advancedAVSResult']
|
341
|
+
SchemaValidation.validate_length(this.avsResult, false, 1, 2, name, "avsResult")
|
342
|
+
SchemaValidation.validate_length(this.authenticationResult, false, 1, 1, name, "authenticationResult")
|
343
|
+
SchemaValidation.validate_length(this.advancedAVSResult, false, 1, 3, name, "advancedAVSResult")
|
210
344
|
this
|
211
345
|
else
|
212
346
|
nil
|
@@ -228,6 +362,9 @@ module LitleOnline
|
|
228
362
|
this.authCode = base['authCode']
|
229
363
|
this.fraudResult = FraudResult.from_hash(base)
|
230
364
|
this.authAmount = base['authAmount']
|
365
|
+
SchemaValidation.validate_date(this.authDate, false, name, 'authDate')
|
366
|
+
SchemaValidation.validate_length(this.authCode, false, 1, 6, name, "authCode")
|
367
|
+
SchemaValidation.validate_size(this.authAmount, false, -999999999999, 999999999999, name, 'authAmount')
|
231
368
|
this
|
232
369
|
else
|
233
370
|
nil
|
@@ -251,6 +388,11 @@ module LitleOnline
|
|
251
388
|
this.visionAmount = base['visionAmount']
|
252
389
|
this.clinicOtherAmount = base['clinicOtherAmount']
|
253
390
|
this.dentalAmount = base['dentalAmount']
|
391
|
+
SchemaValidation.validate_size(this.totalHealthcareAmount, true, -999999999999, 999999999999, name, 'totalHealthcareAmount')
|
392
|
+
SchemaValidation.validate_size(this.rxAmount, false, -999999999999, 999999999999, name, 'RxAmount')
|
393
|
+
SchemaValidation.validate_size(this.visionAmount, false, -999999999999, 999999999999, name, 'visionAmount')
|
394
|
+
SchemaValidation.validate_size(this.clinicOtherAmount, false, -999999999999, 999999999999, name, 'clinicOtherAmount')
|
395
|
+
SchemaValidation.validate_size(this.dentalAmount, false, -999999999999, 999999999999, name, 'dentalAmount')
|
254
396
|
this
|
255
397
|
else
|
256
398
|
nil
|
@@ -268,6 +410,7 @@ module LitleOnline
|
|
268
410
|
this = HealthcareIIAS.new
|
269
411
|
this.healthcareAmounts = HealthcareAmounts.from_hash(base)
|
270
412
|
this.iiasFlag = base['IIASFlag']
|
413
|
+
SchemaValidation.validate_enum(this.iiasFlag, true, ['Y'], name, 'IIASFlag')
|
271
414
|
this
|
272
415
|
else
|
273
416
|
nil
|
@@ -287,6 +430,9 @@ module LitleOnline
|
|
287
430
|
this.capability = base['capability']
|
288
431
|
this.entryMode = base['entryMode']
|
289
432
|
this.cardholderId = base['cardholderId']
|
433
|
+
SchemaValidation.validate_enum(this.capability, true, ['notused','magstripe','keyedonly'], name, 'capability')
|
434
|
+
SchemaValidation.validate_enum(this.entryMode, true, ['notused','keyed','track1','track2','completeread'], name, 'entryMode')
|
435
|
+
SchemaValidation.validate_enum(this.cardholderId, true, ['signature','pin','nopin','directmarket'], name, 'cardholderId')
|
290
436
|
this
|
291
437
|
else
|
292
438
|
nil
|
@@ -310,6 +456,11 @@ module LitleOnline
|
|
310
456
|
this.taxRate = base['taxRate']
|
311
457
|
this.taxTypeIdentifier = base['taxTypeIdentifier']
|
312
458
|
this.cardAcceptorTaxId = base['cardAcceptorTaxId']
|
459
|
+
SchemaValidation.validate_boolean(this.taxIncludedInTotal, false, name, 'taxIncludedInTotal')
|
460
|
+
SchemaValidation.validate_size(this.taxAmount, true, -999999999999, 999999999999, name, 'taxAmount')
|
461
|
+
SchemaValidation.validate_regex(this.taxRate, false, /\A(\+|\-)?\d*\.?\d*\Z/, name, 'taxRate')
|
462
|
+
SchemaValidation.validate_enum(this.taxTypeIdentifier, false, ['00','01','02','03','04','05','06','10','11','12','13','14','20','21','22'], name, 'taxTypeIdentifier')
|
463
|
+
SchemaValidation.validate_length(this.cardAcceptorTaxId, false, 1, 20, name, 'cardAcceptorTaxId')
|
313
464
|
this
|
314
465
|
else
|
315
466
|
nil
|
@@ -349,6 +500,17 @@ module LitleOnline
|
|
349
500
|
if(base['detailTax'])
|
350
501
|
base['detailTax'].each_index {|index| this.detailTax << DetailTax.from_hash(base,index)}
|
351
502
|
end
|
503
|
+
SchemaValidation.validate_size(this.itemSequenceNumber, false, 1, 99, name, 'itemSequenceNumber')
|
504
|
+
SchemaValidation.validate_length(this.itemDescription, true, 1, 26, name, 'itemDescription')
|
505
|
+
SchemaValidation.validate_length(this.productCode, false, 1, 12, name, 'productCode')
|
506
|
+
SchemaValidation.validate_regex(this.quantity, false, /\A(\+|\-)?\d*\.?\d*\Z/, name, 'quantity')
|
507
|
+
SchemaValidation.validate_length(this.unitOfMeasure, false, 1, 12, name, 'unitOfMeasure')
|
508
|
+
SchemaValidation.validate_size(this.taxAmount, false, -999999999999, 999999999999, name, 'taxAmount')
|
509
|
+
SchemaValidation.validate_size(this.lineItemTotal, false, -999999999999, 999999999999, name, 'lineItemTotal')
|
510
|
+
SchemaValidation.validate_size(this.lineItemTotalWithTax, false, -999999999999, 999999999999, name, 'lineItemTotalWithTax')
|
511
|
+
SchemaValidation.validate_size(this.itemDiscountAmount, false, -999999999999, 999999999999, name, 'itemDiscountAmount')
|
512
|
+
SchemaValidation.validate_length(this.commodityCode, false, 1, 12, name, 'commodityCode')
|
513
|
+
SchemaValidation.validate_regex(this.unitCost, false, /\A(\+|\-)?\d*\.?\d*\Z/, name, 'unitCost')
|
352
514
|
this
|
353
515
|
else
|
354
516
|
nil
|
@@ -394,6 +556,18 @@ module LitleOnline
|
|
394
556
|
if(base['lineItemData'])
|
395
557
|
base['lineItemData'].each_index {|index| this.lineItemData << LineItemData.from_hash(base,index)}
|
396
558
|
end
|
559
|
+
SchemaValidation.validate_length(this.customerReference, false, 1, 17, name, 'customerReference')
|
560
|
+
SchemaValidation.validate_size(this.salesTax, false, -999999999999, 999999999999, name, 'salesTax')
|
561
|
+
SchemaValidation.validate_enum(this.deliveryType, false, ['CNC','DIG','PHY','SVC','TBD'], name, 'deliveryType')
|
562
|
+
SchemaValidation.validate_boolean(this.taxExempt, false, name, 'taxExempt')
|
563
|
+
SchemaValidation.validate_size(this.discountAmount, false, -999999999999, 999999999999, name, 'discountAmount')
|
564
|
+
SchemaValidation.validate_size(this.shippingAmount, false, -999999999999, 999999999999, name, 'shippingAmount')
|
565
|
+
SchemaValidation.validate_size(this.dutyAmount, false, -999999999999, 999999999999, name, 'dutyAmount')
|
566
|
+
SchemaValidation.validate_length(this.shipFromPostalCode, false, 1, 20, name, 'shipFromPostalCode')
|
567
|
+
SchemaValidation.validate_length(this.destinationPostalCode, false, 1, 20, name, 'destinationPostalCode')
|
568
|
+
SchemaValidation.validate_country(this.destinationCountryCode, name, 'destinationCountryCode')
|
569
|
+
SchemaValidation.validate_length(this.invoiceReferenceNumber, false, 1, 15, name, 'invoiceReferenceNumber')
|
570
|
+
SchemaValidation.validate_date(this.orderDate, false, name, 'orderDate')
|
397
571
|
this
|
398
572
|
else
|
399
573
|
nil
|
@@ -411,6 +585,8 @@ module LitleOnline
|
|
411
585
|
this = AmexAggregatorData.new
|
412
586
|
this.sellerId = base['sellerId']
|
413
587
|
this.sellerMerchantCategoryCode = base['sellerMerchantCategoryCode']
|
588
|
+
SchemaValidation.validate_length(this.sellerId, false, 1, 16, name, 'sellerId')
|
589
|
+
SchemaValidation.validate_length(this.sellerMerchantCategoryCode, false, 1, 4, name, 'sellerMerchantCategoryCode')
|
414
590
|
this
|
415
591
|
else
|
416
592
|
nil
|
@@ -435,6 +611,11 @@ module LitleOnline
|
|
435
611
|
this.number = base['number']
|
436
612
|
this.expDate = base['expDate']
|
437
613
|
this.cardValidationNum = base['cardValidationNum']
|
614
|
+
SchemaValidation.validate_enum(this.mop, false, ['','MC','VI','AX','DC','DI','PP','JC','BL','EC'], name, 'type')
|
615
|
+
SchemaValidation.validate_length(this.track, false, 1, 256, name, 'track')
|
616
|
+
SchemaValidation.validate_length(this.number, false, 13, 25, name, 'number')
|
617
|
+
SchemaValidation.validate_length(this.expDate, false, 4, 4, name, 'expDate')
|
618
|
+
SchemaValidation.validate_length(this.cardValidationNum, false, 1, 4, name, 'cardValidationNum')
|
438
619
|
this
|
439
620
|
else
|
440
621
|
nil
|
@@ -456,6 +637,10 @@ module LitleOnline
|
|
456
637
|
this.expDate = base['expDate']
|
457
638
|
this.cardValidationNum = base['cardValidationNum']
|
458
639
|
this.mop = base['type']
|
640
|
+
SchemaValidation.validate_length(this.litleToken, true, 13, 25, name, 'litleToken')
|
641
|
+
SchemaValidation.validate_length(this.expDate, false, 4, 4, name, 'expDate')
|
642
|
+
SchemaValidation.validate_length(this.cardValidationNum, false, 1, 4, name, 'cardValidationNum')
|
643
|
+
SchemaValidation.validate_enum(this.mop, false, ['','MC','VI','AX','DC','DI','PP','JC','BL','EC'], name, 'type')
|
459
644
|
this
|
460
645
|
else
|
461
646
|
nil
|
@@ -477,6 +662,10 @@ module LitleOnline
|
|
477
662
|
this.expDate = base['expDate']
|
478
663
|
this.cardValidationNum = base['cardValidationNum']
|
479
664
|
this.mop = base['type']
|
665
|
+
SchemaValidation.validate_length(this.paypageRegistrationId, true, 1, 512, name, 'paypageRegistrationId')
|
666
|
+
SchemaValidation.validate_length(this.expDate, false, 4, 4, name, 'expDate')
|
667
|
+
SchemaValidation.validate_length(this.cardValidationNum, false, 1, 4, name, 'cardValidationNum')
|
668
|
+
SchemaValidation.validate_enum(this.mop, false, ['','MC','VI','AX','DC','DI','PP','JC','BL','EC'], name, 'type')
|
480
669
|
this
|
481
670
|
else
|
482
671
|
nil
|
@@ -496,6 +685,8 @@ module LitleOnline
|
|
496
685
|
this.payerId = base['payerId']
|
497
686
|
this.token = base['token']
|
498
687
|
this.transactionId = base['transactionId']
|
688
|
+
SchemaValidation.validate_required(this.payerId, true, name, 'payerId')
|
689
|
+
SchemaValidation.validate_required(this.transactionId, true, name, 'transactionId')
|
499
690
|
this
|
500
691
|
else
|
501
692
|
nil
|
@@ -513,6 +704,8 @@ module LitleOnline
|
|
513
704
|
this = CreditPayPal.new
|
514
705
|
this.payerId = base['payerId']
|
515
706
|
this.payerEmail = base['payerEmail']
|
707
|
+
SchemaValidation.validate_length(this.payerId, false, 1, 17, name, 'payerId')
|
708
|
+
SchemaValidation.validate_length(this.payerEmail, false, 1, 127, name, 'payerEmail')
|
516
709
|
this
|
517
710
|
else
|
518
711
|
nil
|
@@ -534,25 +727,10 @@ module LitleOnline
|
|
534
727
|
this.city = base['city']
|
535
728
|
this.url = base['url']
|
536
729
|
this.descriptor = base['descriptor']
|
537
|
-
this
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
end
|
542
|
-
end
|
543
|
-
|
544
|
-
class TaxBilling
|
545
|
-
include XML::Mapping
|
546
|
-
text_node :taxAuthority, "taxAuthority", :default_value=>nil
|
547
|
-
text_node :state, "state", :default_value=>nil
|
548
|
-
text_node :govtTxnType, "govtTxnType", :default_value=>nil
|
549
|
-
def self.from_hash(hash, name='taxBilling')
|
550
|
-
base = hash[name]
|
551
|
-
if(base)
|
552
|
-
this = TaxBilling.new
|
553
|
-
this.taxAuthority = base['taxAuthority']
|
554
|
-
this.state = base['state']
|
555
|
-
this.govtTxnType = base['govtTxnType']
|
730
|
+
SchemaValidation.validate_regex(this.phone, false, /\A\d{1,13}\Z/, name, 'phone')
|
731
|
+
SchemaValidation.validate_length(this.city, false, 1, 35, name, 'city')
|
732
|
+
SchemaValidation.validate_regex(this.url, false, /\A([A-Z,a-z,0-9,\/,\-,_,.]){1,13}\Z/, name, 'url')
|
733
|
+
SchemaValidation.validate_regex(this.descriptor, false, /\A([A-Z,a-z,0-9, ,\*,,,\-,',#,&,.]){4,25}\Z/, name, 'descriptor')
|
556
734
|
this
|
557
735
|
else
|
558
736
|
nil
|
@@ -568,6 +746,7 @@ module LitleOnline
|
|
568
746
|
if(base)
|
569
747
|
this = ProcessingInstructions.new
|
570
748
|
this.bypassVelocityCheck = base['bypassVelocityCheck']
|
749
|
+
SchemaValidation.validate_boolean(this.bypassVelocityCheck, false, name, 'bypassVelocityCheck')
|
571
750
|
this
|
572
751
|
else
|
573
752
|
nil
|
@@ -585,6 +764,8 @@ module LitleOnline
|
|
585
764
|
this = EcheckForToken.new
|
586
765
|
this.accNum = base['accNum']
|
587
766
|
this.routingNum = base['routingNum']
|
767
|
+
SchemaValidation.validate_length(this.accNum, true, 1, 17, name, 'accNum')
|
768
|
+
SchemaValidation.validate_length(this.routingNum, true, 9, 9, name, 'routingNum')
|
588
769
|
this
|
589
770
|
else
|
590
771
|
nil
|
@@ -604,6 +785,9 @@ module LitleOnline
|
|
604
785
|
this.prepaid = base['prepaid']
|
605
786
|
this.international = base['international']
|
606
787
|
this.chargeback = base['chargeback']
|
788
|
+
SchemaValidation.validate_boolean(this.prepaid, false, name, 'prepaid')
|
789
|
+
SchemaValidation.validate_boolean(this.international, false, name, 'international')
|
790
|
+
SchemaValidation.validate_boolean(this.chargeback, false, name, 'chargeback')
|
607
791
|
this
|
608
792
|
else
|
609
793
|
nil
|
@@ -623,6 +807,9 @@ module LitleOnline
|
|
623
807
|
this.campaign = base['campaign']
|
624
808
|
this.affiliate = base['affiliate']
|
625
809
|
this.merchantGroupingId = base['merchantGroupingId']
|
810
|
+
SchemaValidation.validate_length(this.campaign, false, 1, 25, name, 'campaign')
|
811
|
+
SchemaValidation.validate_length(this.affiliate, false, 1, 25, name, 'affiliate')
|
812
|
+
SchemaValidation.validate_length(this.merchantGroupingId, false, 1, 25, name, 'merchantGroupingId')
|
626
813
|
this
|
627
814
|
else
|
628
815
|
nil
|
@@ -644,6 +831,10 @@ module LitleOnline
|
|
644
831
|
this.accNum = base['accNum']
|
645
832
|
this.routingNum = base['routingNum']
|
646
833
|
this.checkNum = base['checkNum']
|
834
|
+
SchemaValidation.validate_enum(this.accType, true, ['Checking','Savings','Corporate','Corp Savings'], name, 'accType')
|
835
|
+
SchemaValidation.validate_length(this.accNum, true, 1, 17, name, 'accNum')
|
836
|
+
SchemaValidation.validate_length(this.routingNum, true, 9, 9, name, 'routingNum')
|
837
|
+
SchemaValidation.validate_length(this.checkNum, false, 1, 15, name, 'checkNum')
|
647
838
|
this
|
648
839
|
else
|
649
840
|
nil
|
@@ -665,6 +856,10 @@ module LitleOnline
|
|
665
856
|
this.routingNum = base['routingNum']
|
666
857
|
this.accType = base['accType']
|
667
858
|
this.checkNum = base['checkNum']
|
859
|
+
SchemaValidation.validate_length(this.litleToken, true, 13, 25, name, 'litleToken')
|
860
|
+
SchemaValidation.validate_length(this.routingNum, true, 9, 9, name, 'routingNum')
|
861
|
+
SchemaValidation.validate_enum(this.accType, true, ['Checking','Savings','Corporate','Corp Savings'], name, 'accType')
|
862
|
+
SchemaValidation.validate_length(this.checkNum, false, 1, 15, name, 'checkNum')
|
668
863
|
this
|
669
864
|
else
|
670
865
|
nil
|
@@ -674,12 +869,16 @@ module LitleOnline
|
|
674
869
|
|
675
870
|
class RecyclingRequest
|
676
871
|
include XML::Mapping
|
677
|
-
text_node :
|
872
|
+
text_node :recycleBy, "recycleBy", :default_value=>nil
|
873
|
+
text_node :recycleId, "recycleId", :default_value=>nil
|
678
874
|
def self.from_hash(hash, name='recyclingRequest')
|
679
875
|
base = hash[name]
|
680
876
|
if(base)
|
681
877
|
this = RecyclingRequest.new
|
682
|
-
this.
|
878
|
+
this.recycleBy = base['recycleBy']
|
879
|
+
this.recycleId = base['recycleId']
|
880
|
+
SchemaValidation.validate_enum(this.recycleBy, false, ['Merchant','Litle','None'], name, 'recycleBy')
|
881
|
+
SchemaValidation.validate_length(this.recycleId, false, 1, 25, name, 'recycleId')
|
683
882
|
this
|
684
883
|
else
|
685
884
|
nil
|