LitleOnline 8.13.1 → 8.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|