solidus_conekta 1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +90 -0
- data/Rakefile +21 -0
- data/app/assets/javascripts/spree/backend/solidus_conekta.js +2 -0
- data/app/assets/javascripts/spree/frontend/conekta.js +635 -0
- data/app/assets/javascripts/spree/frontend/easyXDM.min.js +25 -0
- data/app/assets/javascripts/spree/frontend/printThis.js +146 -0
- data/app/assets/javascripts/spree/frontend/solidus_conekta.js.coffee +63 -0
- data/app/assets/javascripts/spree/frontend/utils.js.erb +35 -0
- data/app/assets/stylesheets/spree/backend/print.css.sass +12 -0
- data/app/assets/stylesheets/spree/backend/solidus_conekta.css +3 -0
- data/app/assets/stylesheets/spree/frontend/conekta.css.sass +45 -0
- data/app/assets/stylesheets/spree/frontend/solidus_conekta.css +4 -0
- data/app/controllers/spree/checkout_controller_decorator.rb +30 -0
- data/app/controllers/spree/conekta/payments_controller.rb +16 -0
- data/app/models/spree/billing_integration/conekta_gateway/bank.rb +30 -0
- data/app/models/spree/billing_integration/conekta_gateway/card.rb +35 -0
- data/app/models/spree/billing_integration/conekta_gateway/cash.rb +30 -0
- data/app/models/spree/billing_integration/conekta_gateway/monthly_payment.rb +35 -0
- data/app/models/spree/billing_integration/conekta_gateway.rb +31 -0
- data/app/models/spree/conekta_payment.rb +16 -0
- data/app/models/spree/credit_card_decorator.rb +8 -0
- data/app/models/spree/line_item_decorator.rb +11 -0
- data/app/models/spree/order_decorator.rb +19 -0
- data/app/models/spree/payment_decorator.rb +18 -0
- data/app/models/spree.rb +5 -0
- data/app/overrides/add_conekta_scripts_to_the_checkout.rb +4 -0
- data/app/views/spree/admin/payments/_banorte.html.erb +32 -0
- data/app/views/spree/admin/payments/_oxxo.html.erb +29 -0
- data/app/views/spree/admin/payments/_spei.html.erb +30 -0
- data/app/views/spree/admin/payments/source_forms/_conekta.html.erb +3 -0
- data/app/views/spree/admin/payments/source_forms/_conekta_card.html.erb +3 -0
- data/app/views/spree/admin/payments/source_views/_conekta.html.erb +1 -0
- data/app/views/spree/admin/payments/source_views/_conekta_card.html.erb +19 -0
- data/app/views/spree/checkout/_conekta_scripts.html.erb +17 -0
- data/app/views/spree/checkout/existing_payment/_conekta_card.html.erb +9 -0
- data/app/views/spree/checkout/payment/_conekta.html.erb +3 -0
- data/app/views/spree/checkout/payment/_conekta_card.html.erb +75 -0
- data/app/views/spree/conekta/gateway_options.json.jbuilder +34 -0
- data/app/views/spree/conekta/payments/_bank.html.erb +0 -0
- data/app/views/spree/conekta/payments/_banorte.html.erb +30 -0
- data/app/views/spree/conekta/payments/_card.html.erb +0 -0
- data/app/views/spree/conekta/payments/_cash.html.erb +0 -0
- data/app/views/spree/conekta/payments/_oxxo.html.erb +36 -0
- data/app/views/spree/conekta/payments/_spei.html.erb +28 -0
- data/app/views/spree/conekta/payments/show.html.erb +25 -0
- data/config/locales/en.yml +26 -0
- data/config/locales/es-MX.yml +26 -0
- data/config/routes.rb +5 -0
- data/db/migrate/20130904161251_create_spree_conekta_payments.rb +9 -0
- data/db/migrate/20130904172418_rename_type_column_to_conekta_payment.rb +7 -0
- data/db/migrate/20140220160614_add_installments_to_spree_credit_card.rb +5 -0
- data/db/migrate/20140509145837_add_payment_method_id_to_spree_conekta_payment.rb +6 -0
- data/db/migrate/20140509151116_add_user_id_to_spree_conekta_payment.rb +6 -0
- data/lib/generators/solidus_conekta/install/install_generator.rb +31 -0
- data/lib/solidus_conekta/engine.rb +40 -0
- data/lib/solidus_conekta/factories.rb +6 -0
- data/lib/solidus_conekta/version.rb +3 -0
- data/lib/solidus_conekta.rb +10 -0
- data/lib/spree/conekta/client.rb +36 -0
- data/lib/spree/conekta/configuration.rb +25 -0
- data/lib/spree/conekta/credit_card.rb +42 -0
- data/lib/spree/conekta/credit_card_collection.rb +36 -0
- data/lib/spree/conekta/customer.rb +39 -0
- data/lib/spree/conekta/exchange.rb +30 -0
- data/lib/spree/conekta/fake_response.rb +10 -0
- data/lib/spree/conekta/monthly_payment_provider.rb +26 -0
- data/lib/spree/conekta/payment_notification_handler.rb +36 -0
- data/lib/spree/conekta/payment_source/bank.rb +13 -0
- data/lib/spree/conekta/payment_source/card.rb +21 -0
- data/lib/spree/conekta/payment_source/cash.rb +13 -0
- data/lib/spree/conekta/provider.rb +134 -0
- data/lib/spree/conekta/response.rb +14 -0
- data/lib/tasks/solidus_conekta_tasks.rake +4 -0
- metadata +509 -0
@@ -0,0 +1,635 @@
|
|
1
|
+
/**
|
2
|
+
* @license
|
3
|
+
* json2.js
|
4
|
+
* 2013-05-26
|
5
|
+
* Public Domain.
|
6
|
+
* NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
|
7
|
+
* This is a reference implementation. You are free to copy, modify, or redistribute.
|
8
|
+
*/
|
9
|
+
"object"!=typeof JSON&&(JSON={}),function(){"use strict";function f(a){return 10>a?"0"+a:a}function quote(a){return escapable.lastIndex=0,escapable.test(a)?'"'+a.replace(escapable,function(a){var b=meta[a];return"string"==typeof b?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function str(a,b){var c,d,e,f,g,h=gap,i=b[a];switch(i&&"object"==typeof i&&"function"==typeof i.toJSON&&(i=i.toJSON(a)),"function"==typeof rep&&(i=rep.call(b,a,i)),typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";if(gap+=indent,g=[],"[object Array]"===Object.prototype.toString.apply(i)){for(f=i.length,c=0;f>c;c+=1)g[c]=str(c,i)||"null";return e=0===g.length?"[]":gap?"[\n"+gap+g.join(",\n"+gap)+"\n"+h+"]":"["+g.join(",")+"]",gap=h,e}if(rep&&"object"==typeof rep)for(f=rep.length,c=0;f>c;c+=1)"string"==typeof rep[c]&&(d=rep[c],e=str(d,i),e&&g.push(quote(d)+(gap?": ":":")+e));else for(d in i)Object.prototype.hasOwnProperty.call(i,d)&&(e=str(d,i),e&&g.push(quote(d)+(gap?": ":":")+e));return e=0===g.length?"{}":gap?"{\n"+gap+g.join(",\n"+gap)+"\n"+h+"}":"{"+g.join(",")+"}",gap=h,e}}"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;"function"!=typeof JSON.stringify&&(JSON.stringify=function(a,b,c){var d;if(gap="",indent="","number"==typeof c)for(d=0;c>d;d+=1)indent+=" ";else"string"==typeof c&&(indent=c);if(rep=b,b&&"function"!=typeof b&&("object"!=typeof b||"number"!=typeof b.length))throw new Error("JSON.stringify");return str("",{"":a})}),"function"!=typeof JSON.parse&&(JSON.parse=function(text,reviver){function walk(a,b){var c,d,e=a[b];if(e&&"object"==typeof e)for(c in e)Object.prototype.hasOwnProperty.call(e,c)&&(d=walk(e,c),void 0!==d?e[c]=d:delete e[c]);return reviver.call(a,b,e)}var j;if(text=String(text),cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return j=eval("("+text+")"),"function"==typeof reviver?walk({"":j},""):j;throw new SyntaxError("JSON.parse")})}();
|
10
|
+
/**
|
11
|
+
* easyXDM
|
12
|
+
* http://easyxdm.net/
|
13
|
+
* Copyright(c) 2009-2011, Øyvind Sean Kinsey, oyvind@kinsey.no.
|
14
|
+
*
|
15
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
16
|
+
* of this software and associated documentation files (the "Software"), to deal
|
17
|
+
* in the Software without restriction, including without limitation the rights
|
18
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
19
|
+
* copies of the Software, and to permit persons to whom the Software is
|
20
|
+
* furnished to do so, subject to the following conditions:
|
21
|
+
*
|
22
|
+
* The above copyright notice and this permission notice shall be included in
|
23
|
+
* all copies or substantial portions of the Software.
|
24
|
+
*
|
25
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
26
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
27
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
28
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
29
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
30
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
31
|
+
* THE SOFTWARE.
|
32
|
+
*/
|
33
|
+
(function(N,d,p,K,k,H){var b=this;var n=Math.floor(Math.random()*10000);var q=Function.prototype;var Q=/^((http.?:)\/\/([^:\/\s]+)(:\d+)*)/;var R=/[\-\w]+\/\.\.\//;var F=/([^:])\/\//g;var I="";var o={};var M=N.easyXDM;var U="easyXDM_";var E;var y=false;var i;var h;function C(X,Z){var Y=typeof X[Z];return Y=="function"||(!!(Y=="object"&&X[Z]))||Y=="unknown"}function u(X,Y){return !!(typeof(X[Y])=="object"&&X[Y])}function r(X){return Object.prototype.toString.call(X)==="[object Array]"}function c(){var Z="Shockwave Flash",ad="application/x-shockwave-flash";if(!t(navigator.plugins)&&typeof navigator.plugins[Z]=="object"){var ab=navigator.plugins[Z].description;if(ab&&!t(navigator.mimeTypes)&&navigator.mimeTypes[ad]&&navigator.mimeTypes[ad].enabledPlugin){i=ab.match(/\d+/g)}}if(!i){var Y;try{Y=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");i=Array.prototype.slice.call(Y.GetVariable("$version").match(/(\d+),(\d+),(\d+),(\d+)/),1);Y=null}catch(ac){}}if(!i){return false}var X=parseInt(i[0],10),aa=parseInt(i[1],10);h=X>9&&aa>0;return true}var v,x;if(C(N,"addEventListener")){v=function(Z,X,Y){Z.addEventListener(X,Y,false)};x=function(Z,X,Y){Z.removeEventListener(X,Y,false)}}else{if(C(N,"attachEvent")){v=function(X,Z,Y){X.attachEvent("on"+Z,Y)};x=function(X,Z,Y){X.detachEvent("on"+Z,Y)}}else{throw new Error("Browser not supported")}}var W=false,J=[],L;if("readyState" in d){L=d.readyState;W=L=="complete"||(~navigator.userAgent.indexOf("AppleWebKit/")&&(L=="loaded"||L=="interactive"))}else{W=!!d.body}function s(){if(W){return}W=true;for(var X=0;X<J.length;X++){J[X]()}J.length=0}if(!W){if(C(N,"addEventListener")){v(d,"DOMContentLoaded",s)}else{v(d,"readystatechange",function(){if(d.readyState=="complete"){s()}});if(d.documentElement.doScroll&&N===top){var g=function(){if(W){return}try{d.documentElement.doScroll("left")}catch(X){K(g,1);return}s()};g()}}v(N,"load",s)}function G(Y,X){if(W){Y.call(X);return}J.push(function(){Y.call(X)})}function m(){var Z=parent;if(I!==""){for(var X=0,Y=I.split(".");X<Y.length;X++){Z=Z[Y[X]]}}return Z.easyXDM}function e(X){N.easyXDM=M;I=X;if(I){U="easyXDM_"+I.replace(".","_")+"_"}return o}function z(X){return X.match(Q)[3]}function f(X){return X.match(Q)[4]||""}function j(Z){var X=Z.toLowerCase().match(Q);var aa=X[2],ab=X[3],Y=X[4]||"";if((aa=="http:"&&Y==":80")||(aa=="https:"&&Y==":443")){Y=""}return aa+"//"+ab+Y}function B(X){X=X.replace(F,"$1/");if(!X.match(/^(http||https):\/\//)){var Y=(X.substring(0,1)==="/")?"":p.pathname;if(Y.substring(Y.length-1)!=="/"){Y=Y.substring(0,Y.lastIndexOf("/")+1)}X=p.protocol+"//"+p.host+Y+X}while(R.test(X)){X=X.replace(R,"")}return X}function P(X,aa){var ac="",Z=X.indexOf("#");if(Z!==-1){ac=X.substring(Z);X=X.substring(0,Z)}var ab=[];for(var Y in aa){if(aa.hasOwnProperty(Y)){ab.push(Y+"="+H(aa[Y]))}}return X+(y?"#":(X.indexOf("?")==-1?"?":"&"))+ab.join("&")+ac}var S=(function(X){X=X.substring(1).split("&");var Z={},aa,Y=X.length;while(Y--){aa=X[Y].split("=");Z[aa[0]]=k(aa[1])}return Z}(/xdm_e=/.test(p.search)?p.search:p.hash));function t(X){return typeof X==="undefined"}var O=function(){var Y={};var Z={a:[1,2,3]},X='{"a":[1,2,3]}';if(typeof JSON!="undefined"&&typeof JSON.stringify==="function"&&JSON.stringify(Z).replace((/\s/g),"")===X){return JSON}if(Object.toJSON){if(Object.toJSON(Z).replace((/\s/g),"")===X){Y.stringify=Object.toJSON}}if(typeof String.prototype.evalJSON==="function"){Z=X.evalJSON();if(Z.a&&Z.a.length===3&&Z.a[2]===3){Y.parse=function(aa){return aa.evalJSON()}}}if(Y.stringify&&Y.parse){O=function(){return Y};return Y}return null};function T(X,Y,Z){var ab;for(var aa in Y){if(Y.hasOwnProperty(aa)){if(aa in X){ab=Y[aa];if(typeof ab==="object"){T(X[aa],ab,Z)}else{if(!Z){X[aa]=Y[aa]}}}else{X[aa]=Y[aa]}}}return X}function a(){var Y=d.body.appendChild(d.createElement("form")),X=Y.appendChild(d.createElement("input"));X.name=U+"TEST"+n;E=X!==Y.elements[X.name];d.body.removeChild(Y)}function A(Y){if(t(E)){a()}var ac;if(E){ac=d.createElement('<iframe name="'+Y.props.name+'"/>')}else{ac=d.createElement("IFRAME");ac.name=Y.props.name}ac.id=ac.name=Y.props.name;delete Y.props.name;if(typeof Y.container=="string"){Y.container=d.getElementById(Y.container)}if(!Y.container){T(ac.style,{position:"absolute",top:"-2000px",left:"0px"});Y.container=d.body}var ab=Y.props.src;Y.props.src="javascript:false";T(ac,Y.props);ac.border=ac.frameBorder=0;ac.allowTransparency=true;Y.container.appendChild(ac);if(Y.onLoad){v(ac,"load",Y.onLoad)}if(Y.usePost){var aa=Y.container.appendChild(d.createElement("form")),X;aa.target=ac.name;aa.action=ab;aa.method="POST";if(typeof(Y.usePost)==="object"){for(var Z in Y.usePost){if(Y.usePost.hasOwnProperty(Z)){if(E){X=d.createElement('<input name="'+Z+'"/>')}else{X=d.createElement("INPUT");X.name=Z}X.value=Y.usePost[Z];aa.appendChild(X)}}}aa.submit();aa.parentNode.removeChild(aa)}else{ac.src=ab}Y.props.src=ab;return ac}function V(aa,Z){if(typeof aa=="string"){aa=[aa]}var Y,X=aa.length;while(X--){Y=aa[X];Y=new RegExp(Y.substr(0,1)=="^"?Y:("^"+Y.replace(/(\*)/g,".$1").replace(/\?/g,".")+"$"));if(Y.test(Z)){return true}}return false}function l(Z){var ae=Z.protocol,Y;Z.isHost=Z.isHost||t(S.xdm_p);y=Z.hash||false;if(!Z.props){Z.props={}}if(!Z.isHost){Z.channel=S.xdm_c.replace(/["'<>\\]/g,"");Z.secret=S.xdm_s;Z.remote=S.xdm_e.replace(/["'<>\\]/g,"");ae=S.xdm_p;if(Z.acl&&!V(Z.acl,Z.remote)){throw new Error("Access denied for "+Z.remote)}}else{Z.remote=B(Z.remote);Z.channel=Z.channel||"default"+n++;Z.secret=Math.random().toString(16).substring(2);if(t(ae)){if(j(p.href)==j(Z.remote)){ae="4"}else{if(C(N,"postMessage")||C(d,"postMessage")){ae="1"}else{if(Z.swf&&C(N,"ActiveXObject")&&c()){ae="6"}else{if(navigator.product==="Gecko"&&"frameElement" in N&&navigator.userAgent.indexOf("WebKit")==-1){ae="5"}else{if(Z.remoteHelper){ae="2"}else{ae="0"}}}}}}}Z.protocol=ae;switch(ae){case"0":T(Z,{interval:100,delay:2000,useResize:true,useParent:false,usePolling:false},true);if(Z.isHost){if(!Z.local){var ac=p.protocol+"//"+p.host,X=d.body.getElementsByTagName("img"),ad;var aa=X.length;while(aa--){ad=X[aa];if(ad.src.substring(0,ac.length)===ac){Z.local=ad.src;break}}if(!Z.local){Z.local=N}}var ab={xdm_c:Z.channel,xdm_p:0};if(Z.local===N){Z.usePolling=true;Z.useParent=true;Z.local=p.protocol+"//"+p.host+p.pathname+p.search;ab.xdm_e=Z.local;ab.xdm_pa=1}else{ab.xdm_e=B(Z.local)}if(Z.container){Z.useResize=false;ab.xdm_po=1}Z.remote=P(Z.remote,ab)}else{T(Z,{channel:S.xdm_c,remote:S.xdm_e,useParent:!t(S.xdm_pa),usePolling:!t(S.xdm_po),useResize:Z.useParent?false:Z.useResize})}Y=[new o.stack.HashTransport(Z),new o.stack.ReliableBehavior({}),new o.stack.QueueBehavior({encode:true,maxLength:4000-Z.remote.length}),new o.stack.VerifyBehavior({initiate:Z.isHost})];break;case"1":Y=[new o.stack.PostMessageTransport(Z)];break;case"2":if(Z.isHost){Z.remoteHelper=B(Z.remoteHelper)}Y=[new o.stack.NameTransport(Z),new o.stack.QueueBehavior(),new o.stack.VerifyBehavior({initiate:Z.isHost})];break;case"3":Y=[new o.stack.NixTransport(Z)];break;case"4":Y=[new o.stack.SameOriginTransport(Z)];break;case"5":Y=[new o.stack.FrameElementTransport(Z)];break;case"6":if(!i){c()}Y=[new o.stack.FlashTransport(Z)];break}Y.push(new o.stack.QueueBehavior({lazy:Z.lazy,remove:true}));return Y}function D(aa){var ab,Z={incoming:function(ad,ac){this.up.incoming(ad,ac)},outgoing:function(ac,ad){this.down.outgoing(ac,ad)},callback:function(ac){this.up.callback(ac)},init:function(){this.down.init()},destroy:function(){this.down.destroy()}};for(var Y=0,X=aa.length;Y<X;Y++){ab=aa[Y];T(ab,Z,true);if(Y!==0){ab.down=aa[Y-1]}if(Y!==X-1){ab.up=aa[Y+1]}}return ab}function w(X){X.up.down=X.down;X.down.up=X.up;X.up=X.down=null}T(o,{version:"2.4.18.25",query:S,stack:{},apply:T,getJSONObject:O,whenReady:G,noConflict:e});o.DomHelper={on:v,un:x,requiresJSON:function(X){if(!u(N,"JSON")){d.write('<script type="text/javascript" src="'+X+'"><\/script>')}}};(function(){var X={};o.Fn={set:function(Y,Z){X[Y]=Z},get:function(Z,Y){var aa=X[Z];if(Y){delete X[Z]}return aa}}}());o.Socket=function(Y){var X=D(l(Y).concat([{incoming:function(ab,aa){Y.onMessage(ab,aa)},callback:function(aa){if(Y.onReady){Y.onReady(aa)}}}])),Z=j(Y.remote);this.origin=j(Y.remote);this.destroy=function(){X.destroy()};this.postMessage=function(aa){X.outgoing(aa,Z)};X.init()};o.Rpc=function(Z,Y){if(Y.local){for(var ab in Y.local){if(Y.local.hasOwnProperty(ab)){var aa=Y.local[ab];if(typeof aa==="function"){Y.local[ab]={method:aa}}}}}var X=D(l(Z).concat([new o.stack.RpcBehavior(this,Y),{callback:function(ac){if(Z.onReady){Z.onReady(ac)}}}]));this.origin=j(Z.remote);this.destroy=function(){X.destroy()};X.init()};o.stack.SameOriginTransport=function(Y){var Z,ab,aa,X;return(Z={outgoing:function(ad,ae,ac){aa(ad);if(ac){ac()}},destroy:function(){if(ab){ab.parentNode.removeChild(ab);ab=null}},onDOMReady:function(){X=j(Y.remote);if(Y.isHost){T(Y.props,{src:P(Y.remote,{xdm_e:p.protocol+"//"+p.host+p.pathname,xdm_c:Y.channel,xdm_p:4}),name:U+Y.channel+"_provider"});ab=A(Y);o.Fn.set(Y.channel,function(ac){aa=ac;K(function(){Z.up.callback(true)},0);return function(ad){Z.up.incoming(ad,X)}})}else{aa=m().Fn.get(Y.channel,true)(function(ac){Z.up.incoming(ac,X)});K(function(){Z.up.callback(true)},0)}},init:function(){G(Z.onDOMReady,Z)}})};o.stack.FlashTransport=function(aa){var ac,X,ab,ad,Y,ae;function af(ah,ag){K(function(){ac.up.incoming(ah,ad)},0)}function Z(ah){var ag=aa.swf+"?host="+aa.isHost;var aj="easyXDM_swf_"+Math.floor(Math.random()*10000);o.Fn.set("flash_loaded"+ah.replace(/[\-.]/g,"_"),function(){o.stack.FlashTransport[ah].swf=Y=ae.firstChild;var ak=o.stack.FlashTransport[ah].queue;for(var al=0;al<ak.length;al++){ak[al]()}ak.length=0});if(aa.swfContainer){ae=(typeof aa.swfContainer=="string")?d.getElementById(aa.swfContainer):aa.swfContainer}else{ae=d.createElement("div");T(ae.style,h&&aa.swfNoThrottle?{height:"20px",width:"20px",position:"fixed",right:0,top:0}:{height:"1px",width:"1px",position:"absolute",overflow:"hidden",right:0,top:0});d.body.appendChild(ae)}var ai="callback=flash_loaded"+H(ah.replace(/[\-.]/g,"_"))+"&proto="+b.location.protocol+"&domain="+H(z(b.location.href))+"&port="+H(f(b.location.href))+"&ns="+H(I);ae.innerHTML="<object height='20' width='20' type='application/x-shockwave-flash' id='"+aj+"' data='"+ag+"'><param name='allowScriptAccess' value='always'></param><param name='wmode' value='transparent'><param name='movie' value='"+ag+"'></param><param name='flashvars' value='"+ai+"'></param><embed type='application/x-shockwave-flash' FlashVars='"+ai+"' allowScriptAccess='always' wmode='transparent' src='"+ag+"' height='1' width='1'></embed></object>"}return(ac={outgoing:function(ah,ai,ag){Y.postMessage(aa.channel,ah.toString());if(ag){ag()}},destroy:function(){try{Y.destroyChannel(aa.channel)}catch(ag){}Y=null;if(X){X.parentNode.removeChild(X);X=null}},onDOMReady:function(){ad=aa.remote;o.Fn.set("flash_"+aa.channel+"_init",function(){K(function(){ac.up.callback(true)})});o.Fn.set("flash_"+aa.channel+"_onMessage",af);aa.swf=B(aa.swf);var ah=z(aa.swf);var ag=function(){o.stack.FlashTransport[ah].init=true;Y=o.stack.FlashTransport[ah].swf;Y.createChannel(aa.channel,aa.secret,j(aa.remote),aa.isHost);if(aa.isHost){if(h&&aa.swfNoThrottle){T(aa.props,{position:"fixed",right:0,top:0,height:"20px",width:"20px"})}T(aa.props,{src:P(aa.remote,{xdm_e:j(p.href),xdm_c:aa.channel,xdm_p:6,xdm_s:aa.secret}),name:U+aa.channel+"_provider"});X=A(aa)}};if(o.stack.FlashTransport[ah]&&o.stack.FlashTransport[ah].init){ag()}else{if(!o.stack.FlashTransport[ah]){o.stack.FlashTransport[ah]={queue:[ag]};Z(ah)}else{o.stack.FlashTransport[ah].queue.push(ag)}}},init:function(){G(ac.onDOMReady,ac)}})};o.stack.PostMessageTransport=function(aa){var ac,ad,Y,Z;function X(ae){if(ae.origin){return j(ae.origin)}if(ae.uri){return j(ae.uri)}if(ae.domain){return p.protocol+"//"+ae.domain}throw"Unable to retrieve the origin of the event"}function ab(af){var ae=X(af);if(ae==Z&&af.data.substring(0,aa.channel.length+1)==aa.channel+" "){ac.up.incoming(af.data.substring(aa.channel.length+1),ae)}}return(ac={outgoing:function(af,ag,ae){Y.postMessage(aa.channel+" "+af,ag||Z);if(ae){ae()}},destroy:function(){x(N,"message",ab);if(ad){Y=null;ad.parentNode.removeChild(ad);ad=null}},onDOMReady:function(){Z=j(aa.remote);if(aa.isHost){var ae=function(af){if(af.data==aa.channel+"-ready"){Y=("postMessage" in ad.contentWindow)?ad.contentWindow:ad.contentWindow.document;x(N,"message",ae);v(N,"message",ab);K(function(){ac.up.callback(true)},0)}};v(N,"message",ae);T(aa.props,{src:P(aa.remote,{xdm_e:j(p.href),xdm_c:aa.channel,xdm_p:1}),name:U+aa.channel+"_provider"});ad=A(aa)}else{v(N,"message",ab);Y=("postMessage" in N.parent)?N.parent:N.parent.document;Y.postMessage(aa.channel+"-ready",Z);K(function(){ac.up.callback(true)},0)}},init:function(){G(ac.onDOMReady,ac)}})};o.stack.FrameElementTransport=function(Y){var Z,ab,aa,X;return(Z={outgoing:function(ad,ae,ac){aa.call(this,ad);if(ac){ac()}},destroy:function(){if(ab){ab.parentNode.removeChild(ab);ab=null}},onDOMReady:function(){X=j(Y.remote);if(Y.isHost){T(Y.props,{src:P(Y.remote,{xdm_e:j(p.href),xdm_c:Y.channel,xdm_p:5}),name:U+Y.channel+"_provider"});ab=A(Y);ab.fn=function(ac){delete ab.fn;aa=ac;K(function(){Z.up.callback(true)},0);return function(ad){Z.up.incoming(ad,X)}}}else{if(d.referrer&&j(d.referrer)!=S.xdm_e){N.top.location=S.xdm_e}aa=N.frameElement.fn(function(ac){Z.up.incoming(ac,X)});Z.up.callback(true)}},init:function(){G(Z.onDOMReady,Z)}})};o.stack.NameTransport=function(ab){var ac;var ae,ai,aa,ag,ah,Y,X;function af(al){var ak=ab.remoteHelper+(ae?"#_3":"#_2")+ab.channel;ai.contentWindow.sendMessage(al,ak)}function ad(){if(ae){if(++ag===2||!ae){ac.up.callback(true)}}else{af("ready");ac.up.callback(true)}}function aj(ak){ac.up.incoming(ak,Y)}function Z(){if(ah){K(function(){ah(true)},0)}}return(ac={outgoing:function(al,am,ak){ah=ak;af(al)},destroy:function(){ai.parentNode.removeChild(ai);ai=null;if(ae){aa.parentNode.removeChild(aa);aa=null}},onDOMReady:function(){ae=ab.isHost;ag=0;Y=j(ab.remote);ab.local=B(ab.local);if(ae){o.Fn.set(ab.channel,function(al){if(ae&&al==="ready"){o.Fn.set(ab.channel,aj);ad()}});X=P(ab.remote,{xdm_e:ab.local,xdm_c:ab.channel,xdm_p:2});T(ab.props,{src:X+"#"+ab.channel,name:U+ab.channel+"_provider"});aa=A(ab)}else{ab.remoteHelper=ab.remote;o.Fn.set(ab.channel,aj)}var ak=function(){var al=ai||this;x(al,"load",ak);o.Fn.set(ab.channel+"_load",Z);(function am(){if(typeof al.contentWindow.sendMessage=="function"){ad()}else{K(am,50)}}())};ai=A({props:{src:ab.local+"#_4"+ab.channel},onLoad:ak})},init:function(){G(ac.onDOMReady,ac)}})};o.stack.HashTransport=function(Z){var ac;var ah=this,af,aa,X,ad,am,ab,al;var ag,Y;function ak(ao){if(!al){return}var an=Z.remote+"#"+(am++)+"_"+ao;((af||!ag)?al.contentWindow:al).location=an}function ae(an){ad=an;ac.up.incoming(ad.substring(ad.indexOf("_")+1),Y)}function aj(){if(!ab){return}var an=ab.location.href,ap="",ao=an.indexOf("#");if(ao!=-1){ap=an.substring(ao)}if(ap&&ap!=ad){ae(ap)}}function ai(){aa=setInterval(aj,X)}return(ac={outgoing:function(an,ao){ak(an)},destroy:function(){N.clearInterval(aa);if(af||!ag){al.parentNode.removeChild(al)}al=null},onDOMReady:function(){af=Z.isHost;X=Z.interval;ad="#"+Z.channel;am=0;ag=Z.useParent;Y=j(Z.remote);if(af){T(Z.props,{src:Z.remote,name:U+Z.channel+"_provider"});if(ag){Z.onLoad=function(){ab=N;ai();ac.up.callback(true)}}else{var ap=0,an=Z.delay/50;(function ao(){if(++ap>an){throw new Error("Unable to reference listenerwindow")}try{ab=al.contentWindow.frames[U+Z.channel+"_consumer"]}catch(aq){}if(ab){ai();ac.up.callback(true)}else{K(ao,50)}}())}al=A(Z)}else{ab=N;ai();if(ag){al=parent;ac.up.callback(true)}else{T(Z,{props:{src:Z.remote+"#"+Z.channel+new Date(),name:U+Z.channel+"_consumer"},onLoad:function(){ac.up.callback(true)}});al=A(Z)}}},init:function(){G(ac.onDOMReady,ac)}})};o.stack.ReliableBehavior=function(Y){var aa,ac;var ab=0,X=0,Z="";return(aa={incoming:function(af,ad){var ae=af.indexOf("_"),ag=af.substring(0,ae).split(",");af=af.substring(ae+1);if(ag[0]==ab){Z="";if(ac){ac(true)}}if(af.length>0){aa.down.outgoing(ag[1]+","+ab+"_"+Z,ad);if(X!=ag[1]){X=ag[1];aa.up.incoming(af,ad)}}},outgoing:function(af,ad,ae){Z=af;ac=ae;aa.down.outgoing(X+","+(++ab)+"_"+af,ad)}})};o.stack.QueueBehavior=function(Z){var ac,ad=[],ag=true,aa="",af,X=0,Y=false,ab=false;function ae(){if(Z.remove&&ad.length===0){w(ac);return}if(ag||ad.length===0||af){return}ag=true;var ah=ad.shift();ac.down.outgoing(ah.data,ah.origin,function(ai){ag=false;if(ah.callback){K(function(){ah.callback(ai)},0)}ae()})}return(ac={init:function(){if(t(Z)){Z={}}if(Z.maxLength){X=Z.maxLength;ab=true}if(Z.lazy){Y=true}else{ac.down.init()}},callback:function(ai){ag=false;var ah=ac.up;ae();ah.callback(ai)},incoming:function(ak,ai){if(ab){var aj=ak.indexOf("_"),ah=parseInt(ak.substring(0,aj),10);aa+=ak.substring(aj+1);if(ah===0){if(Z.encode){aa=k(aa)}ac.up.incoming(aa,ai);aa=""}}else{ac.up.incoming(ak,ai)}},outgoing:function(al,ai,ak){if(Z.encode){al=H(al)}var ah=[],aj;if(ab){while(al.length!==0){aj=al.substring(0,X);al=al.substring(aj.length);ah.push(aj)}while((aj=ah.shift())){ad.push({data:ah.length+"_"+aj,origin:ai,callback:ah.length===0?ak:null})}}else{ad.push({data:al,origin:ai,callback:ak})}if(Y){ac.down.init()}else{ae()}},destroy:function(){af=true;ac.down.destroy()}})};o.stack.VerifyBehavior=function(ab){var ac,aa,Y,Z=false;function X(){aa=Math.random().toString(16).substring(2);ac.down.outgoing(aa)}return(ac={incoming:function(af,ad){var ae=af.indexOf("_");if(ae===-1){if(af===aa){ac.up.callback(true)}else{if(!Y){Y=af;if(!ab.initiate){X()}ac.down.outgoing(af)}}}else{if(af.substring(0,ae)===Y){ac.up.incoming(af.substring(ae+1),ad)}}},outgoing:function(af,ad,ae){ac.down.outgoing(aa+"_"+af,ad,ae)},callback:function(ad){if(ab.initiate){X()}}})};o.stack.RpcBehavior=function(ad,Y){var aa,af=Y.serializer||O();var ae=0,ac={};function X(ag){ag.jsonrpc="2.0";aa.down.outgoing(af.stringify(ag))}function ab(ag,ai){var ah=Array.prototype.slice;return function(){var aj=arguments.length,al,ak={method:ai};if(aj>0&&typeof arguments[aj-1]==="function"){if(aj>1&&typeof arguments[aj-2]==="function"){al={success:arguments[aj-2],error:arguments[aj-1]};ak.params=ah.call(arguments,0,aj-2)}else{al={success:arguments[aj-1]};ak.params=ah.call(arguments,0,aj-1)}ac[""+(++ae)]=al;ak.id=ae}else{ak.params=ah.call(arguments,0)}if(ag.namedParams&&ak.params.length===1){ak.params=ak.params[0]}X(ak)}}function Z(an,am,ai,al){if(!ai){if(am){X({id:am,error:{code:-32601,message:"Procedure not found."}})}return}var ak,ah;if(am){ak=function(ao){ak=q;X({id:am,result:ao})};ah=function(ao,ap){ah=q;var aq={id:am,error:{code:-32099,message:ao}};if(ap){aq.error.data=ap}X(aq)}}else{ak=ah=q}if(!r(al)){al=[al]}try{var ag=ai.method.apply(ai.scope,al.concat([ak,ah]));if(!t(ag)){ak(ag)}}catch(aj){ah(aj.message)}}return(aa={incoming:function(ah,ag){var ai=af.parse(ah);if(ai.method){if(Y.handle){Y.handle(ai,X)}else{Z(ai.method,ai.id,Y.local[ai.method],ai.params)}}else{var aj=ac[ai.id];if(ai.error){if(aj.error){aj.error(ai.error)}}else{if(aj.success){aj.success(ai.result)}}delete ac[ai.id]}},init:function(){if(Y.remote){for(var ag in Y.remote){if(Y.remote.hasOwnProperty(ag)){ad[ag]=ab(Y.remote[ag],ag)}}}aa.down.init()},destroy:function(){for(var ag in Y.remote){if(Y.remote.hasOwnProperty(ag)&&ad.hasOwnProperty(ag)){delete ad[ag]}}aa.down.destroy()}})};b.easyXDM=o})(window,document,location,window.setTimeout,decodeURIComponent,encodeURIComponent);
|
34
|
+
!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);throw new Error("Cannot find module '"+g+"'")}var j=c[g]={exports:{}};b[g][0].call(j.exports,function(a){var c=b[g][1][a];return e(c?c:a)},j,j.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b){function c(){return!0}function d(a,b,d,e){return a.global?c(b||x,d,e):void 0}function e(a){a.global&&0===ajax.active++&&d(a,null,"ajaxStart")}function f(a){a.global&&!--ajax.active&&d(a,null,"ajaxStop")}function g(a,b){var c=b.context;return b.beforeSend.call(c,a,b)===!1||d(b,c,"ajaxBeforeSend",[a,b])===!1?!1:(d(b,c,"ajaxSend",[a,b]),void 0)}function h(a,b,c){var e=c.context,f="success";c.success.call(e,a,f,b),d(c,e,"ajaxSuccess",[b,c,a]),j(f,b,c)}function i(a,b,c,e){var f=e.context;e.error.call(f,c,b,a),d(e,f,"ajaxError",[c,e,a]),j(b,c,e)}function j(a,b,c){var e=c.context;c.complete.call(e,b,a),d(c,e,"ajaxComplete",[b,c]),f(c)}function k(){}function l(a){return a&&(a==B?"html":a==A?"json":y.test(a)?"script":z.test(a)&&"xml")||"text"}function m(a,b){return(a+"&"+b).replace(/[&?]{1,2}/,"?")}function n(a){"object"===r(a.data)&&(a.data=p(a.data)),!a.data||a.type&&"GET"!=a.type.toUpperCase()||(a.url=m(a.url,a.data))}function o(a,b,c,d){var e="array"===r(b);for(var f in b){var g=b[f];d&&(f=c?d:d+"["+(e?"":f)+"]"),!d&&e?a.add(g.name,g.value):(c?"array"===r(g):"object"===r(g))?o(a,g,c,f):a.add(f,g)}}function p(a,b){var c=[];return c.add=function(a,b){this.push(D(a)+"="+D(b))},o(c,a,b),c.join("&").replace("%20","+")}function q(a){for(var b=Array.prototype.slice,c=b.call(arguments,1),d=c.length,e=0;d>e;e++){source=c[e];for(u in source)void 0!==source[u]&&(a[u]=source[u])}return a}var r;try{r=a("type-of")}catch(s){var t=a;r=t("type")}var u,v,w=0,x=window.document,y=/^(?:text|application)\/javascript/i,z=/^(?:text|application)\/xml/i,A="application/json",B="text/html",C=/^\s*$/;window.ajax=b.exports=function(a){var b=q({},a||{});for(u in ajax.settings)void 0===b[u]&&(b[u]=ajax.settings[u]);e(b),b.crossDomain||(b.crossDomain=/^([\w-]+:)?\/\/([^\/]+)/.test(b.url)&&RegExp.$2!=window.location.host);var c=b.dataType,d=/=\?/.test(b.url);if("jsonp"==c||d)return d||(b.url=m(b.url,"callback=?")),ajax.JSONP(b);b.url||(b.url=window.location.toString()),n(b);var f,j=b.accepts[c],o={},p=/^([\w-]+:)\/\//.test(b.url)?RegExp.$1:window.location.protocol,r=ajax.settings.xhr();b.crossDomain||(o["X-Requested-With"]="XMLHttpRequest"),j&&(o.Accept=j,j.indexOf(",")>-1&&(j=j.split(",",2)[0]),r.overrideMimeType&&r.overrideMimeType(j)),(b.contentType||b.data&&"GET"!=b.type.toUpperCase())&&(o["Content-Type"]=b.contentType||"application/x-www-form-urlencoded"),b.headers=q(o,b.headers||{}),r.onreadystatechange=function(){if(4==r.readyState){clearTimeout(f);var a,d=!1;if(r.status>=200&&r.status<300||304==r.status||0==r.status&&"file:"==p){c=c||l(r.getResponseHeader("content-type")),a=r.responseText;try{"script"==c?(1,eval)(a):"xml"==c?a=r.responseXML:"json"==c&&(a=C.test(a)?null:JSON.parse(a))}catch(e){d=e}d?i(d,"parsererror",r,b):h(a,r,b)}else i(null,"error",r,b)}};var s="async"in b?b.async:!0;r.open(b.type,b.url,s);for(v in b.headers)r.setRequestHeader(v,b.headers[v]);return g(r,b)===!1?(r.abort(),!1):(b.timeout>0&&(f=setTimeout(function(){r.onreadystatechange=k,r.abort(),i(null,"timeout",r,b)},b.timeout)),r.send(b.data?b.data:null),r)},ajax.active=0,ajax.JSONP=function(a){if(!("type"in a))return ajax(a);var b,c="jsonp"+ ++w,d=x.createElement("script"),e=function(){c in window&&(window[c]=k),j("abort",f,a)},f={abort:e},g=x.getElementsByTagName("head")[0]||x.documentElement;return a.error&&(d.onerror=function(){f.abort(),a.error()}),window[c]=function(d){clearTimeout(b),delete window[c],h(d,f,a)},n(a),d.src=a.url.replace(/=\?/,"="+c),g.insertBefore(d,g.firstChild),a.timeout>0&&(b=setTimeout(function(){f.abort(),j("timeout",f,a)},a.timeout)),f},ajax.settings={type:"GET",beforeSend:k,success:k,error:k,complete:k,context:null,global:!0,xhr:function(){return new window.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript",json:A,xml:"application/xml, text/xml",html:B,text:"text/plain"},crossDomain:!1,timeout:0},ajax.get=function(a,b){return ajax({url:a,success:b})},ajax.post=function(a,b,c,d){return"function"===r(b)&&(d=d||c,c=b,b=null),ajax({type:"POST",url:a,data:b,success:c,dataType:d})},ajax.getJSON=function(a,b){return ajax({url:a,success:b,dataType:"json"})};var D=encodeURIComponent},{"type-of":2}],2:[function(a,b){var c=Object.prototype.toString;b.exports=function(a){switch(c.call(a)){case"[object Function]":return"function";case"[object Date]":return"date";case"[object RegExp]":return"regexp";case"[object Arguments]":return"arguments";case"[object Array]":return"array";case"[object String]":return"string"}return null===a?"null":void 0===a?"undefined":a&&1===a.nodeType?"element":a===Object(a)?"object":typeof a}},{}]},{},[1]);
|
35
|
+
/*conekta.js v0.3.0 | 2013- Conekta | https://github.com/conekta/conekta.js/blob/master/LICENSE-MIT.txt
|
36
|
+
*/
|
37
|
+
|
38
|
+
(function() {
|
39
|
+
var Base64, base_url, fingerprint, i, publishable_key, session_id, useable_characters, _i;
|
40
|
+
|
41
|
+
base_url = 'https://api.conekta.io/';
|
42
|
+
|
43
|
+
publishable_key = null;
|
44
|
+
|
45
|
+
session_id = "";
|
46
|
+
|
47
|
+
useable_characters = "abcdefghijklmnopqrstuvwxyz0123456789";
|
48
|
+
|
49
|
+
for (i = _i = 0; _i <= 30; i = ++_i) {
|
50
|
+
session_id += useable_characters.charAt(Math.floor(Math.random() * 36));
|
51
|
+
}
|
52
|
+
|
53
|
+
fingerprint = function() {
|
54
|
+
var add_swf, body, fingerprint_png_img, fingerprint_png_p, fingerprint_script;
|
55
|
+
if (typeof document !== 'undefined' && typeof document.body !== 'undefined' && document.body && (document.readyState === 'interactive' || document.readyState === 'complete')) {
|
56
|
+
body = document.getElementsByTagName('body')[0];
|
57
|
+
fingerprint_png_p = document.createElement('p');
|
58
|
+
fingerprint_png_p.setAttribute("style", "background:url(https://h.online-metrix.net/fp/clear.png?org_id=k8vif92e&session_id=banorteixe_conekta" + session_id + "&m=1) ! important; display:none ! important;");
|
59
|
+
body.appendChild(fingerprint_png_p);
|
60
|
+
fingerprint_png_img = document.createElement('img');
|
61
|
+
fingerprint_png_img.setAttribute('style', 'display:none ! important;');
|
62
|
+
fingerprint_png_img.src = "https://h.online-metrix.net/fp/clear.png?org_id=k8vif92e&session_id=banorteixe_conekta" + session_id + "&m=2";
|
63
|
+
body.appendChild(fingerprint_png_img);
|
64
|
+
add_swf = function() {
|
65
|
+
var fingerprint_swf_object, fingerprint_swf_param;
|
66
|
+
fingerprint_swf_object = document.createElement('object');
|
67
|
+
fingerprint_swf_object.type = 'application/x-shockwave-flash';
|
68
|
+
fingerprint_swf_object.data = "https://h.online-metrix.net/fp/fp.swf?org_id=k8vif92e&session_id=banorteixe_conekta" + session_id;
|
69
|
+
fingerprint_swf_object.width = '1';
|
70
|
+
fingerprint_swf_object.setAttribute('style', 'display:none ! important;');
|
71
|
+
body.appendChild(fingerprint_swf_object);
|
72
|
+
fingerprint_swf_param = document.createElement('param');
|
73
|
+
fingerprint_swf_param.name = 'movie';
|
74
|
+
fingerprint_swf_param.setAttribute('style', 'display:none ! important;');
|
75
|
+
fingerprint_swf_param.value = 'https://h.online-metrix.net/fp/fp.swf?org_id=k8vif92e&session_id=merchant' + session_id;
|
76
|
+
if (typeof fingerprint_swf_param.appendChild === 'function') {
|
77
|
+
fingerprint_swf_param.appendChild(document.createElement('div'));
|
78
|
+
}
|
79
|
+
body.appendChild(fingerprint_swf_param);
|
80
|
+
};
|
81
|
+
if (navigator.userAgent.match(/MSIE [5-9]+/) && document.readyState !== 'complete') {
|
82
|
+
window.attachEvent("onload", add_swf);
|
83
|
+
} else {
|
84
|
+
add_swf();
|
85
|
+
}
|
86
|
+
fingerprint_script = document.createElement('script');
|
87
|
+
fingerprint_script.type = 'text/javascript';
|
88
|
+
fingerprint_script.src = 'https://h.online-metrix.net/fp/check.js?org_id=k8vif92e&session_id=banorteixe_conekta' + session_id;
|
89
|
+
body.appendChild(fingerprint_script);
|
90
|
+
} else {
|
91
|
+
setTimeout(fingerprint, 150);
|
92
|
+
}
|
93
|
+
};
|
94
|
+
|
95
|
+
fingerprint();
|
96
|
+
|
97
|
+
Base64 = {
|
98
|
+
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
|
99
|
+
encode: function(input) {
|
100
|
+
var chr1, chr2, chr3, enc1, enc2, enc3, enc4, output;
|
101
|
+
output = "";
|
102
|
+
chr1 = void 0;
|
103
|
+
chr2 = void 0;
|
104
|
+
chr3 = void 0;
|
105
|
+
enc1 = void 0;
|
106
|
+
enc2 = void 0;
|
107
|
+
enc3 = void 0;
|
108
|
+
enc4 = void 0;
|
109
|
+
i = 0;
|
110
|
+
input = Base64._utf8_encode(input);
|
111
|
+
while (i < input.length) {
|
112
|
+
chr1 = input.charCodeAt(i++);
|
113
|
+
chr2 = input.charCodeAt(i++);
|
114
|
+
chr3 = input.charCodeAt(i++);
|
115
|
+
enc1 = chr1 >> 2;
|
116
|
+
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
|
117
|
+
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
|
118
|
+
enc4 = chr3 & 63;
|
119
|
+
if (isNaN(chr2)) {
|
120
|
+
enc3 = enc4 = 64;
|
121
|
+
} else {
|
122
|
+
if (isNaN(chr3)) {
|
123
|
+
enc4 = 64;
|
124
|
+
}
|
125
|
+
}
|
126
|
+
output = output + Base64._keyStr.charAt(enc1) + Base64._keyStr.charAt(enc2) + Base64._keyStr.charAt(enc3) + Base64._keyStr.charAt(enc4);
|
127
|
+
}
|
128
|
+
return output;
|
129
|
+
},
|
130
|
+
decode: function(input) {
|
131
|
+
var chr1, chr2, chr3, enc1, enc2, enc3, enc4, output;
|
132
|
+
output = "";
|
133
|
+
chr1 = void 0;
|
134
|
+
chr2 = void 0;
|
135
|
+
chr3 = void 0;
|
136
|
+
enc1 = void 0;
|
137
|
+
enc2 = void 0;
|
138
|
+
enc3 = void 0;
|
139
|
+
enc4 = void 0;
|
140
|
+
i = 0;
|
141
|
+
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
|
142
|
+
while (i < input.length) {
|
143
|
+
enc1 = Base64._keyStr.indexOf(input.charAt(i++));
|
144
|
+
enc2 = Base64._keyStr.indexOf(input.charAt(i++));
|
145
|
+
enc3 = Base64._keyStr.indexOf(input.charAt(i++));
|
146
|
+
enc4 = Base64._keyStr.indexOf(input.charAt(i++));
|
147
|
+
chr1 = (enc1 << 2) | (enc2 >> 4);
|
148
|
+
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
|
149
|
+
chr3 = ((enc3 & 3) << 6) | enc4;
|
150
|
+
output = output + String.fromCharCode(chr1);
|
151
|
+
if (enc3 !== 64) {
|
152
|
+
output = output + String.fromCharCode(chr2);
|
153
|
+
}
|
154
|
+
if (enc4 !== 64) {
|
155
|
+
output = output + String.fromCharCode(chr3);
|
156
|
+
}
|
157
|
+
}
|
158
|
+
output = Base64._utf8_decode(output);
|
159
|
+
return output;
|
160
|
+
},
|
161
|
+
_utf8_encode: function(string) {
|
162
|
+
var c, n, utftext;
|
163
|
+
string = string.replace(/\r\n/g, "\n");
|
164
|
+
utftext = "";
|
165
|
+
n = 0;
|
166
|
+
while (n < string.length) {
|
167
|
+
c = string.charCodeAt(n);
|
168
|
+
if (c < 128) {
|
169
|
+
utftext += String.fromCharCode(c);
|
170
|
+
} else if ((c > 127) && (c < 2048)) {
|
171
|
+
utftext += String.fromCharCode((c >> 6) | 192);
|
172
|
+
utftext += String.fromCharCode((c & 63) | 128);
|
173
|
+
} else {
|
174
|
+
utftext += String.fromCharCode((c >> 12) | 224);
|
175
|
+
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
|
176
|
+
utftext += String.fromCharCode((c & 63) | 128);
|
177
|
+
}
|
178
|
+
n++;
|
179
|
+
}
|
180
|
+
return utftext;
|
181
|
+
},
|
182
|
+
_utf8_decode: function(utftext) {
|
183
|
+
var c, c1, c2, c3, string;
|
184
|
+
string = "";
|
185
|
+
i = 0;
|
186
|
+
c = c1 = c2 = 0;
|
187
|
+
while (i < utftext.length) {
|
188
|
+
c = utftext.charCodeAt(i);
|
189
|
+
if (c < 128) {
|
190
|
+
string += String.fromCharCode(c);
|
191
|
+
i++;
|
192
|
+
} else if ((c > 191) && (c < 224)) {
|
193
|
+
c2 = utftext.charCodeAt(i + 1);
|
194
|
+
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
|
195
|
+
i += 2;
|
196
|
+
} else {
|
197
|
+
c2 = utftext.charCodeAt(i + 1);
|
198
|
+
c3 = utftext.charCodeAt(i + 2);
|
199
|
+
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
|
200
|
+
i += 3;
|
201
|
+
}
|
202
|
+
}
|
203
|
+
return string;
|
204
|
+
}
|
205
|
+
};
|
206
|
+
|
207
|
+
window.Conekta = {
|
208
|
+
setPublishableKey: function(key) {
|
209
|
+
var e, s;
|
210
|
+
if (typeof key === 'string' && key.match(/^[a-zA-Z0-9_]*$/) && key.length >= 20 && key.length < 30) {
|
211
|
+
publishable_key = key;
|
212
|
+
} else {
|
213
|
+
Conekta._helpers.log('Unusable public key: ' + key);
|
214
|
+
}
|
215
|
+
},
|
216
|
+
getPublishableKey: function() {
|
217
|
+
return publishable_key;
|
218
|
+
},
|
219
|
+
_helpers: {
|
220
|
+
parseForm: function(charge_form) {
|
221
|
+
var all_inputs, attribute, attribute_name, attributes, charge, input, inputs, key, last_attribute, line_items, node, parent_node, selects, textareas, val, _j, _k, _l, _len, _len1, _m, _n, _ref, _ref1, _ref2;
|
222
|
+
charge = {};
|
223
|
+
if (typeof charge_form === 'object') {
|
224
|
+
if (typeof jQuery !== 'undefined' && (charge_form instanceof jQuery || 'jquery' in Object(charge_form))) {
|
225
|
+
charge_form = charge_form.get()[0];
|
226
|
+
}
|
227
|
+
if (charge_form.nodeType) {
|
228
|
+
textareas = charge_form.getElementsByTagName('textarea');
|
229
|
+
inputs = charge_form.getElementsByTagName('input');
|
230
|
+
selects = charge_form.getElementsByTagName('select');
|
231
|
+
all_inputs = new Array(textareas.length + inputs.length + selects.length);
|
232
|
+
for (i = _j = 0, _ref = textareas.length - 1; _j <= _ref; i = _j += 1) {
|
233
|
+
all_inputs[i] = textareas[i];
|
234
|
+
}
|
235
|
+
for (i = _k = 0, _ref1 = inputs.length - 1; _k <= _ref1; i = _k += 1) {
|
236
|
+
all_inputs[i + textareas.length] = inputs[i];
|
237
|
+
}
|
238
|
+
for (i = _l = 0, _ref2 = selects.length - 1; _l <= _ref2; i = _l += 1) {
|
239
|
+
all_inputs[i + textareas.length + inputs.length] = selects[i];
|
240
|
+
}
|
241
|
+
for (_m = 0, _len = all_inputs.length; _m < _len; _m++) {
|
242
|
+
input = all_inputs[_m];
|
243
|
+
if (input) {
|
244
|
+
attribute_name = input.getAttribute('data-conekta');
|
245
|
+
if (attribute_name) {
|
246
|
+
if (input.tagName === 'SELECT') {
|
247
|
+
val = input.value;
|
248
|
+
} else {
|
249
|
+
val = input.getAttribute('value') || input.innerHTML || input.value;
|
250
|
+
}
|
251
|
+
attributes = attribute_name.replace(/\]/g, '').replace(/\-/g, '_').split(/\[/);
|
252
|
+
parent_node = null;
|
253
|
+
node = charge;
|
254
|
+
last_attribute = null;
|
255
|
+
for (_n = 0, _len1 = attributes.length; _n < _len1; _n++) {
|
256
|
+
attribute = attributes[_n];
|
257
|
+
if (!node[attribute]) {
|
258
|
+
node[attribute] = {};
|
259
|
+
}
|
260
|
+
parent_node = node;
|
261
|
+
last_attribute = attribute;
|
262
|
+
node = node[attribute];
|
263
|
+
}
|
264
|
+
parent_node[last_attribute] = val;
|
265
|
+
}
|
266
|
+
}
|
267
|
+
}
|
268
|
+
} else {
|
269
|
+
charge = charge_form;
|
270
|
+
}
|
271
|
+
if (charge.details && charge.details.line_items && Object.prototype.toString.call(charge.details.line_items) !== '[object Array]' && typeof charge.details.line_items === 'object') {
|
272
|
+
line_items = [];
|
273
|
+
for (key in charge.details.line_items) {
|
274
|
+
line_items.push(charge.details.line_items[key]);
|
275
|
+
}
|
276
|
+
charge.details.line_items = line_items;
|
277
|
+
}
|
278
|
+
}
|
279
|
+
return charge;
|
280
|
+
},
|
281
|
+
getSessionId: function() {
|
282
|
+
return session_id;
|
283
|
+
},
|
284
|
+
xDomainPost: function(params) {
|
285
|
+
var error_callback, rpc, success_callback;
|
286
|
+
success_callback = function(data, textStatus, jqXHR) {
|
287
|
+
if (!data || (data.object === 'error')) {
|
288
|
+
return params.error(data || {
|
289
|
+
object: 'error',
|
290
|
+
type: 'api_error',
|
291
|
+
message: "Something went wrong on Conekta's end"
|
292
|
+
});
|
293
|
+
} else {
|
294
|
+
return params.success(data);
|
295
|
+
}
|
296
|
+
};
|
297
|
+
error_callback = function() {
|
298
|
+
return params.error({
|
299
|
+
object: 'error',
|
300
|
+
type: 'api_error',
|
301
|
+
message: 'Something went wrong, possibly a connectivity issue'
|
302
|
+
});
|
303
|
+
};
|
304
|
+
if (document.location.protocol === 'file:') {
|
305
|
+
params.url = (params.jsonp_url || params.url) + '/create.js';
|
306
|
+
params.data['_Version'] = "0.3.0";
|
307
|
+
params.data['_RaiseHtmlError'] = false;
|
308
|
+
params.data['auth_token'] = Conekta.getPublishableKey();
|
309
|
+
params.data['conekta_client_user_agent'] = '{"agent":"Conekta JavascriptBindings/0.3.0"}';
|
310
|
+
return ajax({
|
311
|
+
url: base_url + params.url,
|
312
|
+
dataType: 'jsonp',
|
313
|
+
data: params.data,
|
314
|
+
success: success_callback,
|
315
|
+
error: error_callback
|
316
|
+
});
|
317
|
+
} else {
|
318
|
+
if (typeof (new XMLHttpRequest()).withCredentials !== 'undefined') {
|
319
|
+
return ajax({
|
320
|
+
url: base_url + params.url,
|
321
|
+
type: 'POST',
|
322
|
+
dataType: 'json',
|
323
|
+
data: JSON.stringify(params.data),
|
324
|
+
contentType: 'application/json',
|
325
|
+
headers: {
|
326
|
+
'RaiseHtmlError': false,
|
327
|
+
'Accept': 'application/vnd.conekta-v0.3.0+json',
|
328
|
+
'Conekta-Client-User-Agent': '{"agent":"Conekta JavascriptBindings/0.3.0"}',
|
329
|
+
'Authorization': 'Basic ' + Base64.encode(Conekta.getPublishableKey() + ':')
|
330
|
+
},
|
331
|
+
success: success_callback,
|
332
|
+
error: error_callback
|
333
|
+
});
|
334
|
+
} else {
|
335
|
+
rpc = new easyXDM.Rpc({
|
336
|
+
swf: "https://conektaapi.s3.amazonaws.com/v0.3.0/flash/easyxdm.swf",
|
337
|
+
remote: base_url + "easyxdm_cors_proxy.html"
|
338
|
+
}, {
|
339
|
+
remote: {
|
340
|
+
request: {}
|
341
|
+
}
|
342
|
+
});
|
343
|
+
return rpc.request({
|
344
|
+
url: base_url + params.url,
|
345
|
+
method: 'POST',
|
346
|
+
headers: {
|
347
|
+
'RaiseHtmlError': false,
|
348
|
+
'Accept': 'application/vnd.conekta-v0.3.0+json',
|
349
|
+
'Conekta-Client-User-Agent': '{"agent":"Conekta JavascriptBindings/0.3.0"}',
|
350
|
+
'Authorization': 'Basic ' + Base64.encode(Conekta.getPublishableKey() + ':')
|
351
|
+
},
|
352
|
+
data: JSON.stringify(params.data)
|
353
|
+
}, success_callback, error_callback);
|
354
|
+
}
|
355
|
+
}
|
356
|
+
},
|
357
|
+
log: function(data) {
|
358
|
+
if (typeof console !== 'undefined' && console.log) {
|
359
|
+
return console.log(data);
|
360
|
+
}
|
361
|
+
}
|
362
|
+
}
|
363
|
+
};
|
364
|
+
|
365
|
+
}).call(this);
|
366
|
+
|
367
|
+
(function() {
|
368
|
+
Conekta.charge = {};
|
369
|
+
|
370
|
+
Conekta.charge.create = function(charge_form, success_callback, failure_callback) {
|
371
|
+
var charge;
|
372
|
+
if (typeof success_callback !== 'function') {
|
373
|
+
success_callback = Conekta._helpers.log;
|
374
|
+
}
|
375
|
+
if (typeof failure_callback !== 'function') {
|
376
|
+
failure_callback = Conekta._helpers.log;
|
377
|
+
}
|
378
|
+
charge = Conekta._helpers.parseForm(charge_form);
|
379
|
+
charge.session_id = Conekta._helpers.getSessionId();
|
380
|
+
if (charge.card && charge.card.address && !(charge.card.address.street1 || charge.card.address.street2 || charge.card.address.street3 || charge.card.address.city || charge.card.address.state || charge.card.address.country || charge.card.address.zip)) {
|
381
|
+
delete charge.card.address;
|
382
|
+
}
|
383
|
+
if (typeof charge === 'object') {
|
384
|
+
return Conekta._helpers.xDomainPost({
|
385
|
+
jsonp_url: 'charges/create',
|
386
|
+
url: 'charges',
|
387
|
+
data: charge,
|
388
|
+
success: success_callback,
|
389
|
+
error: failure_callback
|
390
|
+
});
|
391
|
+
} else {
|
392
|
+
return failure_callback({
|
393
|
+
'object': 'error',
|
394
|
+
'type': 'invalid_request_error',
|
395
|
+
'message': "Supplied parameter 'charge' is not a javascript object"
|
396
|
+
});
|
397
|
+
}
|
398
|
+
};
|
399
|
+
|
400
|
+
}).call(this);
|
401
|
+
|
402
|
+
(function() {
|
403
|
+
var accepted_cards, card_types, get_card_type, is_valid_length, is_valid_luhn, parseMonth, parseYear,
|
404
|
+
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
|
405
|
+
|
406
|
+
card_types = [
|
407
|
+
{
|
408
|
+
name: 'amex',
|
409
|
+
pattern: /^3[47]/,
|
410
|
+
valid_length: [15]
|
411
|
+
}, {
|
412
|
+
name: 'diners_club_carte_blanche',
|
413
|
+
pattern: /^30[0-5]/,
|
414
|
+
valid_length: [14]
|
415
|
+
}, {
|
416
|
+
name: 'diners_club_international',
|
417
|
+
pattern: /^36/,
|
418
|
+
valid_length: [14]
|
419
|
+
}, {
|
420
|
+
name: 'jcb',
|
421
|
+
pattern: /^35(2[89]|[3-8][0-9])/,
|
422
|
+
valid_length: [16]
|
423
|
+
}, {
|
424
|
+
name: 'laser',
|
425
|
+
pattern: /^(6304|670[69]|6771)/,
|
426
|
+
valid_length: [16, 17, 18, 19]
|
427
|
+
}, {
|
428
|
+
name: 'visa_electron',
|
429
|
+
pattern: /^(4026|417500|4508|4844|491(3|7))/,
|
430
|
+
valid_length: [16]
|
431
|
+
}, {
|
432
|
+
name: 'visa',
|
433
|
+
pattern: /^4/,
|
434
|
+
valid_length: [16]
|
435
|
+
}, {
|
436
|
+
name: 'mastercard',
|
437
|
+
pattern: /^5[1-5]/,
|
438
|
+
valid_length: [16]
|
439
|
+
}, {
|
440
|
+
name: 'maestro',
|
441
|
+
pattern: /^(5018|5020|5038|6304|6759|676[1-3])/,
|
442
|
+
valid_length: [12, 13, 14, 15, 16, 17, 18, 19]
|
443
|
+
}, {
|
444
|
+
name: 'discover',
|
445
|
+
pattern: /^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)/,
|
446
|
+
valid_length: [16]
|
447
|
+
}
|
448
|
+
];
|
449
|
+
|
450
|
+
is_valid_luhn = function(number) {
|
451
|
+
var digit, n, sum, _i, _len, _ref;
|
452
|
+
sum = 0;
|
453
|
+
_ref = number.split('').reverse();
|
454
|
+
for (n = _i = 0, _len = _ref.length; _i < _len; n = ++_i) {
|
455
|
+
digit = _ref[n];
|
456
|
+
digit = +digit;
|
457
|
+
if (n % 2) {
|
458
|
+
digit *= 2;
|
459
|
+
if (digit < 10) {
|
460
|
+
sum += digit;
|
461
|
+
} else {
|
462
|
+
sum += digit - 9;
|
463
|
+
}
|
464
|
+
} else {
|
465
|
+
sum += digit;
|
466
|
+
}
|
467
|
+
}
|
468
|
+
return sum % 10 === 0;
|
469
|
+
};
|
470
|
+
|
471
|
+
is_valid_length = function(number, card_type) {
|
472
|
+
var _ref;
|
473
|
+
return _ref = number.length, __indexOf.call(card_type.valid_length, _ref) >= 0;
|
474
|
+
};
|
475
|
+
|
476
|
+
accepted_cards = ['visa', 'mastercard', 'maestro', 'visa_electron', 'amex', 'laser', 'diners_club_carte_blanche', 'diners_club_international', 'discover', 'jcb'];
|
477
|
+
|
478
|
+
get_card_type = function(number) {
|
479
|
+
var card, card_type, _i, _len, _ref;
|
480
|
+
_ref = (function() {
|
481
|
+
var _j, _len, _ref, _results;
|
482
|
+
_results = [];
|
483
|
+
for (_j = 0, _len = card_types.length; _j < _len; _j++) {
|
484
|
+
card = card_types[_j];
|
485
|
+
if (_ref = card.name, __indexOf.call(accepted_cards, _ref) >= 0) {
|
486
|
+
_results.push(card);
|
487
|
+
}
|
488
|
+
}
|
489
|
+
return _results;
|
490
|
+
})();
|
491
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
492
|
+
card_type = _ref[_i];
|
493
|
+
if (number.match(card_type.pattern)) {
|
494
|
+
return card_type;
|
495
|
+
}
|
496
|
+
}
|
497
|
+
return null;
|
498
|
+
};
|
499
|
+
|
500
|
+
parseMonth = function(month) {
|
501
|
+
if (typeof month === 'string' && month.match(/^[\d]{1,2}$/)) {
|
502
|
+
return parseInt(month);
|
503
|
+
} else {
|
504
|
+
return month;
|
505
|
+
}
|
506
|
+
};
|
507
|
+
|
508
|
+
parseYear = function(year) {
|
509
|
+
if (typeof year === 'number' && year < 100) {
|
510
|
+
year += 2000;
|
511
|
+
}
|
512
|
+
if (typeof year === 'string' && year.match(/^([\d]{2,2}|20[\d]{2,2})$/)) {
|
513
|
+
if (year.match(/^([\d]{2,2})$/)) {
|
514
|
+
year = '20' + year;
|
515
|
+
}
|
516
|
+
return parseInt(year);
|
517
|
+
} else {
|
518
|
+
return year;
|
519
|
+
}
|
520
|
+
};
|
521
|
+
|
522
|
+
Conekta.card = {};
|
523
|
+
|
524
|
+
Conekta.card.getBrand = function(number) {
|
525
|
+
var brand;
|
526
|
+
if (typeof number === 'string') {
|
527
|
+
number = number.replace(/[ -]/g, '');
|
528
|
+
} else if (typeof number === 'number') {
|
529
|
+
number = toString(number);
|
530
|
+
}
|
531
|
+
brand = get_card_type(number);
|
532
|
+
if (brand && brand.name) {
|
533
|
+
return brand.name;
|
534
|
+
}
|
535
|
+
return null;
|
536
|
+
};
|
537
|
+
|
538
|
+
Conekta.card.validateCVC = function(cvc) {
|
539
|
+
return (typeof cvc === 'number' && cvc >= 0 && cvc < 10000) || (typeof cvc === 'string' && cvc.match(/^[\d]{3,4}$/) !== null);
|
540
|
+
};
|
541
|
+
|
542
|
+
Conekta.card.validateExpMonth = function(exp_month) {
|
543
|
+
var month;
|
544
|
+
month = parseMonth(exp_month);
|
545
|
+
return typeof month === 'number' && month > 0 && month < 13;
|
546
|
+
};
|
547
|
+
|
548
|
+
Conekta.card.validateExpYear = function(exp_year) {
|
549
|
+
var year;
|
550
|
+
year = parseYear(exp_year);
|
551
|
+
return typeof year === 'number' && year > 2013 && year < 2035;
|
552
|
+
};
|
553
|
+
|
554
|
+
Conekta.card.validateExpirationDate = function(exp_month, exp_year) {
|
555
|
+
var month, year;
|
556
|
+
month = parseMonth(exp_month);
|
557
|
+
year = parseYear(exp_year);
|
558
|
+
if ((typeof month === 'number' && month > 0 && month < 13) && (typeof year === 'number' && year > 2013 && year < 2035)) {
|
559
|
+
return Date.parse(month + '/' + new Date(year, month, 0).getDate() + '/' + year) > Date.now();
|
560
|
+
} else {
|
561
|
+
return false;
|
562
|
+
}
|
563
|
+
};
|
564
|
+
|
565
|
+
Conekta.card.validateExpiry = function(exp_month, exp_year) {
|
566
|
+
return Conekta.card.validateExpirationDate(exp_month, exp_year);
|
567
|
+
};
|
568
|
+
|
569
|
+
Conekta.card.validateName = function(name) {
|
570
|
+
return typeof name === 'string' && name.match(/^\s*[A-z]+\s+[A-z]+[\sA-z]*$/) !== null && name.match(/visa|master\s*card|amex|american\s*express|banorte|banamex|bancomer|hsbc|scotiabank|jcb|diners\s*club|discover/i) === null;
|
571
|
+
};
|
572
|
+
|
573
|
+
Conekta.card.validateNumber = function(number) {
|
574
|
+
var card_type, length_valid, luhn_valid;
|
575
|
+
if (typeof number === 'string') {
|
576
|
+
number = number.replace(/[ -]/g, '');
|
577
|
+
} else if (typeof number === 'number') {
|
578
|
+
number = number.toString();
|
579
|
+
} else {
|
580
|
+
number = "";
|
581
|
+
}
|
582
|
+
card_type = get_card_type(number);
|
583
|
+
luhn_valid = false;
|
584
|
+
length_valid = false;
|
585
|
+
if (card_type != null) {
|
586
|
+
luhn_valid = is_valid_luhn(number);
|
587
|
+
length_valid = is_valid_length(number, card_type);
|
588
|
+
}
|
589
|
+
return luhn_valid && length_valid;
|
590
|
+
};
|
591
|
+
|
592
|
+
}).call(this);
|
593
|
+
|
594
|
+
(function() {
|
595
|
+
Conekta.token = {};
|
596
|
+
|
597
|
+
Conekta.token.create = function(token_form, success_callback, failure_callback) {
|
598
|
+
var token;
|
599
|
+
if (typeof success_callback !== 'function') {
|
600
|
+
success_callback = Conekta._helpers.log;
|
601
|
+
}
|
602
|
+
if (typeof failure_callback !== 'function') {
|
603
|
+
failure_callback = Conekta._helpers.log;
|
604
|
+
}
|
605
|
+
token = Conekta._helpers.parseForm(token_form);
|
606
|
+
if (token.card) {
|
607
|
+
token.card.device_fingerprint = Conekta._helpers.getSessionId();
|
608
|
+
} else {
|
609
|
+
failure_callback({
|
610
|
+
'object': 'error',
|
611
|
+
'type': 'invalid_request_error',
|
612
|
+
'message': "The form or hash has no attributes 'card'. If you are using a form, please ensure that you have have an input or text area with the data-conekta attribute 'card[number]'. For an example form see: https://github.com/conekta/conekta.js/blob/master/examples/credit_card.html"
|
613
|
+
});
|
614
|
+
}
|
615
|
+
if (token.card && token.card.address && !(token.card.address.street1 || token.card.address.street2 || token.card.address.street3 || token.card.address.city || token.card.address.state || token.card.address.country || token.card.address.zip)) {
|
616
|
+
delete token.card.address;
|
617
|
+
}
|
618
|
+
if (typeof token === 'object') {
|
619
|
+
return Conekta._helpers.xDomainPost({
|
620
|
+
jsonp_url: 'tokens/create',
|
621
|
+
url: 'tokens',
|
622
|
+
data: token,
|
623
|
+
success: success_callback,
|
624
|
+
error: failure_callback
|
625
|
+
});
|
626
|
+
} else {
|
627
|
+
return failure_callback({
|
628
|
+
'object': 'error',
|
629
|
+
'type': 'invalid_request_error',
|
630
|
+
'message': "Supplied parameter 'token' is not a javascript object or a form"
|
631
|
+
});
|
632
|
+
}
|
633
|
+
};
|
634
|
+
|
635
|
+
}).call(this);
|