From 88f9fd1870e814826bc596d161de48cb35517440 Mon Sep 17 00:00:00 2001 From: Luiz Felipe Weber Date: Wed, 5 Jul 2017 22:38:13 -0300 Subject: [PATCH] Commit inicial dos arquivos --- admin/elements/Thumbs.db | Bin 0 -> 3072 bytes admin/elements/asset.php | 22 + admin/elements/index.html | 1 + admin/elements/loader.gif | Bin 0 -> 1849 bytes admin/elements/style.css | 101 + admin/elements/vmabouttransparente.php | 45 + admin/elements/vmasset.php | 34 + admin/elements/vmbar.php | 43 + admin/elements/vmconfiguracao.php | 44 + admin/elements/vmradiocard.php | 104 + admin/elements/vmspacer.php | 38 + admin/index.html | 1 + admin/script.js | 69 + admin/style.css | 13 + admin/switch.gif | Bin 0 -> 1233 bytes admin/switch2.gif | Bin 0 -> 1233 bytes assets/css/SqueezeBox.css | 141 + assets/css/card.css | 279 ++ assets/css/css_pagamento.css | 1 + assets/css/index.html | 0 assets/css/style.css | 425 +++ assets/css/tick.png | Bin 0 -> 626 bytes assets/images/Thumbs.db | Bin 0 -> 19456 bytes assets/images/bgtop.png | Bin 0 -> 1135 bytes assets/images/carregando.gif | Bin 0 -> 3951 bytes assets/images/default_cart.png | Bin 0 -> 3169 bytes assets/images/index.html | 0 assets/images/lock.png | Bin 0 -> 3999 bytes assets/images/notice-alert.png | Bin 0 -> 1225 bytes assets/images/notice-info.png | Bin 0 -> 1028 bytes assets/images/notice-note.png | Bin 0 -> 1315 bytes assets/images/question.svg | 75 + assets/images/topleft.png | Bin 0 -> 1949 bytes assets/images/topright.png | Bin 0 -> 3072 bytes assets/index.html | 0 assets/js/SqueezeBox.js | 435 ++++ assets/js/index.html | 0 assets/js/jquery.card.js | 132 + assets/js/jquery.mask.js | 19 + assets/js/pagsegurotransparente.js | 582 +++++ assets/js/validar_cartao.js | 44 + checkout_transparente_pagseguro.png | Bin 0 -> 62101 bytes gplv3-license.txt | 674 +++++ imagens/Thumbs.db | Bin 0 -> 51712 bytes imagens/amex_cartao.jpg | Bin 0 -> 1840 bytes imagens/aura_cartao.jpg | Bin 0 -> 4655 bytes imagens/banrisul_debito.jpg | Bin 0 -> 3435 bytes imagens/bb_debito.jpg | Bin 0 -> 4419 bytes imagens/boleto_bancario.jpg | Bin 0 -> 625 bytes imagens/bradesco_boleto_.jpg | Bin 0 -> 3125 bytes imagens/bradesco_debito.jpg | Bin 0 -> 11321 bytes imagens/carregando.gif | Bin 0 -> 3951 bytes imagens/diners_cartao.jpg | Bin 0 -> 1323 bytes imagens/discover_cartao.jpg | Bin 0 -> 1401 bytes imagens/elo_cartao.jpg | Bin 0 -> 1200 bytes imagens/hipercard_cartao.jpg | Bin 0 -> 2486 bytes imagens/hsbc_debito.jpg | Bin 0 -> 3039 bytes imagens/index.html | 0 imagens/itau_debito.jpg | Bin 0 -> 3654 bytes imagens/maestro_cartao.jpg | Bin 0 -> 4030 bytes imagens/master_cartao.jpg | Bin 0 -> 4103 bytes imagens/pagseguro.jpg | Bin 0 -> 17664 bytes imagens/selo_pagseguro.gif | Bin 0 -> 6812 bytes imagens/visa_cartao.jpg | Bin 0 -> 3495 bytes imagens/visa_electron_cartao.jpg | Bin 0 -> 3636 bytes index.html | 0 ...GB.plg_vmpayment_pagsegurotransparente.ini | 88 + language/index.html | 0 ...BR.plg_vmpayment_pagsegurotransparente.ini | 87 + licenca-gplv3.txt | 377 +++ pagsegurotransparente.php | 2290 +++++++++++++++++ pagsegurotransparente.xml | 275 ++ 72 files changed, 6439 insertions(+) create mode 100644 admin/elements/Thumbs.db create mode 100644 admin/elements/asset.php create mode 100644 admin/elements/index.html create mode 100644 admin/elements/loader.gif create mode 100644 admin/elements/style.css create mode 100644 admin/elements/vmabouttransparente.php create mode 100644 admin/elements/vmasset.php create mode 100644 admin/elements/vmbar.php create mode 100644 admin/elements/vmconfiguracao.php create mode 100644 admin/elements/vmradiocard.php create mode 100644 admin/elements/vmspacer.php create mode 100644 admin/index.html create mode 100644 admin/script.js create mode 100644 admin/style.css create mode 100644 admin/switch.gif create mode 100644 admin/switch2.gif create mode 100644 assets/css/SqueezeBox.css create mode 100644 assets/css/card.css create mode 100644 assets/css/css_pagamento.css create mode 100644 assets/css/index.html create mode 100644 assets/css/style.css create mode 100644 assets/css/tick.png create mode 100644 assets/images/Thumbs.db create mode 100644 assets/images/bgtop.png create mode 100644 assets/images/carregando.gif create mode 100644 assets/images/default_cart.png create mode 100644 assets/images/index.html create mode 100644 assets/images/lock.png create mode 100644 assets/images/notice-alert.png create mode 100644 assets/images/notice-info.png create mode 100644 assets/images/notice-note.png create mode 100644 assets/images/question.svg create mode 100644 assets/images/topleft.png create mode 100644 assets/images/topright.png create mode 100644 assets/index.html create mode 100644 assets/js/SqueezeBox.js create mode 100644 assets/js/index.html create mode 100644 assets/js/jquery.card.js create mode 100644 assets/js/jquery.mask.js create mode 100644 assets/js/pagsegurotransparente.js create mode 100644 assets/js/validar_cartao.js create mode 100644 checkout_transparente_pagseguro.png create mode 100644 gplv3-license.txt create mode 100644 imagens/Thumbs.db create mode 100644 imagens/amex_cartao.jpg create mode 100644 imagens/aura_cartao.jpg create mode 100644 imagens/banrisul_debito.jpg create mode 100644 imagens/bb_debito.jpg create mode 100644 imagens/boleto_bancario.jpg create mode 100644 imagens/bradesco_boleto_.jpg create mode 100644 imagens/bradesco_debito.jpg create mode 100644 imagens/carregando.gif create mode 100644 imagens/diners_cartao.jpg create mode 100644 imagens/discover_cartao.jpg create mode 100644 imagens/elo_cartao.jpg create mode 100644 imagens/hipercard_cartao.jpg create mode 100644 imagens/hsbc_debito.jpg create mode 100644 imagens/index.html create mode 100644 imagens/itau_debito.jpg create mode 100644 imagens/maestro_cartao.jpg create mode 100644 imagens/master_cartao.jpg create mode 100644 imagens/pagseguro.jpg create mode 100644 imagens/selo_pagseguro.gif create mode 100644 imagens/visa_cartao.jpg create mode 100644 imagens/visa_electron_cartao.jpg create mode 100644 index.html create mode 100644 language/en-GB.plg_vmpayment_pagsegurotransparente.ini create mode 100644 language/index.html create mode 100644 language/pt-BR.plg_vmpayment_pagsegurotransparente.ini create mode 100644 licenca-gplv3.txt create mode 100644 pagsegurotransparente.php create mode 100644 pagsegurotransparente.xml diff --git a/admin/elements/Thumbs.db b/admin/elements/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..9c618d789506c99e4b49190b778bac593b678fb7 GIT binary patch literal 3072 zcmca`Uhu)fjZzO8(10BSGsD0CoD6J8;*3Bx2!nwD0|OI~0pkDr|NlQkkbwcn90fxt z1pWfu3W`4vW`V}#5OV&gQz;CAAclM(EMZV!aAn8?(nSoFu&hiJEylnK&-3uI0f){8 z{+-)(W?y7v2FZg71_mPrQwB4Jc!nefO9o>g+mImRcNdp`vGB9W{ zFfk$r0ZxTz68Aub7nJ}x_EX7furZX_4~jETP=KNXl>b?Q7*yu712G2>a{@6J5OV`D zsEil|!z%a`SX!U}S`5?EkkJoEcb{nOT@w z*jZTEIoVm+Ik`E3fSZp81o#BO6c3bwaL`GRA&e|+Y&;x1Vmv%zB7A&&A|QfK1forl zC_@e~2y!q8FbFU+Dlsq#GBOJ?{y)MX4{VOG0$mGtFp$s0%)-jX&cVsW4OFmI09aZu zGc&O;v$C=PQ#)fVP@aKBkX1<0(2-3zFp*uUP{gQl;zAB(r;P_igD!qhF-|IK;^Yz& zmyncFRa4i{)G{$OGqmaka3YSZQ|TeofBv2)jv<^#JJdO3^ka#|?wsg&+>ImgF z=bckSJ>MQUX!H4Oh}oscJCci-dH9@GaETP3l$ox++~W1o*v=(W+7cTZ+?R2@eB=0U P3giEqz=S;t@P+^YX!xrs literal 0 HcmV?d00001 diff --git a/admin/elements/asset.php b/admin/elements/asset.php new file mode 100644 index 0000000..4bcd497 --- /dev/null +++ b/admin/elements/asset.php @@ -0,0 +1,22 @@ +addScript(JURI::root().$this->element['path'].'script.js'); + $doc->addStyleSheet(JURI::root().$this->element['path'].'style.css'); + return null; + } +} +/* eof */ \ No newline at end of file diff --git a/admin/elements/index.html b/admin/elements/index.html new file mode 100644 index 0000000..fa6d84e --- /dev/null +++ b/admin/elements/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/admin/elements/loader.gif b/admin/elements/loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..56ebc9a96eecff9cadc255d0300a9f8cebbb78d7 GIT binary patch literal 1849 zcmb8wYfw{X8VB&hIq%6iIhW)mA`Ou`Ap}iAV!|y%vF=F#L10;+3N4o<5yKh^HBb?@ zMI;x5AXlYYtXAD+TNG^pFSEUX7@5&-$6c9a)~UP9U}YU?*$VD<7RT&(o|+`D)0 z$&)8fpFW+Mnwp=V_cia|zyI*zL*)Odh<{6xYpj<2);-cX+y1>$ONFJra-U_-Cfl3k z`;drd0HJ)xMZBQ1Q+K|aY|KfG-K4{Ud@Z&A7C#cf>!eZ?EWK4 z+una7m-BLNB>(phOpfBDGk55lF&9LP z7~l7YEwOUR0gMBbyg?lYgfzthXK5r#@(^|pXi5OQxDzt^tpu93M*No-6lgi%x7axA z=FSu&`K1xIkF-rJjthddgJEX-Ub(m<*%HM`@%CGD_Vn{4c^VGYk8VdD-r83^A1qkt4LRYrD=w7Fg5u{G+!m(Et_OoX(cO-P8i;)>V2V1PX0JCT=zq+xex zx=1ZmO@5;jYd&Nbs=1E0uek zjhQu$L}Se=1`EV2=kj&D595v?(-&o5sYG4t=)1XHTFy1xsu4huBfbd&{N{N(j2E=$ zMgQ{)jfgn&_^SO9dHW;tWRBvvo^(Apds?!vOZ%ggPtqzia4P|(h}M?KDu33jJ*+am z(R1in8=cwP-d194)a%dcS8@S?l*;81iT%0A$Xko+eUz4UG&4GeV46P}bm>6k9Bz6g zJLw#A_jkcN-Kq0;;b`c`Yrn5v3nh>H|2Ay>fcbXUzRcLtg2JcM?fIT7F%`ck09I~) zZMs%lXZ}gEr@S%psOPx8_gLf#01pH-`T?J+eE_G7bS+9IRMg=l#-4XM3Uv=f>UjMp z&F7@!l8raZ`V{@4SZ@Z$g|EN<(v7R45Q#SCh7F5{tzPqJ{w0YAV5V=z@_~@8J?NH| z5d?0@wrLrngkY4)4h=yfS=P!!e1fjB9Yg@ZR#}UpS4g}-(l7m_9neSe%E+JoT|c4n z4#*Ny?;LkKxHN?#Yr~Yix`Hcg{>by}vtTLXeiFr90uZmeSg4djx4jZmP+cvKsY{(C zS^Yz;YE39X1SVzq5-OieF6NX$V%&=d%Y9E*dldhCzkIE724Yb4hndgswGIPH}{i|#L5`bf#)M7=Y>(u!TNeR-98JHkS@l1p@=^n4Y z9OtxL)M-RV)^=ajgbOBLJ~uAz1)Vot_VoA=i0AWR6l=o>Oem!6MR~FYKH83wf}TjK z59JH>xUI0RtWLEuC;tD|s55(2&#q0NM+S6fXv@i@dq?gL1-))?>^8^Gz1hE>_70eK zBhKBQ*N2bc>fswx!C_-PXNSKE9lNt;c2dC?5w}N&UX}uy zC{Jip(R?kAZ-IT$atu4Ls-Xfkwf9tYWOYiLnCh_sN}Yz%A7?Tap)M zRl#j7hfP=1eUi@RZ#RgyQq7L`D}N3X?Hy(c8a42X9`mG{&$Jx>p-D+4_zHnP=k$SKaRN%DV0%k>{1X(i+U literal 0 HcmV?d00001 diff --git a/admin/elements/style.css b/admin/elements/style.css new file mode 100644 index 0000000..cb0e329 --- /dev/null +++ b/admin/elements/style.css @@ -0,0 +1,101 @@ +/** +* Admin CSS file +* @package News Show Pro GK4 +* @Copyright (C) 2009-2011 Gavick.com +* @ All rights reserved +* @ Joomla! is Free Software +* @ Released under GNU/GPL License : http://www.gnu.org/copyleft/gpl.html +* @version $Revision: GK4 1.0 $ +**/ + +::-moz-selection { background: #d75307; color: #fff } +::selection { background: #d75307; color: #fff } +#jform_params_about_us-lbl, +#jform_params___field1-lbl, +label[id^=jform_params_gk_line_] { display: none; } +#jform_params_news_since_img { margin-top: 8px; } +.switcher-on, +.switcher-off { width:94px; height:27px; background:transparent url('switcher.png') no-repeat 0 0; cursor:pointer; float: left; margin-top: 3px; } +.switcher-off { background-position:-94px 0; } +span.unit { line-height:34px; } +span.readonly { padding: 20px; font-family: Arial; font-size:13px !important; font-weight: normal !important; text-align: justify; color: #4d4d4d; line-height: 24px; } +span.readonly h1 { clear:both; font-family: Georgia, sans-serif; font-size:38px; margin:30px 20px 23px; padding:0px 0px 24px 10px; color:#333; border-bottom: 1px solid #eee; font-weight: normal; } +span.readonly p { margin: 0 26px 10px } +span.readonly p a { color: #AB3F0A } +span.readonly p.homepage {margin-top: 30px} +span.readonly p.license { border-top: 1px solid #eee; font-size: 11px; margin: 30px 26px 0; padding: 6px 0; } +/* lines */ +.gkFormLine { background:#eee; clear:both; display:block; height:5px; margin: 0 -10px!important; } +.gkFormLine.hasText{ border-top: 10px solid #fff; border-bottom: 5px solid #fff; color: #999; font-size: 10px; line-height:1px; padding-left: 25px; cursor: pointer; } +.gkFormLine.hasText span{ padding: 3px; background: #fff; } +/* togglers */ +.pane-sliders .panel { border: none !important; } +div.panel > h3 { height: 43px; background: transparent url('interface.png') repeat-x 0 0 !important; border: 1px solid #d8d8d8; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; font: bold 12px/43px Arial, Helvetica, sans-serif; text-transform: uppercase; } +div.panel > h3 a { color: #333; text-shadow: 0 1px 1px #fff; } +div.panel > h3 a:hover, +div.panel h3.pane-toggler-down a { color: #ab3f0a } +div.panel h3.pane-toggler-down { border-bottom: 4px solid #d75307 !important } +.pane-toggler span { background: transparent url('j_arrow.png') no-repeat 5px 50% !important; } +.pane-toggler-down span { background: transparent url('j_arrow_down.png') no-repeat 5px 50% !important; } +.pane-sliders .content { margin: 4px auto; width: 99%; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } +.gkHelpLink { float: right !important; width: 22px; height: 22px; cursor: pointer; margin: 11px 12px 0 10px; background: transparent url('interface.png') repeat-x 0 100%; } +.gkHelpLink:hover { background-position: 0 -48px; } +/* form elements in the container */ +#jform_params_k2_tags {height: 150px} +.panel fieldset.panelform > ul > li > label { color: #444; font-size: 11px; font-weight: bold; height: 24px; line-height: 24px; padding: 0 20px 0 10px; text-align: right; max-width: 30%!important; min-width: 30%!important; } +.panel fieldset.panelform > ul > li fieldset { line-height:28px; } +fieldset.panelform input[type=radio] { margin-top: 11px; } +fieldset.panelform input { height: 16px; color: #555; line-height: 16px; padding: 4px; border-radius: 2px; -moz-border-radius: 2px; -webkit-border-radius: 2px; } +fieldset.panelform input.small { width: 40px; } +fieldset.panelform input.tright { text-align: right; } +fieldset.panelform input[type=button] { height: 26px; line-height: 26px; } +fieldset.panelform select { height: 26px; color: #555; line-height: 24px; padding: 4px; font-size:11px; border-radius: 2px; -moz-border-radius: 2px; -webkit-border-radius: 2px; } +fieldset.panelform select.position { width: 80px!important; } +fieldset.panelform textarea { padding: 4px; border-radius: 2px; -moz-border-radius: 2px; -webkit-border-radius: 2px; } +fieldset.panelform select[multiple=multiple] { height: 150px; } +/* lists */ +#tools_for_pages_input, +#google_analytics_input, +#menu_override_input, +#suffix_override_input, +#suffix_override_select, +#layout_override_input { width: 80px; } +.fltrt ul.adminformlist li { overflow: hidden; border-bottom: 1px solid #eee; padding: 1px 10px; margin: 0; } +.tools_for_pages_remove_rule, +.google_analytics_remove_rule, +.menu_override_remove_rule, +.suffix_override_remove_rule, +.module_override_remove_rule, +.layout_override_remove_rule { float: right; } +fieldset.panelform .label { font-size: 11px; font-weight: bold; width: auto; padding: 0 5px; line-height:34px; } +fieldset.panelform .desc { font-size: 11px; font-weight: normal; width: auto; padding: 10px; } +/* Updates */ +#gk_module_updates { margin: 20px -10px 0; border-right: 1px solid #eee } +#gk_module_updates li { margin: 0; padding: 0; border: none; line-height: 34px; color: #555; border-top: 1px solid #eee } +#gk_module_updates li span strong { padding: 0 12px 0 0 } +#gk_module_updates li span { display: block; float: left; height: 34px; line-height: 34px; padding: 0 0 0 20px; border-left: 1px solid #eee } +span.gk_update_version { width: 110px; background: #fff9f6; } +span.gk_update_data { width: 150px; background: #f9f9f9; } +span.gk_update_link a { padding: 4px 12px; -moz-border-radius: 26px; background: #d75307; text-transform: uppercase; font: bold 10px Arial, Helvetica, sans-serif; color: #fff; line-height: 34px; } +span.gk_update_link a:hover { background: #222; text-decoration: none; } +#gk_module_updates p { color: #555 } +/* 1.7 new CSS rules */ +#simple_crop { width: 321px; float: left} +#simple_crop_top_wrap, +#simple_crop_bottom_wrap, +#simple_crop_left_wrap, +#simple_crop_right_wrap { width: 46px; line-height: 36px } +#simple_crop_top_wrap, +#simple_crop_bottom_wrap { margin: 0 auto; } +#simple_crop_left_wrap, +#simple_crop_right_wrap { float: left; margin-top: 90px; } +#simple_crop_left_wrap { margin-right: 10px; } +#simple_crop_right_wrap { margin-left: 10px; } +#simple_crop_top, +#simple_crop_bottom, +#simple_crop_left, +#simple_crop_right { font-size: 12px; width: 24px; margin-right:2px;} +#simple_crop_main_wrap { clear: both; overflow: hidden; } +#simple_crop_bg { width: 202px; height: 202px; border: 3px solid #eee; background: url('cropbg.jpg') no-repeat; float:left; } +#simple_crop_crop { width: 200px; height: 200px; border: 1px solid #ddd; background: #fff; opacity: 0.5; filter:alpha(opacity=50); } +#paramscrop_rules { width: 90%; height: 120px; } \ No newline at end of file diff --git a/admin/elements/vmabouttransparente.php b/admin/elements/vmabouttransparente.php new file mode 100644 index 0000000..b6ee12d --- /dev/null +++ b/admin/elements/vmabouttransparente.php @@ -0,0 +1,45 @@ +getAttribute('path'); + + $doc = JFactory::getDocument(); + $html = '
+
+

Pagseguro Transparente - VirtueMart 3.0

+
Contato: Weber TI
+
'; + return $html; + } + +} \ No newline at end of file diff --git a/admin/elements/vmasset.php b/admin/elements/vmasset.php new file mode 100644 index 0000000..a3127e0 --- /dev/null +++ b/admin/elements/vmasset.php @@ -0,0 +1,34 @@ +addScript(JURI::root().$node->attributes('path').'script.js'); + $doc->addStyleSheet(JURI::root().$node->attributes('path').'style.css'); + return null; + } +} +/* eof */ \ No newline at end of file diff --git a/admin/elements/vmbar.php b/admin/elements/vmbar.php new file mode 100644 index 0000000..a0927c2 --- /dev/null +++ b/admin/elements/vmbar.php @@ -0,0 +1,43 @@ +"; + return $html; + } + +} \ No newline at end of file diff --git a/admin/elements/vmconfiguracao.php b/admin/elements/vmconfiguracao.php new file mode 100644 index 0000000..9a2db59 --- /dev/null +++ b/admin/elements/vmconfiguracao.php @@ -0,0 +1,44 @@ +getPayment(); + $url = JURI::root().'index.php?option=com_virtuemart&view=pluginresponse&task=plugin&tmpl=component&task=pluginresponsereceived&pm='.$pagamento->virtuemart_paymentmethod_id.'&nasp=1'; + $html = '
'.$url.'
'; + $html .= '
Copie esta url acima e configure neste link
'; + return $html; + } + +} \ No newline at end of file diff --git a/admin/elements/vmradiocard.php b/admin/elements/vmradiocard.php new file mode 100644 index 0000000..4d092bc --- /dev/null +++ b/admin/elements/vmradiocard.php @@ -0,0 +1,104 @@ +_attributes['path'].DS.'imagens'.DS.$nome_imagem.'_cartao.jpg" border="0"/>'; + + $output = ''; + $output .= $img_cartao.''; + + return $output; + } + + protected function getInput() { + + $html = array(); + // Initialize some field attributes. + //$class = $node->element['class'] ? ' class="radio ' . (string) $node->element['class'] . '"' : ' class="radio"'; + // Start the radio field output. + //$html[] = '
'; + // Initialize variables. + $options = array(); + foreach ($node->option as $option) { + // Create a new option object based on the
'; + return $retorno; + } +} +/* eof */ \ No newline at end of file diff --git a/admin/elements/vmspacer.php b/admin/elements/vmspacer.php new file mode 100644 index 0000000..f67198b --- /dev/null +++ b/admin/elements/vmspacer.php @@ -0,0 +1,38 @@ +".$this->value.""; + return $html; + } + +} \ No newline at end of file diff --git a/admin/index.html b/admin/index.html new file mode 100644 index 0000000..fa6d84e --- /dev/null +++ b/admin/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/admin/script.js b/admin/script.js new file mode 100644 index 0000000..aac257a --- /dev/null +++ b/admin/script.js @@ -0,0 +1,69 @@ +/** +* MoIP VirtueMart 2.0.x +**/ + +// botão sim/não +jQuery(document).ready( function(){ + jQuery(".cb-enable").click(function(){ + var parent = jQuery(this).parents('.switch'); + jQuery('.cb-disable',parent).removeClass('selected'); + jQuery(this).addClass('selected'); + jQuery('.checkbox',parent).attr('checked', true); + }); + jQuery(".cb-disable").click(function(){ + var parent = jQuery(this).parents('.switch'); + jQuery('.cb-enable',parent).removeClass('selected'); + jQuery(this).addClass('selected'); + jQuery('.checkbox',parent).attr('checked', false); + }); + + verifica_boleto(); + verifica_cartao(); + verifica_debito(); +}); + + +// esconder/mostrar ao ativar boleto +jQuery('input[name=ativar_boleto]').live('change',function(){ + verifica_boleto(); +}); +// esconder mostrar ativar cartao +jQuery('input[name=ativar_cartao]').live('change',function(){ + verifica_cartao(); +}); +// esconder mostrar ativar cartao +jQuery('input[name=ativar_debito]').live('change',function(){ + verifica_debito(); +}); + +function verifica_boleto() { + var campo = jQuery('input[name=boleto]').parent().parent().parent(); + if (jQuery('input[name=ativar_boleto]:checked').val()=='1') { + campo.prev().show(); + campo.show(); + } else { + campo.hide(); + campo.prev().hide(); + } + //alert(jQuery('input[name=ativar_boleto]:checked').val()) +} +function verifica_cartao() { + var campo = jQuery('input[name=cartao_visa],input[name=cartao_master],input[name=cartao_hipercard],input[name=cartao_diners],input[name=cartao_amex],input[name=cartao_aura]').parent().parent().parent(); + if (jQuery('input[name=ativar_cartao]:checked').val()=='1') { + campo.prev().show(); + campo.show(); + } else { + campo.hide(); + campo.prev().hide(); + } +} +function verifica_debito() { + var campo = jQuery('input[name=debito_bb],input[name=debito_bradesco],input[name=debito_banrisul],input[name=debito_itau],input[name=debito_hsbc]').parent().parent().parent(); + if (jQuery('input[name=ativar_debito]:checked').val()=='1') { + campo.prev().show(); + campo.show(); + } else { + campo.hide(); + campo.prev().hide(); + } +} \ No newline at end of file diff --git a/admin/style.css b/admin/style.css new file mode 100644 index 0000000..ad5237b --- /dev/null +++ b/admin/style.css @@ -0,0 +1,13 @@ +/* Used for the Switch effect: */ +.cb-enable, .cb-disable, .cb-enable span, .cb-disable span { background: url(switch.gif) repeat-x; display: block; float: left; } +.switch2 ,.switch2 span { background: url(switch2.gif) repeat-x; display: block; float: left; } +.cb-enable span, .cb-disable span { line-height: 30px; display: block; background-repeat: no-repeat; font-weight: bold; } +.cb-enable span { background-position: left -90px; padding: 0 10px; } +.cb-disable span { background-position: right -180px;padding: 0 10px; } +.cb-disable.selected { background-position: 0 -30px; } +.cb-disable.selected span { background-position: right -210px; color: #fff; } +.cb-enable.selected { background-position: 0 -60px; } +.cb-enable.selected span { background-position: left -150px; color: #fff; } +.switch label { cursor: pointer; } +.switch input { display: none; } +.paramlist h3 { margin: 0px; padding: 0px; margin-bottom: 2px; margin-top: 2px} diff --git a/admin/switch.gif b/admin/switch.gif new file mode 100644 index 0000000000000000000000000000000000000000..170f13b976b84fb391c225ac14faa9cbcdf41425 GIT binary patch literal 1233 zcmV;?1TOnWNk%w1VFdsV0pv@YvYceX$+V($Zv;7eZ|fb(<)LhK7QIf>L`Ed8!{va}s>6Aocb2 zX`dJA>FI5r8gHZ+ai$n{c6Mo*8C!)F-rnA1WMqwvjf8}RfPjFLvR8SRO>&$cRaI3{ zg%4eg6;g%}h=_=Bp&X6CCt+b>hPxhQniW`%5?6v0UWgWae0*?laC&-rkB^UPYHD(F za&B&JbaZroe}8OjYlpswj+eO9+Z@n zh`b+$xgSq~50R0PXJ==Jxg^BI#NgoIb*3H9&(DFfB4CgebEF-AupxuC9<05T$jHd7 ztgQ0#@^zpfZkrms&Y7^okIvY?)!)N_u^w256L6y#dZZzLr80c49d4K%fu2`*ryYj0 zC3>zLSbrc~f+l5_7gc~1o3>$suq1-CBV3OY)z#Ja_xEOIX88E{A^8LV00000EC2ui z00jUJ0RRX8fB=GmOofFGh=_lSjE#*pK+(}Y)YLlH*FW0YLfzdx z;NV2#<5cG6CF$zxEbZ+L@bD1x^HKKpQ2F^Z{QOS;|GWqkNT6Urdh?DbR9K{8Ln9C& zBAGZ5ghh)VGG<)Dkt2tXACrg_S)*i0B`8rcSh+HQ%a<^1$dq}Yrp=o#a^`Holc$uQ zKPLzkx~M}ID}P8>$wFcP7$%7LJlN3ZPXsZHB2-<(XX~G?jKFgBD)uYcvtiMWP0Mzz zTeEHd;l7>9hy)2n4)_dU)Pc_x2a5(=d9dg~feL>Bgve3h!43qc3Rpm8fd{G_mQP`x zwZoQ)5V%6XC0r3UtcSdbpaau89r!%wpzex8+(24qGxA2YD&Sg`HK0&hYV zgzGWG4>=19{78?mpt+wvVOUgOl%+z6MP(>7_>)2c84P74#7X0Y0vYx+Bw+BuFToLj z3EU76m|%{<1Vzw;gAogj0D?mXMs&j(6y4y#MHg_O(FI9#bU_UuU0}yZ1~6b!hbbAb z2TKOn@X`baoOr-Y6TD#41X9?PfdM*w0b@>os4#&6QY`WX9TP0o!6GCabr&K`fU#Hq z9~(Tt2P0xcz(^lbF4D)7R$}?bl~ZcTWtLrr3FeqvdTFMZWup0Inq)Rv*Ij=Mzy~5% z@G;~ASM2r22?Y@LM+G^A0KgxoAh5#&Pn=>w0jTgW*(p41CQA;UJyr^6q`(kDFQx5r zf)Ac)atpIHZAg%yoj7x46=vFaC6YMszLc4mb zpvAmeywSzIUA&>ez8W-u!M_;z3vdHi6pTdzTqMjz0x>ikLjoQ|>;VoEPb|VN#UhM= vu?RQV;jtYzNFcHVcWhzu78jiC0v#^2e1{4xt8u{@G8;f`9dMknNFV?^QtvKs literal 0 HcmV?d00001 diff --git a/admin/switch2.gif b/admin/switch2.gif new file mode 100644 index 0000000000000000000000000000000000000000..3e77297b9f959d19528710f819a4e9ebf53d3e0b GIT binary patch literal 1233 zcmV;?1TOnWNk%w1VFdsV0p1AW>!I<>eSuj4XMnRaI3SSBBEk($CM&?(XgwQiqh3 zlo(f)XJ=($>EPht_4V~0W~C-`s3K^bD0HeFQFO$_#4vrQ zo12>*W1}2mpd)3M99DlFRCyUteXOjkti6;YbE$}kh=72A9#C*FTw`vSkJaD9ZjN8_ z^71%#oXE(?u)~iWVV59clP+wMgoK2=&Y8~Gza?#+EqbVaq>C6}qa;vNIAUWTYpHse zV*p3enLB)YJsm*9qF%58d4d z;NT47<3Q%-3+d|XIPL8p@bD7z^Fj9ZMEUtE{QM~Y|1by?SfXG-dh=G%a<@c$doCdrp=oca^@7mlc$TH zKPdP)sY(T>2kB%^mbW~l`XX~G?jKFgBD)uYcvtiMWP0Mzz zTeEHd;l7>92nGyB4*Kw5WTej#2a9+d*|2B>lstc800@w0!vH;}px{A;rvRz|mQP`x zHNX}G0Js2XDW#wnf?foIr3RLOScC(|0x(cEz)!OVex5CmrXWK#1R1aqn6NFu1aA)} zggcPI4>>#&{7Ba^p}C(wS8!Bcv?I@gMQP4__~T_pnF?uU(8+?~Od0koW>mnyF9!*L zIp&lQm?MtC94631MFofI)!_E-ZpY7ZfaI#3C>pbr&KvjIkI0 zA4qJ_2P0wVzz82wF2cu?R$}?bl~ZcTWtLrr3FeqvdTFMZWup0Inq)Rv*Ij?`&<7$% z^fBZHN9^?n8c-1SM;-wH5W^p*=rO9p{a5;Y>h|AJ+LX!4}eGFo6!j;&8wGRr_M9CE0!NFV?^4ap}G literal 0 HcmV?d00001 diff --git a/assets/css/SqueezeBox.css b/assets/css/SqueezeBox.css new file mode 100644 index 0000000..1295f6e --- /dev/null +++ b/assets/css/SqueezeBox.css @@ -0,0 +1,141 @@ +/** + * SqueezeBox - Expandable Lightbox + * + * Allows to open various content as modal, + * centered and animated box. + * + * @version 1.1 rc4 + * + * @license MIT-style license + * @author Harald Kirschner + * @copyright Author + */ + +#sbox-overlay { + position: absolute; + background-color: #000; + left: 0px; + top: 0px; + zoom: 1; +} + +#sbox-window { + position: absolute; + background-color: #fff; + text-align: left; + overflow: visible; + padding: 10px; + /* invalid values, but looks smoother! */ + -moz-border-radius: 3px; + -webkit-border-radius: 3px; +} + +#sbox-btn-close { + position: absolute; + width: 30px; + height: 30px; + right: -15px; + top: -15px; + background: url(closebox.png) no-repeat center; + border: none; +} + +.sbox-window-ie6 #sbox-btn-close { + background-image: url(closebox.gif); +} + +.sbox-loading #sbox-content { + background-image: url(spinner.gif); + background-repeat: no-repeat; + background-position: center; +} + +#sbox-content { + clear: both; + overflow: auto; + background-color: #fff; + height: 100%; + width: 100%; +} + +.sbox-content-image#sbox-content { + overflow: visible; +} + +#sbox-image { + display: block; +} + +.sbox-content-image img { + display: block; + width: 100%; + height: 100%; +} + +.sbox-content-iframe#sbox-content { + overflow: visible; +} + +/* Hides scrollbars */ +.body-overlayed { + overflow: hidden; +} +/* Hides flash (Firefox problem) and selects (IE) */ +.body-overlayed embed, .body-overlayed object, .body-overlayed select { + visibility: hidden; +} +#sbox-window embed, #sbox-window object, #sbox-window select { + visibility: visible; +} + +/* Shadows */ +.sbox-bg { + position: absolute; + width: 33px; + height: 40px; +} + +.sbox-bg-n { + left: 0; + top: -40px; + width: 100%; + background: url(bg_n.png) repeat-x; +} +.sbox-bg-ne { + right: -33px; + top: -40px; + background: url(bg_ne.png) no-repeat; +} +.sbox-bg-e { + right: -33px; + top: 0; + height: 100%; + background: url(bg_e.png) repeat-y; +} +.sbox-bg-se { + right: -33px; + bottom: -40px; + background: url(bg_se.png) no-repeat; +} +.sbox-bg-s { + left: 0; + bottom: -40px; + width: 100%; + background: url(bg_s.png) repeat-x; +} +.sbox-bg-sw { + left: -33px; + bottom: -40px; + background: url(bg_sw.png) no-repeat; +} +.sbox-bg-w { + left: -33px; + top: 0; + height: 100%; + background: url(bg_w.png) repeat-y; +} +.sbox-bg-nw { + left: -33px; + top: -40px; + background: url(bg_nw.png) no-repeat; +} diff --git a/assets/css/card.css b/assets/css/card.css new file mode 100644 index 0000000..7c5cf0a --- /dev/null +++ b/assets/css/card.css @@ -0,0 +1,279 @@ +#container_pagseguro ul { + padding: 0px !important; +} + +.vertical input { + width: 68px; +} + +.cards { + overflow: hidden; + margin: 0px; + padding: 0px; + list-style: none; +} +.cards li { + float: left; + height: 38px; + margin-right: 8px; + text-indent: -9999px; + width: 90px; + list-style: none; + margin: 0px; +} +.cards li input, .cards li img{ + float: left; + width: 55px; + border: 1px solid #D8D8D8; + border-radius: 5px; + padding: 0px; + margin-left: 2px; +} +.cards li:last-child { + margin-right: 0; +} +.cards .visa_electron { + background-position: 204px 0; +} +.cards .mastercard { + background-position: 153px 0; +} +.cards .maestro { + background-position: 102px 0; +} +.cards .discover { + background-position: 51px 0; +} +.cards .visa.off { + background-position: 0 32px; +} +.cards .visa_electron.off { + background-position: 204px 32px; +} +.cards .mastercard.off { + background-position: 153px 32px; +} +.cards .maestro.off { + background-position: 102px 32px; +} +.cards .discover.off { + background-position: 51px 32px; +} +#container_pagseguro form { + -webkit-box-shadow: 0 1px 3px #bbbbbb; + -moz-box-shadow: 0 1px 3px #bbbbbb; + box-shadow: 0 1px 3px #bbbbbb; + background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#f5f5f5)); + background: -webkit-linear-gradient(#ffffff, #f5f5f5); + background: -moz-linear-gradient(#ffffff, #f5f5f5); + background: -ms-linear-gradient(#ffffff, #f5f5f5); + background: -o-linear-gradient(#ffffff, #f5f5f5); + background: linear-gradient(#ffffff, #f5f5f5); + background-color: #f8f8f8; + border: 5px solid #fff; + margin: 0 auto 32px; + padding: 12px 24px 24px; + width: 90%; +} +#container_pagseguro form h2 { + color: #555; + font-family: "Helvetica Neue", Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size: 16px; + font-style: normal; + margin-bottom: 0; +} +#container_pagseguro form li { + padding: 1px 0px; + display: inline; +} +#container_pagseguro form label { + color: #555; + display: block; + font-size: 14px; +} +#container_pagseguro form label small { + color: #aaa; + font-size: 11px; + line-height: 11px; + text-trans#container_pagseguro form: uppercase; +} +#container_pagseguro form input.field, #container_pagseguro form select { + -webkit-box-shadow: inset 0 1px 3px -1px #aaaaaa; + -moz-box-shadow: inset 0 1px 3px -1px #aaaaaa; + box-shadow: inset 0 1px 3px -1px #aaaaaa; + border: 1px solid #aaa; + border-color: #aaa #ddd #ddd #aaa; + color: #333; + display: block; + font-size: 18px; + height: 30px; + padding: 0 5px; + width: 275px; + -moz-box-sizing: content-box; +} + +#container_pagseguro form input.radiofield { + -webkit-box-shadow: inset 0 0px 0px 0px #ffffff; + -moz-box-shadow: inset 0 0px 0px 0px #ffffff; + box-shadow: inset 0 0px 0px 0px #ffffff; + border: 1px solid #aaa; + border-color: #aaa #ddd #ddd #aaa; + color: #333; + display: block; + font-size: 18px; + height: 30px; + padding: 0 5px; + width: 275px; + -moz-box-sizing: content-box; +} + +#container_pagseguro form input.valid { + background: url(tick.png) 260px center no-repeat; +} + +#container_pagseguro input.radio_terms { + width: auto !important; + display: inline; +} + +#container_pagseguro label.label_termos{ + font-size: 11px; + font: 11px Arial; + font-family: Arial; +} + +.vertical { + overflow: hidden; +} +.vertical li { + float: left; + width: 140px; +} +.vertical li .or { + color: #aaa; + float: left; + font-size: 12px; + margin-left: -8px; + margin-top: 32px; +} +/* +.vertical li:last-child { + float: right; + text-align: right; +} +.vertical li:last-child input { + float: right; +} +*/ + + + +@media screen and (max-width: 767px) { + .demo .numbers ul { + margin-left: 0; + overflow: hidden; + } + .demo .numbers ul li { + float: left; + margin-left: 24px; + } +} +@media screen and (min-width: 768px) { + body { + margin: 0; + } + #container_pagseguro { + margin-left: 32px; + margin-top: 32px; + } + #container_pagseguro form { + float: left; + margin: 0 0 32px; + } + .demo .numbers { + float: right; + } + .download { + clear: both; + } +} + +#container_pagseguro li, #container_pagseguro ul { + list-style: none; + margin: 0px; + padding: 0px; +} + +.buttonPagsegurotransparente { + position: relative !important; + width: 200px !important; + color: #FFF !important; + display: block !important; + text-decoration: none !important; + /* margin: 0 auto !important; */ + border-radius: 5px !important; + border: solid 1px #20992A !important; + background: #44AF34 !important; + text-align: center !important; + padding: 15px 20px !important; + -webkit-transition: all 0.1s !important; + -moz-transition: all 0.1s !important; + transition: all 0.1s !important; + -webkit-box-shadow: 0px 3px 0px #1F9915 !important; + -moz-box-shadow: 0px 6px 0px #84261a !important; + /* box-shadow: 0px 3px 0px #1F9915 !important; */ + font-size: 18px; + font: 16px; +} + +.buttonPagsegurotransparente:active { + -webkit-box-shadow: 0px 0px 0px #1E841A !important; + -moz-box-shadow: 0px 1px 0px #84261a !important; + /* box-shadow: 0px 0px 0px #22841A !important; */ + position: relative !important; + top: 3px !important; + /* background: #62C948 !important; */ +} +.buttonPagsegurotransparente:hover { + background: #62C948 !important; +} + + +div.div_pagamentos div.conteudo_pagseguro ul { + width: 300px; +} + +li.card_li { + background: #ECECEC; + padding: 6px !important; +} + +input#card_number { + background: url(../images/lock.png) no-repeat right #ffffff; + background-position: 265px; +} + +span.cvv_span { + margin: 0px; +} + +a.info_cvv { + background-color: #F3F3F3; + border-radius: 0.333em; + font-weight: bold; + font-size: 1.2em; + line-height: 1em; + text-align: center; + padding: 0.25em 0; + width: 1.5em; + display: inline-block; + text-decoration: none !important; + background: -moz-linear-gradient(top, #e5e5e5 0%, #e2e0e1 38%, #d9d3d3 100%); + background: -webkit-linear-gradient(top, #E5E5E5 0%,#E2E0E1 38%,#D9D3D3 100%); + background: -o-linear-gradient(top, #e5e5e5 0%,#e2e0e1 38%,#d9d3d3 100%); + background: -ms-linear-gradient(top, #e5e5e5 0%,#e2e0e1 38%,#d9d3d3 100%); + background: linear-gradient(to bottom, #DADADA 0%,#CECECE 38%,#CACACA 100%); + float: right; + color: #1D51D8; + margin: 4px; +} \ No newline at end of file diff --git a/assets/css/css_pagamento.css b/assets/css/css_pagamento.css new file mode 100644 index 0000000..c7c60b1 --- /dev/null +++ b/assets/css/css_pagamento.css @@ -0,0 +1 @@ +@CHARSET "ISO-8859-1"; /** *CSS da tela integração ( pagamentos ) * Arquivo integrante do Módulo de pagamentos Moip API Transparente */ .buttonBcashapi { background: #069700 !important; border: 1px solid #CCC !important; margin: 0px !important; padding: 0px !important; text-transform: none !important; width: auto !important; padding-left: 10px !important; padding-right: 10px !important; font-size: 14px !important; color: #fff !important; } .buttonBcashapi:hover { background: #09D600 !important; border: 1px solid #CCC !important; margin: 0px !important; padding: 0px !important; text-transform: none !important; width: auto !important; padding-left: 10px !important; padding-right: 10px !important; font-size: 14px !important; color: black !important; } .div_pagamentos{ width: 70%; text-align:left; min-height: 30px; padding: 10px; } .field_visa{ float:left; width: 200px; } .field_visa label input { float: left; padding-left: 5px; } .field_visa label span{ float: left; padding-left: 5px; } .table_pgto { /*width:250px;*/ padding:2px; } #botao_envia{ background-color:#f79c27; border:#d87c05 solid; padding: 2px; } .table_pgto tr td { width:100px; padding-left:5px; vertical-align: middle; } .div_parcelas { display:none; font: 12px trebuchet ms; font-size:12px; font-family:trebuchet ms; width: 400px; } .valor_pagamento { height:30px; font: 18px trebuchet ms; font-size:18px; font-family:trebuchet ms; font-weight: bold; text-align:right; } .titulo_cartao { font: 12px trebuchet ms; font-size:12px; font-family:trebuchet ms; padding-left:8px; } .subtitulo_cartao{ font-size: 14px; } .input_cartao { width: auto; } h4.titulo_toggle{ background-color: #efefef; padding-left: 5px; padding-right: 5px; padding-top: 5px; } input.error_cartao { border: 1px solid #FF4C4C !important; } .system-message-cartao { margin:10px 0 20px 0; border-left:0; border-right:0; } .system-message-cartao dt { font-weight: bold; } .system-message-cartao dd { margin: 0 0 15px 0; font-weight: normal; text-indent: 0px; padding:0 } .system-message-cartao dd ul { color: #000; list-style: none; padding: 0px; } .system-message-cartao dd ul li { line-height:1.5em } /* System Standard Messages */ .system-message-cartao dt.message { position:absolute; top:-2000px; left:-3000px; } .system-message-cartao dd.message ul { background: #fff url(../images/notice-info.png) no-repeat; padding-left:40px; padding: 10px 10px 10px 40px; border-top: 2px solid #90B203; border-bottom: 2px solid #90B203; } .system-message-cartao dd.message ul li{background:none !important} /* System Error Messages */ .system-message-cartao dt.error { position:absolute; top:-2000px; left:-3000px; } .system-message-cartao dd.error ul { background:#fff url(../images/notice-alert.png) no-repeat ; padding-left:40px; padding: 10px 10px 10px 40px; border-top: 2px solid #990000; border-bottom: 2px solid #990000; } /* System Notice Messages */ .system-message-cartao dt.notice { position:absolute; top:-2000px; left:-3000px; } .system-message-cartao dd.notice ul { background:#fff url(../images/notice-note.png) no-repeat ; padding-left:40px; padding: 10px 10px 10px 40px; border-top: 2px solid #FAA528; border-bottom: 2px solid #FAA528; } .system-message-cartao dd.notice ul { color: #000;margin:10px 0 } .system-message-cartao { margin-bottom: 0px; padding: 0; } .system-message-cartao dt { font-weight: bold; } .system-message-cartao dd { font-weight: normal; padding: 0; } #div_erro_conteudo { list-style: none; padding-top: 10px; padding-bottom: 10px; padding-left: 30px; } h4.titulo_toggle input { display: none; } \ No newline at end of file diff --git a/assets/css/index.html b/assets/css/index.html new file mode 100644 index 0000000..e69de29 diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 0000000..05d09e7 --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,425 @@ +/* + Estilo para o meio do pagamento pagseguro +*/ + +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,900); +.mainpagseguro { + border: 2px solid #79ba59; + color: #333333; + font-family: Lato, sans-serif; +} +.pg_top { + background: url("../images/bgtop.png") top repeat-x; + height: 86px; +} +.pg_top .pg_dados { + font-family: Lato, sans-serif; + float: left; + margin-left: 20px; +} +.pg_top .pg_dados span { + line-height: 86px; + font-size: 20px; + color: #333333; + font-weight: bold; +} +.pg_nav { + float: left; + padding: 0px; + margin: 0px; + padding-top: 14px; + padding-left: 20px; + list-style: none; +} +.pg_nav li { + display: inline-block; + margin-right: 0px; +} +.pg_nav li a { + background: #cfcfcf; + display: inline-block; + -webkit-border-radius: 4px 4px 0px 0px; + -moz-border-radius: 4px 4px 0px 0px; + border-radius: 4px 4px 0px 0px; + font-family: Lato, sans-serif; + font-size: 18px; + color: #797979; + line-height: 65px; + height: 65px; + padding: 0px 25px; + -moz-transition: all 0.2s ease; + -o-transition: all 0.2s ease; + -webkit-transition: all 0.2s ease; + transition: all 0.2s ease; + text-decoration: none; +} +.pg_nav li a:hover, .pg_nav li.active a { + background: #7cbd5b; + color: #fff; +} +.pg_topright { + background: url("../images/topright.png") top right no-repeat; + width: 110px; + height: 86px; + float: right; +} +.pg_topleft { + background: url("../images/topleft.png") top left no-repeat; + width: 39px; + height: 86px; + float: left; +} +.cartoes label { + float: left !important; + margin-right: 6px !important; + background: #eeeeee; + border-radius: 2px; + -webkit-box-shadow: inset 0 0px 0px 0px #ffffff; + -moz-box-shadow: inset 0 0px 0px 0px #ffffff; + box-shadow: inset 0 0px 0px 0px #ffffff; + border: 1px solid #eeeeee; + opacity: 0.5; + transition: all 0.2s linear; +} +.cartoes label:hover { + opacity: 1; +} +.rchecked { + opacity: 1 !important; + border: 1px solid #7cbd5b !important; + background: #7cbd5b !important; +} +.tabcontent { + display: none; +} +/** + + Parte do meio Interna + +**/ + +.mainpagseguro .title { + font-family: Lato, sans-serif; + color: #333333; + font-size: 30px; + font-weight: 700; + padding-top: 5px; + padding-bottom: 15px; +} +.mainpagseguro .subtitle { + font-family: Lato, sans-serif; + color: #6d6d6d; + font-size: 20px; + clear: both; + font-weight: 700; +} +.mainpagseguro .cartoes { + padding-bottom: 15px; +} +.pg_main { + padding: 20px; +} +.pg_row { + clear: both; + padding-top: 10px; + padding-bottom: 10px; +} +.pgc1-2 { + width: 40%; + margin-right: 20px; + float: left; +} +.pgc2-1 { + float: left; + width: 50%; +} +.bgcartao { + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + background: #eeeeee; + padding: 10px; + font-size: 16px; +} +.clear { + clear: both; + ; + height: 1px; + width: 1px; +} +/* CAMPOS */ + +.mainpagseguro INPUT[type="text"] { + background-color: #cfcfcf; + border: 1px solid #cfcfcf; + padding: 10px; + font-size: 15px; + font-family: Lato, sans-serif; + color: #333333; + margin: 5px 0px; + width: 100%; + transition: all 0.2s linear; + height:inherit !important; +} +.mainpagseguro INPUT[type="text"]:focus { + background: #FFF; + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + border: 1px solid #7cbd5b; + -webkit-box-shadow: inset 3px 0px 0px 0px #7cbd5b; + -moz-box-shadow: inset 3px 0px 0px 0px #7cbd5b; + box-shadow: inset 3px 0px 0px 0px #7cbd5b; +} +.mainpagseguro SELECT { + background-color: #eeeeee; + border: 1px solid #eeeeee; + padding: 10px; + font-size: 15px; + font-family: Lato, sans-serif; + width: 100%; + transition: all 0.2s linear; + height:inherit !important; +} +.mainpagseguro SELECT:focus { + background: #FFF; + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + border: 1px solid #7cbd5b; + -webkit-box-shadow: inset 3px 0px 0px 0px #7cbd5b; + -moz-box-shadow: inset 3px 0px 0px 0px #7cbd5b; + box-shadow: inset 3px 0px 0px 0px #7cbd5b; +} +.mainpagseguro LABEL { + display: block; +} +.pgi_cartao INPUT { + width: 100%; +} +.mainpagseguro .pgi_datavalidade SELECT { + float: left; + width: 45%; + margin-right: 3px; + background-color: #cfcfcf; + border: 1px solid #cfcfcf; + padding: 10px 2px; + margin-top: 3px; + transition: all 0.2s linear; +} +.mainpagseguro .pgi_datavalidade SELECT:focus { + background: #FFF; +} +.pgi_datavalidade { + width: 40%; + float: left; + padding-right: 10px; +} +.pgi_cvv { + width: 55%; + float: left; +} +.mainpagseguro .pgi_cvv INPUT { + width: 120px; + float: left; +} +.mainpagseguro em { + font-size: 12px; +} +.icquestion { + -webkit-mask: url("../images/question.svg") right no-repeat; + background: #838383; + width: 30px; + height: 30px; + float: left; + margin-top: 10px; + margin-left: 5px; +} +.pg_dadosp { + padding: 10px; +} +.pgi_titular { + width: 45%; + float: left; + padding-right: 10px; +} +.pgi_cpf { + width: 45%; + float: left; +} +.pgi_datanasc { + float: left; + ; + width: 45%; + padding-right: 10px; +} +.pgi_telefone { + float: left; + width: 45%; +} +.pgcenter { + text-align: center; + padding-top: 15px; +} +.btn-pagar { + background: #43a047; + font-family: 'Lato', sans-serif; + color: #FFF; + font-weight: 500; + font-size: 20px; + border: 0px; + border-radius: 6px; + padding: 15px 50px; + cursor: pointer; + transition: all 0.2s ease; +} +.btn-pagar:hover { + background: #7cbd5b; +} + +@media only screen and (max-width:640px) { + .pg_nav li a { + font-size: 12px; + padding-right: 5px; + padding-left: 5px; + } + .pgi_telefone, .pgi_datanasc, .pgi_cpf, .pgi_titular, .pgi_cvv, .pgi_datavalidade { + width: 100%; + } + .btn-pagar { + width: 100%; + } + .mainpagseguro .title { + font-size: 20px; + } + .mainpagseguro .subtitle { + font-size: 16px; + } + .mainpagseguro .pgi_datavalidade SELECT { + float: none; + margin-bottom: 5px; + width: 100%; + } + #litabdebito { + display: none; + } +} + +@media only screen and (max-width:540px) { + .pg_top .pg_dados { + font-size: 14px; + margin-left: 10px; + } + .pg_top .pg_dados span { + font-size: 15px; + } + .bgcartao, .pg_dadosp { + padding: 0px; + background: none; + } + .pgc1-2, .pgc2-1 { + width: 100%; + } + #litabdebito { + display: none; + } + #container_pagseguro { + padding-top: 40px; + } +} + +#container_pagseguro ul { + padding: 0px !important; + list-style:none; +} +.vertical input { + width: 68px; +} +.cards { + overflow: hidden; + margin: 0px; + padding: 0px; + list-style: none; +} +.cards li { + +} +.cards li input, .cards li img { + +} +.cards li:last-child { + margin-right: 0; +} +.cards .visa_electron { + background-position: 204px 0; +} +.cards .mastercard { + background-position: 153px 0; +} +.cards .maestro { + background-position: 102px 0; +} +.cards .discover { + background-position: 51px 0; +} +.cards .visa.off { + background-position: 0 32px; +} +.cards .visa_electron.off { + background-position: 204px 32px; +} +.cards .mastercard.off { + background-position: 153px 32px; +} +.cards .maestro.off { + background-position: 102px 32px; +} +.cards .discover.off { + background-position: 51px 32px; +} +#container_pagseguro form { +} +#container_pagseguro form h2 { + color: #555; + font-family: "Helvetica Neue", Verdana, Geneva, Arial, Helvetica, sans-serif; + font-size: 16px; + font-style: normal; + margin-bottom: 0; +} +#container_pagseguro form li { + list-style:none; + display: inline; +} +#container_pagseguro form label { + color: #555; + display: block; + font-size: 14px; +} +#container_pagseguro form label small { + color: #aaa; + font-size: 11px; + line-height: 11px; + +} +#container_pagseguro form input.field, #container_pagseguro form select { +} +#container_pagseguro form input.radiofield { +} +.div_pagamentos { + width: 100% !important; + padding:0px !important; +} + +h4.titulo_toggle { + background:none !important; + padding:0px ; + margin:0px; + font-family: Lato, sans-serif; + color: #333333; + font-size: 20px; + font-weight: 700; + padding-top: 5px !important; + padding-bottom: 15px !important; +} + +h4.titulo_toggle label { + font-weight: 700 !important; +} diff --git a/assets/css/tick.png b/assets/css/tick.png new file mode 100644 index 0000000000000000000000000000000000000000..99c4f55c37eccf2d0f92972f5becbfbad7f0df5c GIT binary patch literal 626 zcmV-&0*(ENP)4SFa{ zlK`5tDp0zXyY`>~_n5r1Pr;mMj^S7*RZtuOa-klGkB;e@2t_d5qs!mBS1H^VER_Ds zoc0GW=!kSiy`!#W zlTceJXYKVMt|DeJ&?I&0Z2dHeVx^%>v7K9x&o$w5$8Dg=zzo-Bt#Q!m??m0R{QW7m zj%T2D_+Ng9k>OVc7dqEwt>tb^tehn9=h~EcTi#2^CK2rPuWP4S7)nj)&A0S6u3jwy zk9Q=1V#6AQpn87zC!53+cb+eA4&T?l-fXbi%P~LQV87xo;8}nH0EYnIz4>;ZJOBUy M07*qoM6N<$f+zzVqyPW_ literal 0 HcmV?d00001 diff --git a/assets/images/Thumbs.db b/assets/images/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..c1419e4d904414bc0e58639fe5b735f3cfba708b GIT binary patch literal 19456 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 Q{`~p-#eXJ^|K_m&4{q(N)c^nh literal 0 HcmV?d00001 diff --git a/assets/images/bgtop.png b/assets/images/bgtop.png new file mode 100644 index 0000000000000000000000000000000000000000..0ce30b8ea2b378e9830747980105cf2d42a00e71 GIT binary patch literal 1135 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 Hu0mjfo%GP| literal 0 HcmV?d00001 diff --git a/assets/images/index.html b/assets/images/index.html new file mode 100644 index 0000000..e69de29 diff --git a/assets/images/lock.png b/assets/images/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..4f9d1f885a4f1ece472529a5a684de37313414c8 GIT binary patch literal 3999 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 FV1n8S)kgpT literal 0 HcmV?d00001 diff --git a/assets/images/notice-alert.png b/assets/images/notice-alert.png new file mode 100644 index 0000000000000000000000000000000000000000..7aed5fb6d4ce42d4500c52ad541cc91d9b5badd1 GIT binary patch literal 1225 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 HQ)t?M@)M=5 literal 0 HcmV?d00001 diff --git a/assets/images/question.svg b/assets/images/question.svg new file mode 100644 index 0000000..55abb36 --- /dev/null +++ b/assets/images/question.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/topleft.png b/assets/images/topleft.png new file mode 100644 index 0000000000000000000000000000000000000000..b853e341e2817a59ed30ee8a7017386bd96c7a87 GIT binary patch literal 1949 zcmbVNdsI_(9G`M3v!h`es7c*M3L1OdJs2A<8f?at!5o8a4A9H&9gMNvvE8w|fdi?N zrl~2EZ!-&%6b%&_4u-s3N}vmsGE@W=N`cDI?4jK$Sbuo>qkGQ1zt{Kk`Fwxh$GPuG z6W^LLdG=%yi8MtVFO(5u81be~3Lw6P0mT|(n1zXySTd@`Y>*it31Bn}0mKF<8<8Op zY|lT1EF_Tv@^x}0rj#V`G^l|J`E97U!9<`*q=hlK3DW2h49G&Vbw)mU#N9{+bTFT+ zU`yx{Qyh|`i+7ljWJjW06$H7GG{#(dzNO;3bGV6$>KzTw`V>KW~Of2M+i4!WUgL&F0 zIs`HyHU)&CC<>d&;!v_+4NPHcq7V?IbC?hkInMJWJXa*-h!`AER2-WHf+Dtn!(s`z zA`vT!E{YSxEgHv)jTQ_tYLIbl9icsj75*od7iUHw3^mJ9G;h2Lq&X;tT5?bm5Elo8 zD|AK}wOQu-GxX@fLd2{qK;T7Y)BrpTF;Djdc~}d<2sctoVL{w13RlB|C{Zj(OX0%I zNID1MaM&P79>c@`H*_?@DVo1d{#7^QTSPJXr;odUSUm0{#7H!cndp*x;z{>OqzQmD zK`tuwE-PwK-@Z4pqEYQ^$tY=C=5VVD8&oAN8Ml8Q!CeYxQ$}%fhP_U;^5n9TwoL1h z6x%VyiWBM1ru355%$04K#Vr{HH40~QI(9h4@})fgV6yp8vgv>f{bH%JIitvG}#x4V?h{ndpHYDc}wQJ+?DG}TtCTzxvn zuuodls5b3iy0ODt)R=BPnu;As!E2QTHL2^rMx7_p4SSPpHK|3Ov_g-1|954MhBV_o zsqe?OwWsrbzBg2Q5;}M5tD+O?A4dDp{j%~i1*WQGeMMsJM}J@Z0V2K1clZ>GNhrEcYZO zEPp+GZ~2VS2KdO~f?TT=-LM0et*f83_?glTS7T4CMO0qzCxHb|Ki9rw_f6a|wdK5+ zc1@`gs%5u*wd4AVBfz3NM_@z+SS?-qt^Exx;cODhueRR zR&{&lY)QNueQ0X9kJp3|!Vi3=6A1pfXOvQH2o*>uefpZgZX;7c!)932l z#n(DVhO}LtnBwni7~9GcZc-H3)_H4MGKR%D+g7AdmwmS_FsbE_i?K)Av0y~K`i`_a zck+<@(r{&9#|3(KU~II)sGj7TdE<-0V|>M5Y6UfDEpq+ZnOBFeGP*XmuM!xaLZ{sw z;%A@!VYjDK-#zQ4-d26s-Ycfj+?vk(-{521;c2}a`-e$R(~c=7Z+-}Ad;iga>P3iLgFvX%o K;lbGDrGEovzb%yj literal 0 HcmV?d00001 diff --git a/assets/images/topright.png b/assets/images/topright.png new file mode 100644 index 0000000000000000000000000000000000000000..2fb72d851159ce8151b02011cfc9098197b02cb0 GIT binary patch literal 3072 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 + * @copyright Author + */ + +var SqueezeBox = { + + presets: { + onOpen: $empty, + onClose: $empty, + onUpdate: $empty, + onResize: $empty, + onMove: $empty, + onShow: $empty, + onHide: $empty, + size: {x: 600, y: 450}, + sizeLoading: {x: 200, y: 150}, + marginInner: {x: 20, y: 20}, + marginImage: {x: 50, y: 75}, + handler: false, + target: null, + closable: true, + closeBtn: true, + zIndex: 65555, + overlayOpacity: 0.7, + classWindow: '', + classOverlay: '', + overlayFx: {}, + resizeFx: {}, + contentFx: {}, + parse: false, // 'rel' + parseSecure: false, + shadow: true, + document: null, + ajaxOptions: {} + }, + + initialize: function(presets) { + if (this.options) return this; + + this.presets = $merge(this.presets, presets); + this.doc = this.presets.document || document; + this.options = {}; + this.setOptions(this.presets).build(); + this.bound = { + window: this.reposition.bind(this, [null]), + scroll: this.checkTarget.bind(this), + close: this.close.bind(this), + key: this.onKey.bind(this) + }; + this.isOpen = this.isLoading = false; + return this; + }, + + build: function() { + this.overlay = new Element('div', { + id: 'sbox-overlay', + styles: {display: 'none', zIndex: this.options.zIndex} + }); + this.win = new Element('div', { + id: 'sbox-window', + styles: {display: 'none', zIndex: this.options.zIndex + 2} + }); + if (this.options.shadow) { + if (Browser.Engine.webkit420) { + this.win.setStyle('-webkit-box-shadow', '0 0 10px rgba(0, 0, 0, 0.7)'); + } else if (!Browser.Engine.trident4) { + var shadow = new Element('div', {'class': 'sbox-bg-wrap'}).inject(this.win); + var relay = function(e) { + this.overlay.fireEvent('click', [e]); + }.bind(this); + ['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw'].each(function(dir) { + new Element('div', {'class': 'sbox-bg sbox-bg-' + dir}).inject(shadow).addEvent('click', relay); + }); + } + } + this.content = new Element('div', {id: 'sbox-content'}).inject(this.win); + this.closeBtn = new Element('a', {id: 'sbox-btn-close', href: '#'}).inject(this.win); + this.fx = { + overlay: new Fx.Tween(this.overlay, $merge({ + property: 'opacity', + onStart: Events.prototype.clearChain, + duration: 250, + link: 'cancel' + }, this.options.overlayFx)).set(0), + win: new Fx.Morph(this.win, $merge({ + onStart: Events.prototype.clearChain, + unit: 'px', + duration: 750, + transition: Fx.Transitions.Quint.easeOut, + link: 'cancel', + unit: 'px' + }, this.options.resizeFx)), + content: new Fx.Tween(this.content, $merge({ + property: 'opacity', + duration: 250, + link: 'cancel' + }, this.options.contentFx)).set(0) + }; + $(this.doc.body).adopt(this.overlay, this.win); + }, + + assign: function(to, options) { + return ($(to) || $$(to)).addEvent('click', function() { + return !SqueezeBox.fromElement(this, options); + }); + }, + + open: function(subject, options) { + this.initialize(); + + if (this.element != null) this.trash(); + this.element = $(subject) || false; + + this.setOptions($merge(this.presets, options || {})); + + if (this.element && this.options.parse) { + var obj = this.element.getProperty(this.options.parse); + if (obj && (obj = JSON.decode(obj, this.options.parseSecure))) this.setOptions(obj); + } + this.url = ((this.element) ? (this.element.get('href')) : subject) || this.options.url || ''; + + this.assignOptions(); + + var handler = handler || this.options.handler; + if (handler) return this.setContent(handler, this.parsers[handler].call(this, true)); + var ret = false; + return this.parsers.some(function(parser, key) { + var content = parser.call(this); + if (content) { + ret = this.setContent(key, content); + return true; + } + return false; + }, this); + }, + + fromElement: function(from, options) { + return this.open(from, options); + }, + + assignOptions: function() { + this.overlay.set('class', this.options.classOverlay); + this.win.set('class', this.options.classWindow); + if (Browser.Engine.trident4) this.win.addClass('sbox-window-ie6'); + }, + + close: function(e) { + var stoppable = ($type(e) == 'event'); + if (stoppable) e.stop(); + if (!this.isOpen || (stoppable && !$lambda(this.options.closable).call(this, e))) return this; + this.fx.overlay.start(0).chain(this.toggleOverlay.bind(this)); + this.win.setStyle('display', 'none'); + this.fireEvent('onClose', [this.content]); + this.trash(); + this.toggleListeners(); + this.isOpen = false; + return this; + }, + + trash: function() { + this.element = this.asset = null; + this.content.empty(); + this.options = {}; + this.removeEvents().setOptions(this.presets).callChain(); + }, + + onError: function() { + this.asset = null; + this.setContent('string', this.options.errorMsg || 'An error occurred'); + }, + + setContent: function(handler, content) { + if (!this.handlers[handler]) return false; + this.content.className = 'sbox-content-' + handler; + this.applyTimer = this.applyContent.delay(this.fx.overlay.options.duration, this, this.handlers[handler].call(this, content)); + if (this.overlay.retrieve('opacity')) return this; + this.toggleOverlay(true); + this.fx.overlay.start(this.options.overlayOpacity); + return this.reposition(); + }, + + applyContent: function(content, size) { + if (!this.isOpen && !this.applyTimer) return; + this.applyTimer = $clear(this.applyTimer); + this.hideContent(); + if (!content) { + this.toggleLoading(true); + } else { + if (this.isLoading) this.toggleLoading(false); + this.fireEvent('onUpdate', [this.content], 20); + } + if (content) { + if (['string', 'array'].contains($type(content))) this.content.set('html', content); + else if (!this.content.hasChild(content)) this.content.adopt(content); + } + this.callChain(); + if (!this.isOpen) { + this.toggleListeners(true); + this.resize(size, true); + this.isOpen = true; + this.fireEvent('onOpen', [this.content]); + } else { + this.resize(size); + } + }, + + resize: function(size, instantly) { + this.showTimer = $clear(this.showTimer || null); + var box = this.doc.getSize(), scroll = this.doc.getScroll(); + this.size = $merge((this.isLoading) ? this.options.sizeLoading : this.options.size, size); + var to = { + width: this.size.x, + height: this.size.y, + left: (scroll.x + (box.x - this.size.x - this.options.marginInner.x) / 2).toInt(), + top: (scroll.y + (box.y - this.size.y - this.options.marginInner.y) / 2).toInt() + }; + this.hideContent(); + if (!instantly) { + this.fx.win.start(to).chain(this.showContent.bind(this)); + } else { + this.win.setStyles(to).setStyle('display', ''); + this.showTimer = this.showContent.delay(50, this); + } + return this.reposition(); + }, + + toggleListeners: function(state) { + var fn = (state) ? 'addEvent' : 'removeEvent'; + this.closeBtn[fn]('click', this.bound.close); + this.overlay[fn]('click', this.bound.close); + this.doc[fn]('keydown', this.bound.key)[fn]('mousewheel', this.bound.scroll); + this.doc.getWindow()[fn]('resize', this.bound.window)[fn]('scroll', this.bound.window); + }, + + toggleLoading: function(state) { + this.isLoading = state; + this.win[(state) ? 'addClass' : 'removeClass']('sbox-loading'); + if (state) this.fireEvent('onLoading', [this.win]); + }, + + toggleOverlay: function(state) { + var full = this.doc.getSize().x; + this.overlay.setStyle('display', (state) ? '' : 'none'); + this.doc.body[(state) ? 'addClass' : 'removeClass']('body-overlayed'); + if (state) { + this.scrollOffset = this.doc.getWindow().getSize().x - full; + this.doc.body.setStyle('margin-right', this.scrollOffset); + } else { + this.doc.body.setStyle('margin-right', ''); + } + }, + + showContent: function() { + if (this.content.get('opacity')) this.fireEvent('onShow', [this.win]); + this.fx.content.start(1); + }, + + hideContent: function() { + if (!this.content.get('opacity')) this.fireEvent('onHide', [this.win]); + this.fx.content.cancel().set(0); + }, + + onKey: function(e) { + switch (e.key) { + case 'esc': this.close(e); + case 'up': case 'down': return false; + } + }, + + checkTarget: function(e) { + return this.content.hasChild(e.target); + }, + + reposition: function() { + var size = this.doc.getSize(), scroll = this.doc.getScroll(), ssize = this.doc.getScrollSize(); + this.overlay.setStyles({ + width: ssize.x + 'px', + height: ssize.y + 'px' + }); + this.win.setStyles({ + left: (scroll.x + (size.x - this.win.offsetWidth) / 2 - this.scrollOffset).toInt() + 'px', + top: (scroll.y + (size.y - this.win.offsetHeight) / 2).toInt() + 'px' + }); + return this.fireEvent('onMove', [this.overlay, this.win]); + }, + + removeEvents: function(type){ + if (!this.$events) return this; + if (!type) this.$events = null; + else if (this.$events[type]) this.$events[type] = null; + return this; + }, + + extend: function(properties) { + return $extend(this, properties); + }, + + handlers: new Hash(), + + parsers: new Hash() + +}; + +SqueezeBox.extend(new Events($empty)).extend(new Options($empty)).extend(new Chain($empty)); + +SqueezeBox.parsers.extend({ + + image: function(preset) { + return (preset || (/\.(?:jpg|png|gif)$/i).test(this.url)) ? this.url : false; + }, + + clone: function(preset) { + if ($(this.options.target)) return $(this.options.target); + if (this.element && !this.element.parentNode) return this.element; + var bits = this.url.match(/#([\w-]+)$/); + return (bits) ? $(bits[1]) : (preset ? this.element : false); + }, + + ajax: function(preset) { + return (preset || (this.url && !(/^(?:javascript|#)/i).test(this.url))) ? this.url : false; + }, + + iframe: function(preset) { + return (preset || this.url) ? this.url : false; + }, + + string: function(preset) { + return true; + } +}); + +SqueezeBox.handlers.extend({ + + image: function(url) { + var size, tmp = new Image(); + this.asset = null; + tmp.onload = tmp.onabort = tmp.onerror = (function() { + tmp.onload = tmp.onabort = tmp.onerror = null; + if (!tmp.width) { + this.onError.delay(10, this); + return; + } + var box = this.doc.getSize(); + box.x -= this.options.marginImage.x; + box.y -= this.options.marginImage.y; + size = {x: tmp.width, y: tmp.height}; + for (var i = 2; i--;) { + if (size.x > box.x) { + size.y *= box.x / size.x; + size.x = box.x; + } else if (size.y > box.y) { + size.x *= box.y / size.y; + size.y = box.y; + } + } + size.x = size.x.toInt(); + size.y = size.y.toInt(); + this.asset = $(tmp); + tmp = null; + this.asset.width = size.x; + this.asset.height = size.y; + this.applyContent(this.asset, size); + }).bind(this); + tmp.src = url; + if (tmp && tmp.onload && tmp.complete) tmp.onload(); + return (this.asset) ? [this.asset, size] : null; + }, + + clone: function(el) { + if (el) return el.clone(); + return this.onError(); + }, + + adopt: function(el) { + if (el) return el; + return this.onError(); + }, + + ajax: function(url) { + var options = this.options.ajaxOptions || {}; + this.asset = new Request.HTML($merge({ + method: 'get', + evalScripts: false + }, this.options.ajaxOptions)).addEvents({ + onSuccess: function(resp) { + this.applyContent(resp); + if (options.evalScripts !== null && !options.evalScripts) $exec(this.asset.response.javascript); + this.fireEvent('onAjax', [resp, this.asset]); + this.asset = null; + }.bind(this), + onFailure: this.onError.bind(this) + }); + this.asset.send.delay(10, this.asset, [{url: url}]); + }, + + iframe: function(url) { + this.asset = new Element('iframe', $merge({ + src: url, + frameBorder: 0, + width: this.options.size.x, + height: this.options.size.y + }, this.options.iframeOptions)); + if (this.options.iframePreload) { + this.asset.addEvent('load', function() { + this.applyContent(this.asset.setStyle('display', '')); + }.bind(this)); + this.asset.setStyle('display', 'none').inject(this.content); + return false; + } + return this.asset; + }, + + string: function(str) { + return str; + } + +}); + +SqueezeBox.handlers.url = SqueezeBox.handlers.ajax; +SqueezeBox.parsers.url = SqueezeBox.parsers.ajax; +SqueezeBox.parsers.adopt = SqueezeBox.parsers.clone; diff --git a/assets/js/index.html b/assets/js/index.html new file mode 100644 index 0000000..e69de29 diff --git a/assets/js/jquery.card.js b/assets/js/jquery.card.js new file mode 100644 index 0000000..d51229d --- /dev/null +++ b/assets/js/jquery.card.js @@ -0,0 +1,132 @@ +/* +jQuery Credit Card Validator + +Copyright 2012 Pawel Decowski + +This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 +Unported License. To view a copy of this license, visit: + +http://creativecommons.org/licenses/by-sa/3.0/ + +or send a letter to: + +Creative Commons, 444 Castro Street, Suite 900, +Mountain View, California, 94041, USA. +*/ + +(function() { + var __indexOf = Array.prototype.indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; + + + jQuery.fn.validateCreditCard = function(callback) { + var card_types, get_card_type, is_valid_length, is_valid_luhn, normalize, validate, validate_number; + card_types = [ + { + name: 'amex', + pattern: /^3[47]/, + valid_length: [15] + }, { + name: 'diners_club_carte_blanche', + pattern: /^30[0-5]/, + valid_length: [14] + }, { + name: 'diners_club_international', + pattern: /^36/, + valid_length: [14] + }, { + name: 'jcb', + pattern: /^35(2[89]|[3-8][0-9])/, + valid_length: [16] + }, { + name: 'laser', + pattern: /^(6304|630[69]|6771)/, + valid_length: [16, 17, 18, 19] + }, { + name: 'visa_electron', + pattern: /^(4026|417500|4508|4844|491(3|7))/, + valid_length: [16] + }, { + name: 'visa', + pattern: /^4/, + valid_length: [16] + }, { + name: 'mastercard', + pattern: /^5[1-5]/, + valid_length: [16] + }, { + name: 'maestro', + pattern: /^(5018|5020|5038|6304|6759|676[1-3])/, + valid_length: [12, 13, 14, 15, 16, 17, 18, 19] + }, { + name: 'discover', + 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)/, + valid_length: [16] + } + ]; + get_card_type = function(number) { + var card_type, _i, _len; + for (_i = 0, _len = card_types.length; _i < _len; _i++) { + card_type = card_types[_i]; + if (number.match(card_type.pattern)) return card_type; + } + return null; + }; + is_valid_luhn = function(number) { + var digit, n, sum, _len, _ref; + sum = 0; + _ref = number.split('').reverse().join(''); + for (n = 0, _len = _ref.length; n < _len; n++) { + digit = _ref[n]; + digit = +digit; + if (n % 2) { + digit *= 2; + if (digit < 10) { + sum += digit; + } else { + sum += digit - 9; + } + } else { + sum += digit; + } + } + return sum % 10 === 0; + }; + is_valid_length = function(number, card_type) { + var _ref; + return _ref = number.length, __indexOf.call(card_type.valid_length, _ref) >= 0; + }; + validate_number = function(number) { + var card_type, length_valid, luhn_valid; + card_type = get_card_type(number); + luhn_valid = false; + length_valid = false; + if (card_type != null) { + luhn_valid = is_valid_luhn(number); + length_valid = is_valid_length(number, card_type); + } + return callback({ + card_type: card_type, + luhn_valid: luhn_valid, + length_valid: length_valid + }); + }; + validate = function() { + var number; + number = normalize(jQuery(this).val()); + return validate_number(number); + }; + normalize = function(number) { + return number.replace(/[ -]/g, ''); + }; + this.bind('input', function() { + jQuery(this).unbind('keyup'); + return validate.call(this); + }); + this.bind('keyup', function() { + return validate.call(this); + }); + validate.call(this); + return this; + }; + +}).call(this); diff --git a/assets/js/jquery.mask.js b/assets/js/jquery.mask.js new file mode 100644 index 0000000..8b0cdfe --- /dev/null +++ b/assets/js/jquery.mask.js @@ -0,0 +1,19 @@ +// jQuery Mask Plugin v1.14.11 +// github.com/igorescobar/jQuery-Mask-Plugin +var $jscomp={scope:{},findInternal:function(a,l,d){a instanceof String&&(a=String(a));for(var p=a.length,h=0;hd?g=e:f>=g&&f!==d?c.maskDigitPosMapOld[g]||(f=g,g=g-(l-h)-a,c.maskDigitPosMap[g]&&(g=f)):g>f&&(g= +g+(h-l)+m)}return g},behaviour:function(f){f=f||window.event;c.invalid=[];var e=b.data("mask-keycode");if(-1===a.inArray(e,m.byPassKeys)){var e=c.getMasked(),g=c.getCaret();setTimeout(function(){c.setCaret(c.calculateCaretPosition())},10);c.val(e);c.setCaret(g);return c.callbacks(f)}},getMasked:function(a,b){var g=[],d=void 0===b?c.val():b+"",n=0,h=e.length,q=0,l=d.length,k=1,r="push",p=-1,t=0,y=[],v,z;f.reverse?(r="unshift",k=-1,v=0,n=h-1,q=l-1,z=function(){return-1= 48 && tecla <= 57 || tecla >= 96 && tecla <= 105 ){ + if ( tam <= 2 ){ + document.getElementById(id).value = vr; } + if ( (tam > 2) && (tam <= 5) ){ + document.getElementById(id).value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam ); } + if ( (tam >= 6) && (tam <= 8) ){ + document.getElementById(id).value = vr.substr( 0, tam - 5 ) + '' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); } + if ( (tam >= 9) && (tam <= 11) ){ + document.getElementById(id).value = vr.substr( 0, tam - 8 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); } + if ( (tam >= 12) && (tam <= 14) ){ + document.getElementById(id).value = vr.substr( 0, tam - 11 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); } + if ( (tam >= 15) && (tam <= 17) ){ + document.getElementById(id).value = vr.substr( 0, tam - 14 ) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam ); + } + } +} +var tentativa = 1; +var aviso = 1; +function getBloqueador() { + var janela = window.open("#","janelaBloq", "width=1, height=1, top=0, left=0, scrollbars=no, status=no, resizable=no, directories=no, location=no, menubar=no, titlebar=no, toolbar=no"); + if (janela == null) { + if (tentativa == 1) { + alert("Bloqueador de popup ativado. Clique na barra amarela do seu navegador e marque a opção 'Sempre permitir para este site'."); + tentativa++; + return false; + } else if ((tentativa > 1) && (tentativa <= 3)) { + alert("Tentativa " + tentativa + " de 3: O bloqueador ainda está ativado."); + tentativa++; + return false; + } else if (tentativa > 3) { + if (aviso == 1) { + if (confirm("O bloqueador de popups ainda está ativado, você pode ter dificuldades para acessar o site.\n\nDeseja continuar assim mesmo?")) { + aviso = 0; + return true; + } else { + aviso = 0; + return false; + } + } + } + } else { + janela.close(); + return true; + } +} +/** + * Métodos de acesso/persistencia na base + */ +var erro = false; +// função que arrenda números x com n casas decimais +function arredondamento (x, n){ + if (n < 0 || n > 10) return x; + var pow10 = Math.pow (10, n); + var y = x * pow10; + return (Math.round (y)/pow10).toFixed(2); +} +function show_parcelas(item) { + var id = ''; + //var debito = new Array('visa_electron','maestro'); + var cartoes_parcelas = new Array('visa','master','diners','elo','amex','discover','jcb','aura','visa_electron','maestro','hipercard'); + + jQuery(cartoes_parcelas).each(function(index,cartao){ + id = '#div_'+cartao; + if (jQuery(id).length > 0) { + if (this.erro) { + mostra_erro(true); + } else { + mostra_erro(false); + } + mostra_div(id,item,cartao); + } + }); +} +function mostra_div(id,item,valor) { + if (item == valor) { + var bandeira = valor; + if (valor == 'master') { + bandeira = 'mastercard'; + } + var texto_parcela = ''; + + if (max_parcela_sem_juros > 1) { + PagSeguroDirectPayment.getInstallments({ + amount: order_total, + brand: bandeira, + maxInstallmentNoInterest: max_parcela_sem_juros, + success: function(response) { + parcelamento_retorno(id, bandeira, valor, response); + }, + error: function(response) { + //tratamento do erro + }, + complete: function(response) { + //tratamento comum para todas chamadas + } + }); + } else { + PagSeguroDirectPayment.getInstallments({ + amount: order_total, + brand: bandeira, + success: function(response) { + parcelamento_retorno(id, bandeira, valor, response); + }, + error: function(response) { + //tratamento do erro + }, + complete: function(response) { + //tratamento comum para todas chamadas + } + }); + } + } else { + jQuery(id).hide(); + } +} +function parcelamento_retorno(id, bandeira, valor, response) { + + //opções de parcelamento disponível + jQuery.each(response.installments[bandeira], function(index, parcela){ + + id_parcela = id+' #p0'+parcela.quantity; + if (jQuery(id_parcela).length > 0) { + texto_parcela = float2moeda(parcela.installmentAmount); + if (parcela.interestFree) { + texto_parcela += ' sem juros'; + } else { + texto_parcela += ' *'; + } + // modo antigo com ul li + // jQuery(id_parcela).next().html('R$ '+texto_parcela); + jQuery(id_parcela).text(parcela.quantity+' x de R$ '+texto_parcela); + if (parcela.quantity == 1) { + parcelas_array[cartoes[valor]] = new Array(); + } + parcelas_array[cartoes[valor]][parcela.quantity] = parcela.installmentAmount;// global; + } + }); + + var total_parcelas_retorno = response.installments[bandeira].length; + jQuery(id+" select[name=parcelamento] option:gt("+(total_parcelas_retorno-1)+")").remove(); + + jQuery(id).show(); +} +function mostra_erro(erro) { + if (erro) { + jQuery('#div_erro').show(); + } else { + jQuery('#div_erro').hide(); + } +} +function status_erro() { + return jQuery('#div_erro').css('display'); +} +// Método que marca o campo radio manualmente ( para o ie ) +function marcar_radio(id) { + jQuery('#'+id).attr('checked','checked'); +} +jQuery(document).ready(function(){ + jQuery('#cvv').mask("999?9"); + jQuery('#expiry_date').mask("99/99"); + jQuery('#phone').mask("(99) 9999-9999?9"); + jQuery('#cpf_titular').mask("999.999.999-99"); + jQuery('#birthdate').mask("99/99/9999"); +}); +/* + Envio dos dados do cartão +*/ +var erro = false; +function erro_cartao(id) { + jQuery('form#'+id+' input[type=submit]').val('Efetuar Pagamento'); + erro = true; + return false; +} +function msgPop() { + jQuery.facebox(jQuery('#system-message-cartao').clone().attr('id','system-message-cartao').html()); +} +function pagamentoEmAndamento(texto_msg) { + jQuery('#div_erro').removeClass('error'); + jQuery('#div_erro_conteudo').html('
'+texto_msg+'

'); + msgPop(); +} +function submeter_cartao(formulario) { + var id = 'form#'+jQuery(formulario).attr('id'); + var cartao_selecionado = jQuery(id+' input[name=tipo_pgto]:checked').val(); + var qtde_parcelas = jQuery(id+' select[name=parcelamento]:visible').length; + var parcela_selecionada = jQuery(id+' select[name=parcelamento]:visible').val(); + var numero_cartao = jQuery(id+' input#card_number').val(); + var validade_cartao = jQuery(id+' input#expiry_date').val(); + var cvv_cartao = jQuery(id+' input#cvv').val(); + var titular_cartao = jQuery(id+' input#name_on_card').val(); + jQuery('#div_erro').show(); + jQuery('#div_erro').addClass('error'); + if (qtde_parcelas == 0) { + jQuery('#div_erro_conteudo').text('Selecione um parcelamento do Cartão de Crédito'); + msgPop(); + return erro_cartao(id); + } + + if (numero_cartao == '') { + jQuery('#div_erro_conteudo').text('Digite o número do Cartão de Crédito'); + msgPop(); + return erro_cartao(id); + } + if (numero_cartao.length < 14) { + jQuery('#div_erro_conteudo').text('Número de cartão de crédito inválido'); + msgPop(); + return erro_cartao(id); + } + if (validade_cartao == '') { + jQuery('#div_erro_conteudo').text('Digite a validade do Cartão de Crédito'); + msgPop(); + return erro_cartao(id); + } + if (cvv_cartao == '') { + jQuery('#div_erro_conteudo').text('Digite o código de verificação Cartão de Crédito'); + msgPop(); + return erro_cartao(id); + } + if (cartao_selecionado == '') { + jQuery('#div_erro_conteudo').text('Selecione um Cartão de Crédito'); + msgPop(); + return erro_cartao(id); + } + if (cartao_selecionado == 'amex' && cvv_cartao.length != 4) { + jQuery('#div_erro_conteudo').text('O Código de verificação deve ser de 4 dígitos.'); + msgPop(); + return erro_cartao(id); + } + if(cartao_selecionado != 'amex' && cvv_cartao.length != 3) { + jQuery('#div_erro_conteudo').text('O Código de verificação deve ser de 3 dígitos.'); + msgPop(); + return erro_cartao(id); + } + if (titular_cartao == '') { + jQuery('#div_erro_conteudo').text('Digite o nome impresso no Cartão de Crédito'); + msgPop(); + return erro_cartao(id); + } + erro = false; + pagamentoEmAndamento('Pagamento em Andamento... '); + + jQuery('#forma_pagamento').val('CartaodeCredito'); + // jQuery('#tipo_pagamento').val(cartoes[cartao_selecionado]+' - '+parcela_selecionada+'x |'+titular_cartao+'|'+nascimento_titular+'|'+telefone_titular+'|'+cpf_titular); + jQuery('#tipo_pagamento').val(cartoes[cartao_selecionado]); + jQuery('#parcela_selecionada').val(parcela_selecionada); + // redireciona para o Pagseguro + solicitaPagamento(); + return false; +} +/* + Envio dos dados do cartão +*/ +function submeter_boleto(formulario) { + var id = 'form#'+formulario.id; + var dados_pagamento = { + "Forma": "BoletoBancario" + } + jQuery('#div_erro').show(); + jQuery('#div_erro').addClass('error'); + jQuery('#forma_pagamento').val('BoletoBancario'); + jQuery('#tipo_pagamento').val('Santander'); + jQuery('#parcela_selecionada').val(1); + + erro = false; + pagamentoEmAndamento('Pagamento em Andamento... '); + // redireciona para o Pagseguro + solicitaPagamento(); + return false; +} +function submeter_debito(formulario) { + var id = 'form#'+formulario.id; + var debito_selecionado = jQuery(id+' input[name=tipo_pgto_debito]:checked').val(); + jQuery('#div_erro').show(); + jQuery('#div_erro').addClass('error'); + if (debito_selecionado == '') { + jQuery('#div_erro_conteudo').text('Selecione um Débito Bancário'); + erro = true; + return false; + } + erro = false; + jQuery('#forma_pagamento').val('DebitoBancario'); + jQuery('#tipo_pagamento').val(debito[debito_selecionado]); + jQuery('#parcela_selecionada').val(1); + pagamentoEmAndamento('Pagamento em Andamento... '); + // redireciona para o Pagseguro + solicitaPagamento(); + + return false; +} +function solicitaPagamento() { + pagamentoEmAndamento('Estabelecendo conexão segura com o PagSeguro... '); + var forma_pagamento = jQuery('#forma_pagamento').val(); + var tipo_pagamento = jQuery('#tipo_pagamento').val(); + var parcela_selecionada = jQuery('#parcela_selecionada').val(); + var hash = PagSeguroDirectPayment.getSenderHash(); + var dados = 'tipo_pagamento='+tipo_pagamento+ + '&forma_pagamento='+forma_pagamento+ + '&parcela_selecionada='+parcela_selecionada+ + '&order_number='+jQuery('#order_number').val()+ + '&senderHash='+hash; + if (forma_pagamento == 'CartaodeCredito' || forma_pagamento == 'CartaodeDebito') { + // recupera o hash do pagseguro + // console.log(tipo_pagamento); + // console.log(parcelas_array[tipo_pagamento]); + // console.log(parcelas_array[tipo_pagamento][parcela_selecionada]); + dados += '&c_holder='+jQuery('#name_on_card').val()+ + '&c_holder='+jQuery('#name_on_card').val()+ + '&c_phone='+jQuery('#phone').val()+ + '&c_birthdate='+jQuery('#birthdate').val()+ + '&c_cpf='+jQuery('#cpf_titular').val()+ + '&valor_parcela='+parcelas_array[tipo_pagamento][parcela_selecionada]; + //'&c_number='+jQuery('#card_number').val()+ + //'&c_securityCode='+jQuery('#cvv').val()+ + //'&c_expiry_date='+jQuery('#expiry_date').val()+ + var cartao = jQuery('#expiry_date').val(); + var arr_cartao = cartao.split('/'); + var expirationMonth_ps = arr_cartao[0]; + var expirationYear_ps = '20'+arr_cartao[1]; + var bandeiraPagseguro; + /* + PagSeguroDirectPayment.getBrand({ + cardBin: cartao, + success: function(response) { + //bandeira encontrada + bandeiraPagseguro = response.brand.name; + }, + error: function(response) { + //tratamento do erro + }, + complete: function(response) { + //tratamento comum para todas chamadas + console.log(response); + } + }); + */ + pagamentoEmAndamento('Garantindo a segurança do cartão de crédito... '); + var param = { + cardNumber: jQuery('#card_number').val(), + cvv: jQuery('#cvv').val(), + brand: tipo_pagamento.toLowerCase(), + expirationMonth: expirationMonth_ps, + expirationYear: expirationYear_ps, + success: function(response) { + //token gerado, esse deve ser usado na chamada da API do Checkout Transparente + var token_compra = response.card.token; + dados += "&token_compra="+token_compra; + postWebservice(dados, forma_pagamento); + }, + error: function(response) { + // tratamento do erro + }, + complete: function(response) { + // tratamento comum para todas chamadas + if (response.error == true) { + var mensagem; + var mensagem_html = 'Erros:
'; + var mensagem_erro = ''; + for (var i in response.errors) { + if (response.errors.hasOwnProperty(i) && typeof(i) !== 'function') { + mensagem_erro = response.errors[i]; + if (mensagem_erro == 'creditcard number with invalid length') { + mensagem_erro = 'Digite um número de Cartão de crédito válido'; + } + mensagem_html += ""+i+""+" - "+ mensagem_erro+ '
'; + } + } + mensagem = mensagem_html; + jQuery('#div_erro_conteudo').html(mensagem); + msgPop(); + } + // console.log(response); + } + } + PagSeguroDirectPayment.createCardToken(param); + } else { + postWebservice(dados,forma_pagamento); + } +} +function postWebservice(dados,forma_pagamento) { + pagamentoEmAndamento('Solicitando ao servidor do PagSeguro... '); + jQuery.ajax({ + type: "POST", + url: redireciona_pagseguro, + data: dados, + dataType: "json", + success: function(retorno) { + // mensagem de retorno do pagamento + var mensagem_pagamento = ''; + if (retorno.tipo_pagamento == 'BoletoBancario') { + jQuery(document).bind('beforeReveal.facebox', function() { + jQuery('#facebox *').width('800px'); + jQuery('#facebox .close').width('10px').click(function(){ + jQuery('#container_pagseguro .mainpagseguro').hide('slow'); + location.href = url_recibo_pagseguro; + }); + }); + jQuery.facebox(''); + mensagem_pagamento += 'Caso não tenha aberto a popup com o boleto,
clique aqui para realizar o pagamento.
'; + } + + if (retorno.tipo_pagamento == 'DebitoBancario') { + window.open(retorno.paymentLink); + // jQuery('#container_pagseguro form').parent().hide('slow'); + jQuery('#container_pagseguro .mainpagseguro').hide('slow'); + mensagem_pagamento += 'Pagamento com débito bancário em andamento
'; + mensagem_pagamento += 'Caso não tenha aberto a popup, clique aqui para realizar o pagamento.
'; + + jQuery('#div_erro_conteudo').show().html(mensagem_pagamento+'
'); + jQuery('#div_erro_conteudo').animate({"padding":"20px","font-size":"15px"}, 1000); + jQuery.facebox(jQuery('#div_erro_conteudo').clone().attr('id','system-message-cartao').html()); + } + + if (!retorno.erro) { + // pagamento aprovado/em anaĺise/em andamento + if (retorno.status == '1' || retorno.status == '2' || retorno.status == '3'){ + jQuery('#div_erro').addClass('success').removeClass('error').show(); + } else { + jQuery('#div_erro').addClass('error').show(); + } + + if (forma_pagamento == 'CartaodeCredito' || forma_pagamento == 'CartaodeDebito') { + mensagem_pagamento +='Em alguns segundos você será redirecionado automaticamente para o comprovante do Pagamento ou clique aqui.'; + jQuery('#div_erro_conteudo').show().html(retorno.msg+'

'+mensagem_pagamento); + msgPop(); + var t = setTimeout('redireciona_recibo()',5000); + } else { + mensagem_pagamento += 'Clique no link para acessar os detalhes do pedido.'; + jQuery('#div_erro_conteudo').show().html(retorno.msg+'

'+mensagem_pagamento); + } + jQuery('#container_pagseguro .mainpagseguro').hide('slow'); + jQuery('#div_erro_conteudo').animate({"padding":"20px","font-size":"15px"}, 1000); + } else { + jQuery('#div_erro').addClass('error').show(); + var mensagem; + if (typeof retorno.msg_erro !== 'undefined' && retorno.msg_erro !== null && typeof retorno.msg_erro.length === 'number') { + var mensagem_html = 'Erros:
'; + for(i=0; i'; + } + mensagem = mensagem_html; + } else { + mensagem = retorno.msg_erro; + } + if (mensagem == 'Pagamento já foi realizado') { + mensagem +='
Clique aqui para ser redirecionado para o status do Pagamento.'; + // jQuery('#container_pagseguro form').parent().hide('slow'); + jQuery('#container_pagseguro .mainpagseguro').hide('slow'); + } + jQuery('#div_erro_conteudo').show().html(mensagem+'
'); + jQuery('#div_erro_conteudo').animate({"padding":"20px","font-size":"15px"}, 1000); + jQuery.facebox(jQuery('#div_erro_conteudo').clone().addClass('error').attr('id','system-message-cartao').html()); + } + } + }); +} +function redireciona_recibo() { + // jQuery('#container_pagseguro form').hide(); + jQuery('#container_pagseguro .mainpagseguro').hide(); + location.href = url_recibo_pagseguro; +} +function efeito_divs(mostra) { + jQuery('.div_pagamentos form .conteudo_pagseguro').hide(); + jQuery('#'+mostra+' form .conteudo_pagseguro').show(); +} +var id_div_pagamento; +jQuery(document).ready(function(){ + jQuery('form ul.cards input[type=radio]').click(function(){ + id_div_pagamento = jQuery(this).parents('.div_pgtos').attr('id'); + // console.log('id_div_pagamento '+id_div_pagamento); + jQuery('div#'+id_div_pagamento+' input[type=radio][name=toggle_pagamentos]').attr('checked','checked'); + efeito_divs(id_div_pagamento); + }); + jQuery('a.info_cvv').click(function(){ + var html_cvv = '

Código de segurança

'+ + '
Para sua segurança, solicitamos que informe alguns números do seu cartão de crédito.
'+ + '
Onde encontrar:
'+ + '
Informe os três últimos números localizados no verso do cartão.
'; + jQuery.facebox(html_cvv); + }); +}); +function float2moeda(num) { + x = 0; + if(num<0) { + num = Math.abs(num); + x = 1; + } + if(isNaN(num)) num = "0"; + cents = Math.floor((num*100+0.5)%100); + num = Math.floor((num*100+0.5)/100).toString(); + if(cents < 10) cents = "0" + cents; + for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) + num = num.substring(0,num.length-(4*i+3))+'.' + +num.substring(num.length-(4*i+3)); + ret = num + ',' + cents; + if (x == 1) ret = ' - ' + ret;return ret; +} +function moeda2float(moeda) { + moeda = moeda.replace(".",""); + moeda = moeda.replace(",","."); + return parseFloat(moeda); +} + +jQuery(function($){ + + var activepg = jQuery('.pg_nav li.active').find('a').attr("data-id"); + + $(activepg).show(); + + //jQuery('div#'+activepg+' input[type=radio][name=toggle_pagamentos]').attr('checked','checked'); + + + // Set o radio dos cartoes + jQuery('.cartoes input:radio').click(function(){ + jQuery('.cartoes label').removeClass('rchecked'); + jQuery('.cartoes label[for='+jQuery(this).attr("id")+']').addClass('rchecked'); // checkedClass is defined in your CSS + + }); + + // Seta as tabs + jQuery('.pg_nav li').click(function(){ + jQuery('.pg_nav li').removeClass('active'); + jQuery('.tabcontent').hide(); + var area = jQuery(this).find('a').attr("data-id") + + jQuery(this).addClass('active'); + jQuery(area).show(); + + jQuery('div'+area+' input[type=radio][name=toggle_pagamentos]').attr('checked','checked'); + }); + +}); + diff --git a/assets/js/validar_cartao.js b/assets/js/validar_cartao.js new file mode 100644 index 0000000..fa2f3ff --- /dev/null +++ b/assets/js/validar_cartao.js @@ -0,0 +1,44 @@ +/*(function() { + + jQuery(function() { + jQuery('.demo .numbers li').wrapInner('').click(function(e) { + e.preventDefault(); + return jQuery('#card_number').val(jQuery(this).text()).trigger('input'); + }); + jQuery('.vertical.maestro').hide().css({ + opacity: 0 + }); + return jQuery('#card_number').validateCreditCard(function(result) { + var cartoes = new Array(); + cartoes['mastercard'] = 'master'; + cartoes['visa'] = 'visa'; + cartoes['discover'] = 'discover'; + cartoes['hipercard']= 'hipercard'; + cartoes['diners'] = 'diners'; + cartoes['amex'] = 'amex'; + + if (!(result.card_type != null)) { + jQuery('#card_number').removeClass('valid'); + //jQuery('input[name=tipo_pgto]').attr('checked',false); + //jQuery('input[name=tipo_pgto]').attr('disabled',true); + jQuery('.div_parcelas').hide(); + return; + } + + if (result.card_type.name != '') { + var id = '#tipo_'+cartoes[result.card_type.name]; + //jQuery(id).attr('checked',true); + //jQuery(id).removeAttr('disabled'); + show_parcelas(cartoes[result.card_type.name]); + } + + if (result.length_valid && result.luhn_valid) { + return jQuery('#card_number').addClass('valid'); + } else { + return jQuery('#card_number').removeClass('valid'); + } + }); + }); + +}).call(this); +*/ \ No newline at end of file diff --git a/checkout_transparente_pagseguro.png b/checkout_transparente_pagseguro.png new file mode 100644 index 0000000000000000000000000000000000000000..0c13b4d0c46673e76d550d8e0d86b40090e36323 GIT binary patch literal 62101 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

$;s^&CU62}B*(vGw4XnP-c6e+Ux~hX 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 + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. \ No newline at end of file diff --git a/imagens/Thumbs.db b/imagens/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..025db0de9eedb19b4ef613a4310b535fef558a37 GIT binary patch literal 51712 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

  • Cartão de Crédito
  • '; + } + + if ($method->ativar_debito ) { + $lt_cartaod = '
  • Débito Bancário
  • '; + if ( !$method->ativar_cartao ) { + $lt_cartaod = '
  • Débito Bancário
  • '; + } + } + + if ($method->ativar_boleto) { + $lt_boleto = '
  • Boleto
  • '; + + if ( !$method->ativar_cartao && !$method->ativar_debito ) { + $lt_boleto = '
  • Boleto
  • '; + } + } + + $conteudo = ' + +
    + +
    +

    '.JText::_('VMPAYMENT_PAGSEGUROTRANSPARENTE_TRANSACTION_TITLE').'

    +
    + + +
    + +
    +
    + + +
    +
    +
    + + Pague com + +
    +
      + '.$lt_cartao .' + '.$lt_cartaod.' + '.$lt_boleto .' +
    +
    +
    + + + + + + + + +
    +
    + '; + + + if ($method->ativar_cartao) { + $conteudo .= $this->getPagamentoCartao($method, $order); + } + + + if ($method->ativar_debito) { + $conteudo .= $this->getPagamentoDebito($method, $order); + } + if ($method->ativar_boleto) { + $conteudo .= $this->getPagamentoBoleto($method, $order); + } + $conteudo .= " +
    +
    +
    + +
    + "; + + return $conteudo; + } + + public function getRadioTermosPagseguro(){ + /* + return " + Por favor, leia e aceite os termos de gestão de pagamentos do Pagseguro."; + */ + return; + } + public function getPagamentoCartao($method, $order) { + $order_total = round($order['details']['BT']->order_total,2); + $cartoes_aceitos = array(); + $method->cartao_visa?$cartoes_aceitos[] = 'visa':''; + $method->cartao_master==1?$cartoes_aceitos[] = 'master':''; + $method->cartao_elo==1?$cartoes_aceitos[] = 'elo':''; + $method->cartao_diners==1?$cartoes_aceitos[] = 'diners':''; + $method->cartao_amex==1?$cartoes_aceitos[] = 'amex':''; + $method->cartao_hipercard==1?$cartoes_aceitos[] = 'hipercard':''; + $method->cartao_aura==1?$cartoes_aceitos[] = 'aura':''; + + $html_radio_termos_pagseguro = $this->getRadioTermosPagseguro(); + // campo telefone + $bt_comprador = $order['details']['BT']; + $phone = $bt_comprador->phone_1; + // cpf, data de nascimento + $campo_cpf = $method->campo_cpf; + $campo_cep = $method->campo_cep; + $campo_cnpj = $method->campo_cnpj; + $campo_data_nascimento = $method->campo_data_nascimento; + // campo data de nascimento + $birthdate = $this->formataData((isset($bt_comprador->$campo_data_nascimento) and !empty($bt_comprador->$campo_data_nascimento))?$bt_comprador->$campo_data_nascimento:''); + $cpf = $this->formataCPF((isset($bt_comprador->$campo_cpf) and !empty($bt_comprador->$campo_cpf))?$bt_comprador->$campo_cpf:''); + + $campo_nome = $method->campo_nome; + $campo_sobrenome = $method->campo_sobrenome; + + $nome = $bt_comprador->$campo_nome.' '.$bt_comprador->$campo_sobrenome; + $html = ' +
    + +
    +
    +

    + + +

    +
    + +
    + + +
      + +
      • '; + foreach($cartoes_aceitos as $v) { + $html .= "
      • "; + } + $html .= ' +
      + + + + +
    • +
    +
    + + '; + return $html; + } + + + + public function getPagamentoBoleto($method, $order) { + $order_total = round($order['details']['BT']->order_total,2); + $html_radio_termos_pagseguro = $this->getRadioTermosPagseguro(); + $html = ' +
    +
    + + +
    +

    + + +

    +
    + +
    +
      +
    • +
        +
      • + +
      • +
      +
    • +
    +
    + +
    +
    +
    '; + return $html; + } + + public function getPagamentoDebito($method, $order) { + + $order_total = round($order['details']['BT']->order_total,2); + $debitos_aceitos = array(); + $method->debito_bb?$debitos_aceitos[] = 'bb':''; + $method->debito_bradesco==1?$debitos_aceitos[] = 'bradesco':''; + $method->debito_banrisul==1?$debitos_aceitos[] = 'banrisul':''; + $method->debito_itau==1?$debitos_aceitos[] = 'itau':''; + $method->debito_hsbc==1?$debitos_aceitos[] = 'hsbc':''; + $html_radio_termos_pagseguro = $this->getRadioTermosPagseguro(); + + $html =' +
    +
    + +
    +

    + + +

    +
    + + +
    +
      +
    • +
        '; + foreach($debitos_aceitos as $v) { + $html .= "
      • "; + } + $html .= " +
      +
    • +
    +
    + +
    + + +
    +
    + + "; + return $html; + } + public function getSessionIdPagseguro($method) { + $codigo = $this->getSessionidPagSeguro_request($method); + return $codigo; + /* + for ($i=0; $i < 2; $i++) { + $codigo = $this->getSessionidPagSeguro_request($method); + if (!empty($codigo)) { + return $codigo; + } + } + return false; + */ + } + public function getSessionidPagSeguro_request($method) { + $email_pagseguro = $this->getSellerEmail($method); + $token_pagseguro = $this->getToken($method); + $url_ws_pagseguro = $this->getUrlWsPagseguro($method); + # /v2/sessions?email={email}&token={token} + // $url_completa = $url_ws_pagseguro.'/v2/sessions?email='.$email_pagseguro.'&token='.$token_pagseguro; + if ($method->modo_debug) { + echo $url_ws_pagseguro.'/v2/sessions?email='.$email_pagseguro.'&token='.$token_pagseguro; + } + $params = array(); + $params['email'] = $email_pagseguro; + $params['token'] = $token_pagseguro; + if(function_exists('curl_exec')) { + + ob_start(); + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url_ws_pagseguro.'/v2/sessions'); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params, '', '&')); + // curl_setopt($ch, CURLOPT_HTTPHEADER, $oAuth); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); + + curl_exec($ch); + $resposta = ob_get_contents(); + ob_end_clean(); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + } else if(ini_get('allow_url_fopen') == '1') { + $postdata = http_build_query( + array( + 'email' => $email_pagseguro, + 'token' => $token_pagseguro + ) + ); + $opts = array('http' => + array( + 'method' => 'POST', + 'header' => 'Content-type: application/x-www-form-urlencoded', + 'content' => $postdata + ) + ); + $context = stream_context_create($opts); + $resposta = file_get_contents($url_ws_pagseguro.'/v2/sessions', false, $context); + } else { + die('Para o funcionamento do módulo, é necessário CURL ou file_get_contents ativo'); + } + if ($method->modo_debug) { + print_r($resposta); + } + $xml = new DomDocument(); + $dom = $xml->loadXML($resposta); + $codigo = $xml->getElementsByTagName('id')->item(0)->nodeValue; + return $codigo; + } + + // grava os dados do retorno da Transação + public function gravaDadosRetorno($method, $status="", $msg_status="", $url_redirecionar='', $tipo_pagamento="", $forma_pagamento="", $parcela_selecionada="") { + $timestamp = date('Y-m-d').'T'.date('H:i:s'); + // recupera as informações do pagamento + $db = JFactory::getDBO(); + $query = 'SELECT payment_name, payment_order_total, payment_currency, virtuemart_paymentmethod_id + FROM `' . $this->_tablename . '` + WHERE order_number = "'.$this->order_number.'"'; + $db->setQuery($query); + $pagamento = $db->loadObjectList(); + $type_transaction = $tipo_pagamento.' - '.$forma_pagamento.($parcela_selecionada!=''?' - '.$parcela_selecionada.'x ':''); + // $log = $this->timestamp.'|'.$this->transactionCode.'|'.$msg_status.'|'.$tipo_pagamento.'|'.$forma_pagamento.'|'.$pagamento[0]->payment_order_total; + $log = $timestamp.'|'.$this->transactionCode.'|'.$msg_status.'|'.$tipo_pagamento.'|'.$forma_pagamento.'|'.$pagamento[0]->payment_order_total; + + if (!($virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber ($this->order_number))) { + return NULL; + } + $response_fields = array(); + $response_fields['virtuemart_order_id'] = $virtuemart_order_id; + $response_fields['transactionCode'] = $this->transactionCode; + $response_fields['type_transaction'] = $type_transaction; + $response_fields['log'] = $log; + $response_fields['status'] = $status; + $response_fields['msg_status'] = $msg_status; + $response_fields['order_number'] = $this->order_number; + if ($url_redirecionar != '') { + $response_fields['url_redirecionar'] = $url_redirecionar; + } + + $response_fields['payment_name'] = $pagamento[0]->payment_name; + $response_fields['payment_currency'] = $pagamento[0]->payment_currency; + $response_fields['payment_order_total'] = $pagamento[0]->payment_order_total; + $response_fields['virtuemart_paymentmethod_id'] = $pagamento[0]->virtuemart_paymentmethod_id; + + $this->storePSPluginInternalData($response_fields, 'virtuemart_order_id', true); + } + + + function plgVmgetPaymentCurrency($virtuemart_paymentmethod_id, &$paymentCurrencyId) { + if (!($method = $this->getVmPluginMethod($virtuemart_paymentmethod_id))) { + return null; // Another method was selected, do nothing + } + if (!$this->selectedThisElement($method->payment_element)) { + return false; + } + $this->getPaymentCurrency($method); + $paymentCurrencyId = $method->payment_currency; + } + + /** + * Display stored payment data for an order + * + */ + function plgVmOnShowOrderBEPayment($virtuemart_order_id, $virtuemart_payment_id) { + if (!$this->selectedThisByMethodId($virtuemart_payment_id)) { + return null; // Another method was selected, do nothing + } + $db = JFactory::getDBO(); + $q = 'SELECT * FROM `' . $this->_tablename . '` ' + . 'WHERE `virtuemart_order_id` = ' . $virtuemart_order_id; + $db->setQuery($q); + if (!($paymentTable = $db->loadObject())) { + vmWarn(500, $q . " " . $db->getErrorMsg()); + return ''; + } + $this->getPaymentCurrency($paymentTable); + $html = '' . "\n"; + $html .=$this->getHtmlHeaderBE(); + + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_PAYMENT_NAME', 'Pagseguro API Transparente'); + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_PAYMENT_DATE', $paymentTable->modified_on); + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_CODIGO_PAGSEGUROTRANSPARENTE', $paymentTable->transactionCode); + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_STATUS', $paymentTable->status . ' - ' . $paymentTable->msg_status); + if (!empty($paymentTable->cofre)) + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_COFRE', $paymentTable->cofre); + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_TOTAL_CURRENCY', $paymentTable->payment_order_total . ' ' . $paymentTable->payment_currency); + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_TYPE_TRANSACTION', $paymentTable->type_transaction); + if (!empty($paymentTable->nome_titular_cartao)) + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_NOME_TITULAR_CARTAO', $paymentTable->nome_titular_cartao); + if (!empty($paymentTable->nascimento_titular_cartao)) + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_NASCIMENTO_TITULAR_CARTAO', $paymentTable->nascimento_titular_cartao); + if (!empty($paymentTable->telefone_titular_cartao)) + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_TELEFONE_TITULAR_CARTAO', $paymentTable->telefone_titular_cartao); + if (!empty($paymentTable->cpf_titular_cartao)) + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_CPF_TITULAR_CARTAO', $paymentTable->cpf_titular_cartao); + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_LOG', $paymentTable->log); + $html .= '
    ' . "\n"; + return $html; + } + function getCosts(VirtueMartCart $cart, $method, $cart_prices) { + if (preg_match('/%$/', $method->cost_percent_total)) { + $cost_percent_total = substr($method->cost_percent_total, 0, -1); + } else { + $cost_percent_total = $method->cost_percent_total; + } + return ($method->cost_per_transaction + ($cart_prices['salesPrice'] * $cost_percent_total * 0.01)); + } + /** + * Check if the payment conditions are fulfilled for this payment method + * @author: Valerie Isaksen + * + * @param $cart_prices: cart prices + * @param $payment + * @return true: if the conditions are fulfilled, false otherwise + * + */ + protected function checkConditions($cart, $method, $cart_prices) { + // $params = new JParameter($payment->payment_params); + $address = (($cart->ST == 0) ? $cart->BT : $cart->ST); + $amount = $cart_prices['salesPrice']; + $amount_cond = ($amount >= $method->min_amount AND $amount <= $method->max_amount + OR + ($method->min_amount <= $amount AND ($method->max_amount == 0) )); + if (!$amount_cond) { + return false; + } + $countries = array(); + if (!empty($method->countries)) { + if (!is_array($method->countries)) { + $countries[0] = $method->countries; + } else { + $countries = $method->countries; + } + } + // probably did not gave his BT:ST address + if (!is_array($address)) { + $address = array(); + $address['virtuemart_country_id'] = 0; + } + if (!isset($address['virtuemart_country_id'])) + $address['virtuemart_country_id'] = 0; + if (count($countries) == 0 || in_array($address['virtuemart_country_id'], $countries) || count($countries) == 0) { + return true; + } + return false; + } + /* + * We must reimplement this triggers for joomla 1.7 + */ + /** + * Create the table for this plugin if it does not yet exist. + * This functions checks if the called plugin is active one. + * When yes it is calling the pagsegurotransparente method to create the tables + * @author Valérie Isaksen + * + */ + function plgVmOnStoreInstallPaymentPluginTable($jplugin_id) { + return $this->onStoreInstallPluginTable($jplugin_id); + } + /** + * This event is fired after the payment method has been selected. It can be used to store + * additional payment info in the cart. + * + * @author Max Milbers + * @author Valérie isaksen + * + * @param VirtueMartCart $cart: the actual cart + * @return null if the payment was not selected, true if the data is valid, error message if the data is not vlaid + * + */ + public function plgVmOnSelectCheckPayment(VirtueMartCart $cart) { + return $this->OnSelectCheck($cart); + } + /** + * plgVmDisplayListFEPayment + * This event is fired to display the pluginmethods in the cart (edit shipment/payment) for exampel + * + * @param object $cart Cart object + * @param integer $selected ID of the method selected + * @return boolean True on succes, false on failures, null when this plugin was not selected. + * On errors, JError::raiseWarning (or JError::raiseError) must be used to set a message. + * + * @author Valerie Isaksen + * @author Max Milbers + */ + public function plgVmDisplayListFEPayment(VirtueMartCart $cart, $selected = 0, &$htmlIn) { + return $this->displayListFE($cart, $selected, $htmlIn); + } + /* + * plgVmonSelectedCalculatePricePayment + * Calculate the price (value, tax_id) of the selected method + * It is called by the calculator + * This function does NOT to be reimplemented. If not reimplemented, then the default values from this function are taken. + * @author Valerie Isaksen + * @cart: VirtueMartCart the current cart + * @cart_prices: array the new cart prices + * @return null if the method was not selected, false if the shiiping rate is not valid any more, true otherwise + * + * + */ + public function plgVmonSelectedCalculatePricePayment(VirtueMartCart $cart, array &$cart_prices, &$cart_prices_name) { + return $this->onSelectedCalculatePrice($cart, $cart_prices, $cart_prices_name); + } + /** + * plgVmOnCheckAutomaticSelectedPayment + * Checks how many plugins are available. If only one, the user will not have the choice. Enter edit_xxx page + * The plugin must check first if it is the correct type + * @author Valerie Isaksen + * @param VirtueMartCart cart: the cart object + * @return null if no plugin was found, 0 if more then one plugin was found, virtuemart_xxx_id if only one plugin is found + * + */ + function plgVmOnCheckAutomaticSelectedPayment(VirtueMartCart $cart, array $cart_prices = array()) { + return $this->onCheckAutomaticSelected($cart, $cart_prices); + } + /** + * This method is fired when showing the order details in the frontend. + * It displays the method-specific data. + * + * @param integer $order_id The order ID + * @return mixed Null for methods that aren't active, text (HTML) otherwise + * @author Max Milbers + * @author Valerie Isaksen + */ + public function plgVmOnShowOrderFEPayment($virtuemart_order_id, $virtuemart_paymentmethod_id, &$payment_name) { + $orderModel = VmModel::getModel('orders'); + $orderDetails = $orderModel->getOrder($virtuemart_order_id); + if (!($method = $this->getVmPluginMethod($orderDetails['details']['BT']->virtuemart_paymentmethod_id))) { + return false; + } + if (!$this->selectedThisByMethodId ($virtuemart_paymentmethod_id)) { + return NULL; + } // Another method was selected, do nothing + $view = JRequest::getVar('view'); + if ($view == 'orders' and $orderDetails['details']['BT']->virtuemart_paymentmethod_id == $virtuemart_paymentmethod_id) { + $orderModel = VmModel::getModel('orders'); + $orderDetails = $orderModel->getOrder($virtuemart_order_id); + $order_id = $orderDetails['details']['BT']->order_number; + $virtuemart_paymentmethod_id = $orderDetails['details']['BT']->virtuemart_paymentmethod_id; + + // consulta se há código de transação no pedido + $db = JFactory::getDBO(); + $query = 'SELECT transactionCode + FROM `' . $this->_tablename . '` + WHERE order_number = "'.$order_id.'"'; + $db->setQuery($query); + $dados_pagseguro = $db->loadObjectList(); + + if ($method->transacao_em_andamento == $orderDetails['details']['BT']->order_status) { + JHTML::_('behavior.modal'); + $url_recibo = JRoute::_('index.php?option=com_virtuemart&view=pluginresponse&tmpl=component&task=pluginresponsereceived&on='.$order_id.'&pm='.$virtuemart_paymentmethod_id); + $html = '
    Clique aqui para visualizar o status detalhado da transação no Pagseguro

    '; + JFactory::getApplication()->enqueueMessage( + $html, 'Prazos para aprovação do Pagamento via pagseguro: Cartão e Boleto 24h úteis Débito Online 2h.' + ); + } else if ( + ($method->transacao_cancelada == $orderDetails['details']['BT']->order_status) + or + ($method->transacao_em_andamento == $orderDetails['details']['BT']->order_status and isset($dados_pagseguro[0]->transactionCode) and $dados_pagseguro[0]->transactionCode == "") + ) { + + vmJsApi::js('facebox'); + vmJsApi::css('facebox'); + + $this->order_id = $orderDetails['details']['BT']->order_number; + $url = JURI::root(); + // carrega os js e css + $doc = JFactory::getDocument(); + $url_lib = $url. '/' .'plugins'. '/' .'vmpayment'. '/' .'pagsegurotransparente'.'/'; + $url_assets = $url_lib . 'assets'. '/'; + $url_js = $url_assets . 'js'. '/'; + $url_css = $url_assets . 'css'. '/'; + $this->url_imagens = $url_lib . 'imagens'. '/'; + + // redirecionar dentro do componente para validar + $url_redireciona_pagsegurotransparente = JROUTE::_(JURI::root() . 'index.php?option=com_virtuemart&view=pluginresponse&task=pluginnotification&task2=redirecionarPagseguroAPI&tmpl=component&pm='.$orderDetails['details']['BT']->virtuemart_paymentmethod_id."&order_number=".$this->order_id); + $url_pedidos = JROUTE::_(JURI::root() . 'index.php?option=com_virtuemart&view=orders'); + + if ($method->url_redirecionamento) { + $url_recibo_pagsegurotransparente = JROUTE::_($method->url_redirecionamento); + } else { + $url_recibo_pagsegurotransparente = JROUTE::_(JURI::root() .'index.php?option=com_virtuemart&view=pluginresponse&task=pluginresponsereceived&on='.$this->order_id.'&pm='.$orderDetails['details']['BT']->virtuemart_paymentmethod_id); + } + + $session_id_pagseguro = $this->getSessionIdPagseguro($method); + if (!$session_id_pagseguro) { + JFactory::getApplication()->enqueueMessage( 'Erro ao configurar e-mail e token do PagSeguro', 'error' ); + return false; + } + $url_js_directpayment = $this->getUrlJsPagseguro($method); + $doc->addCustomTag(' + + + + + + + '.($load_squeezebox!=0?$sq_js:'').' + + + + '.($load_squeezebox!=0?$sq_css:'').' + '); + + + $html .= $this->Pagsegurotransparente_mostraParcelamento($method, $orderDetails); + echo $html; + + } + + } + + + + $this->onShowOrderFE($virtuemart_order_id, $virtuemart_paymentmethod_id, $payment_name); + } + + /** + * This event is fired during the checkout process. It can be used to validate the + * method data as entered by the user. + * + * @return boolean True when the data was valid, false otherwise. If the plugin is not activated, it should return null. + * @author Max Milbers + * + * public function plgVmOnCheckoutCheckDataPayment( VirtueMartCart $cart) { + * return null; + * } + */ + /** + * This method is fired when showing when priting an Order + * It displays the the payment method-specific data. + * + * @param integer $_virtuemart_order_id The order ID + * @param integer $method_id method used for this order + * @return mixed Null when for payment methods that were not selected, text (HTML) otherwise + * @author Valerie Isaksen + */ + function plgVmonShowOrderPrintPayment($order_number, $method_id) { + return $this->onShowOrderPrint($order_number, $method_id); + } + function plgVmDeclarePluginParamsPayment($name, $id, &$data) { + return $this->declarePluginParams('payment', $name, $id, $data); + } + function plgVmSetOnTablePluginParamsPayment($name, $id, &$table) { + return $this->setOnTablePluginParams($name, $id, $table); + } + //Notice: We only need to add the events, which should work for the specific plugin, when an event is doing nothing, it should not be added + /** + * Save updated order data to the method specific table + * + * @param array $_formData Form data + * @return mixed, True on success, false on failures (the rest of the save-process will be + * skipped!), or null when this method is not actived. + * @author Oscar van Eijk + * + * public function plgVmOnUpdateOrderPayment( $_formData) { + * return null; + * } + * + * Save updated orderline data to the method specific table + * + * @param array $_formData Form data + * @return mixed, True on success, false on failures (the rest of the save-process will be + * skipped!), or null when this method is not actived. + * @author Oscar van Eijk + * + * public function plgVmOnUpdateOrderLine( $_formData) { + * return null; + * } + * + * + * plgVmOnEditOrderLineBE + * This method is fired when editing the order line details in the backend. + * It can be used to add line specific package codes + * + * @param integer $_orderId The order ID + * @param integer $_lineId + * @return mixed Null for method that aren't active, text (HTML) otherwise + * @author Oscar van Eijk + * + * public function plgVmOnEditOrderLineBEPayment( $_orderId, $_lineId) { + * return null; + * } + * This method is fired when showing the order details in the frontend, for every orderline. + * It can be used to display line specific package codes, e.g. with a link to external tracking and + * tracing systems + * + * @param integer $_orderId The order ID + * @param integer $_lineId + * @return mixed Null for method that aren't active, text (HTML) otherwise + * @author Oscar van Eijk + * + * public function plgVmOnShowOrderLineFE( $_orderId, $_lineId) { + * return null; + * } + * + * /** + * This event is fired when the method notifies you when an event occurs that affects the order. + * Typically, the events represents for payment authorizations, Fraud Management Filter actions and other actions, + * such as refunds, disputes, and chargebacks. + * + * NOTE for Plugin developers: + * If the plugin is NOT actually executed (not the selected payment method), this method must return NULL + * + * @param $return_context: it was given and sent in the payment form. The notification should return it back. + * Used to know which cart should be emptied, in case it is still in the session. + * @param int $virtuemart_order_id : payment order id + * @param char $new_status : new_status for this order id. + * @return mixed Null when this method was not selected, otherwise the true or false + * + * @author Valerie Isaksen + * + * + * public function plgVmOnPaymentNotification() { + * return null; + * } + */ + function plgVmOnPaymentNotification() { + + if (!class_exists('VirtueMartCart')) + require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'); + if (!class_exists('shopFunctionsF')) + require(JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'); + if (!class_exists('VirtueMartModelOrders')) + require( JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php' ); + + // redireciona o fluxo para a api do Pagseguro + $task2 = JRequest::getVar('task2', ''); + + + if ($task2 == 'redirecionarPagseguroAPI') { + // trata os retornos no Virtuemart ( atualizando status ) + $pm = JRequest::getVar('pm'); + $order_number = JRequest::getVar('order_number'); + $virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber($order_number); + + $this->logInfo('plgVmOnPaymentNotification: virtuemart_order_id found ' . $virtuemart_order_id, 'message'); + if (!$virtuemart_order_id) { + return; + } + $vendorId = 0; + $payment = $this->getDataByOrderId($virtuemart_order_id); + if($payment->payment_name == '') { + return false; + } + // recupera as informações do método de pagamento + $method = $this->getVmPluginMethod($pm); + if (!$this->selectedThisElement($method->payment_element)) { + return false; + } + if (!$payment) { + $this->logInfo('getDataByOrderId payment not found: exit ', 'ERROR'); + return null; + } + $forma_pagamento = JRequest::getVar('forma_pagamento'); + $tipo_pagamento = JRequest::getVar('tipo_pagamento'); + // json de retorno js + $json_retorno = array(); + $json_retorno['tipo_pagamento'] = $forma_pagamento; + $json_retorno['status']; + // cria a transação com o webservice do PagSeguro + $retorno = $this->createTransaction(); + $arr_retorno = $retorno['msg']; + if ($retorno['erro'] == 'true') { + $json_retorno['erro'] = true; + $json_retorno['msg_erro'] = $this->trataRetornoFalhaPagseguro($arr_retorno, $method); + //$json_retorno['paymentLink'] = ''; + } else { + $this->trataRetornoSucessoPagseguro($arr_retorno, $method); + // no caso de boleto já retorna com o link + $json_retorno['paymentLink']= $arr_retorno['paymentLink']; + $json_retorno['erro'] = false; + $json_retorno['status'] = $arr_retorno['status']; + $json_retorno['msg'] = 'Transação: '.$arr_retorno['descriptionStatus']; + } + echo json_encode($json_retorno); + die(); + } else { + // retorno automático boleto/débito bancário Pagseguro + header("Status: 200 OK"); + $pagseguro_data = $_REQUEST; + /* + if (!isset($pagseguro_data['notificationType'])) { + return; + } + */ + $order_number = $pagseguro_data['order_number']; + $virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber($order_number); + $this->logInfo('plgVmOnPaymentNotification: Pagseguro - '.$pagseguro_data['transacao_id'].' - '.$pagseguro_data['pedido'].' - '.$pagseguro_data['status']); + if (!$virtuemart_order_id) { + return; + } + $vendorId = 0; + $payment = $this->getDataByOrderId($virtuemart_order_id); + if($payment->payment_name == '') { + return false; + } + $method = $this->getVmPluginMethod($payment->virtuemart_paymentmethod_id); + if (!$this->selectedThisElement($method->payment_element)) { + return false; + } + if (!$payment) { + $this->logInfo('getDataByOrderId payment not found: exit ', 'ERROR'); + return null; + } + $this->logInfo('pagseguro_ws_data ' . implode(' ', $pagseguro_data), 'message'); + // get all know columns of the table + $db = JFactory::getDBO(); + $url_ws_pagseguro = $this->getUrlWsPagseguro($method); + + // código de notificação da transação no PagSeguro + $notificationCode = $pagseguro_data['notificationCode']; + $notificationType = $pagseguro_data['notificationType']; + $emailPagseguro = $this->getSellerEmail($method); + $tokenPagseguro = $this->getToken($method); + $urlPost = $url_ws_pagseguro.'/v2/transactions/notifications/'.$notificationCode.'/?email='.$emailPagseguro.'&token='.$tokenPagseguro; + // $params = array( + // "email" => $this->getSellerEmail($method), + // "token" => $this->getToken($method) + // ); + $ch = curl_init(); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_URL, $urlPost); + curl_setopt($ch, CURLOPT_POST, false); + // curl_setopt($ch, CURLOPT_POSTFIELDS, $params); + $resposta = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + // faz a validação dos dados + if($httpCode == "200") { + // pega os dados da transação por completo + $xml = new DomDocument(); + $dom = $xml->loadXML($resposta); + $code_transacao = $xml->getElementsByTagName("code")->item(0)->nodeValue; + // consulta os dados do pagseguro + $query = 'SELECT order_number + FROM `' . $this->_tablename . '` + WHERE transactionCode = "'.$code_transacao.'"'; + $db->setQuery($query); + $dados_pagseguro = $db->loadObjectList(); + if ($dados_pagseguro[0]->order_number != $order_number){ + // não é a mesma transação do código da transação + $this->logInfo('plgVmOnPaymentNotification - return false transaction. Order number: ' . $order_number.' - Order number DB: '.$dados_pagseguro[0]->order_number, 'error'); + return; + } + + $status = $xml->getElementsByTagName("status")->item(0)->nodeValue; + $reference = $xml->getElementsByTagName("reference")->item(0)->nodeValue; + $type = $xml->getElementsByTagName("type")->item(0)->nodeValue; + $cancellationSource = $xml->getElementsByTagName("cancellationSource")->item(0)->nodeValue; + $installmentCount = $xml->getElementsByTagName("installmentCount")->item(0)->nodeValue; + // codigo meio pagamento + $code_payment = $xml->getElementsByTagName("paymentMethod")->item(0)->getElementsByTagName("paymentMethod")->item(0)->nodeValue; + + $arr_status_pagamento = $this->getStatusPagamentoPagseguroRetorno($method, $status); + $novo_status = $arr_status_pagamento[0]; + $mensagem = $arr_status_pagamento[1]; +// $meio_pagamento = $transacao_dados->transacao->meio_pagamento; + $codigo_meio_pagamento = $code_payment; + $forma_pagamento = $this->getPaymentMethod($code_payment); + $tipo_pagamento = $this->getNamePaymentByCode($type); + $parcela_selecionada = $installmentCount; + $transactionCode = $code_transacao; + $this->logInfo('plgVmOnPaymentNotification return new_status:' . $novo_status, 'message'); + // grava os dados de retorno e já troca o status do pedido + $this->gravaDadosRetorno($method, $novo_status, $mensagem,'',$tipo_pagamento,$forma_pagamento,$parcela_selecionada); + // não atualiza o pedido para transação concluída + if ($status != 4) { + $this->trocaStatusPedidoPagseguroAPI($transactionCode, $novo_status, $mensagem, $method, $order_number); + } + $this->emptyCart($return_context); + + } + die('ok'); + } + + } + + /** + * plgVmOnPaymentResponseReceived + * This event is fired when the method returns to the shop after the transaction + * + * the method itself should send in the URL the parameters needed + * NOTE for Plugin developers: + * If the plugin is NOT actually executed (not the selected payment method), this method must return NULL + * + * @param int $virtuemart_order_id : should return the virtuemart_order_id + * @param text $html: the html to display + * @return mixed Null when this method was not selected, otherwise the true or false + * + * @author Valerie Isaksen + * + * + * function plgVmOnPaymentResponseReceived(, &$virtuemart_order_id, &$html) { + * return null; + * } + */ + function plgVmOnPaymentResponseReceived(&$html='') { + // recibo da transação do Pagseguro + if (!class_exists('VirtueMartCart')) + require(JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php'); + if (!class_exists('shopFunctionsF')) + require(JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'); + if (!class_exists('VirtueMartModelOrders')) + require( JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php' ); + $pagsegurotransparente_data = JRequest::get('post'); + vmdebug('PAGSEGUROTRANSPARENTE plgVmOnPaymentResponseReceived', $pagsegurotransparente_data); + // the payment itself should send the parameter needed. + $virtuemart_paymentmethod_id = JRequest::getInt('pm', 0); + + if (!($method = $this->getVmPluginMethod($virtuemart_paymentmethod_id))) { + return null; // Another method was selected, do nothing + } + if (!$this->selectedThisElement($method->payment_element)) { + return null; + } + $order_number = JRequest::getString('on', 0); + $vendorId = 0; + if (!($virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber($order_number) )) { + return null; + } + if (!($paymentTable = $this->getDataByOrderId($virtuemart_order_id) )) { + // JError::raiseWarning(500, $db->getErrorMsg()); + return ''; + } + $payment_name = $this->renderPluginName($method); + $modelOrder = VmModel::getModel('orders'); + $orderdetails = $modelOrder->getOrder($virtuemart_order_id); + $html = $this->_getPaymentResponseHtml($paymentTable, $payment_name, $orderdetails['details'], $method); + $cart = VirtueMartCart::getCart(); + $cart->emptyCart(); + } + + function _getPaymentResponseHtml($pagsegurotransparenteTable, $payment_name, $orderDetails=null, $method=null) { + $html = '' . "\n"; + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_PAYMENT_NAME', $payment_name); + $task = JRequest::getVar('task',''); + $img_pagamentos = array(); + /* + $img_pagamentos['BoletoBancario - Boleto Bancário'] = 'boleto_bancario.jpg'; + $img_pagamentos['DebitoBancario - Bradesco'] = 'bradesco_debito.jpg'; + $img_pagamentos['DebitoBancario - BancoDoBrasil'] = 'bb_debito.jpg'; + $img_pagamentos['DebitoBancario - Banrisul'] = 'banrisul_debito.jpg'; + $img_pagamentos['DebitoBancario - Itau'] = 'itau_debito.jpg'; + */ + if ($task == 'pluginresponsereceived') { + JFactory::getApplication()->enqueueMessage( + JText::_('VMPAYMENT_PAGSEGUROTRANSPARENTE_CHECK_TRANSACTION') + ); + $link_pedido = JROUTE::_(JURI::root() . 'index.php?option=com_virtuemart&view=orders&layout=details&order_number='.$pagsegurotransparenteTable->order_number.'&order_pass='.$orderDetails['BT']->order_pass); + if (!empty($pagsegurotransparenteTable)) { + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_ORDER_NUMBER', $pagsegurotransparenteTable->order_number); + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_PAYMENT_DATE', $pagsegurotransparenteTable->modified_on); + $html .= ''; + if ($pagsegurotransparenteTable->transactionCode) { + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_CODIGO_PAGSEGUROTRANSPARENTE',''.$pagsegurotransparenteTable->transactionCode.''); + } + $pagsegurotransparente_status = 'Transação em Andamento'; + if ($pagsegurotransparenteTable->msg_status) { + //$pagsegurotransparente_status = ''.$pagsegurotransparenteTable->status. " - " . $pagsegurotransparenteTable->msg_status.'
    '; + $pagsegurotransparente_status = 'Transação: '. $pagsegurotransparenteTable->msg_status.'
    '; + } + if ($orderDetails['BT']->order_status == $method->transacao_em_andamento and $pagsegurotransparenteTable->url_redirecionar != '') { + //$url_imagem = JURI::root().DS.'plugins'.DS.'vmpayment'.DS.'pagsegurotransparente'.DS.'imagens'.DS; + //$url_imagem .= $img_pagamentos[$pagsegurotransparenteTable->type_transaction]; + //$imagem_redirecionar = ''; + if (!empty($pagsegurotransparenteTable->url_redirecionar)) { + $pagsegurotransparente_status .= ''; + } + } + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_STATUS', $pagsegurotransparente_status); + $html .= ''; + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_AMOUNT', $pagsegurotransparenteTable->payment_order_total. " " . $pagsegurotransparenteTable->payment_currency); + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_TYPE_TRANSACTION', $pagsegurotransparenteTable->type_transaction); + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_LOG', $pagsegurotransparenteTable->log); + $html .= '


    ' . "\n"; + $html .= '
    '; + $tmpl = JRequest::getVar('tmpl'); + if ($tmpl != 'component') { + $html .= ''.JText::_('VMPAYMENT_PAGSEGUROTRANSPARENTE_ORDER_DETAILS').' + ' . "\n"; + } + } + } else { + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_ORDER_NUMBER', $this->order_id); + } + $html .= '' . "\n"; + return $html; + } + + function plgVmOnUserPaymentCancel() { + if (!class_exists('VirtueMartModelOrders')) + require( JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php' ); + $order_number = JRequest::getVar('on'); + if (!$order_number) + return false; + $db = JFactory::getDBO(); + $query = 'SELECT ' . $this->_tablename . '.`virtuemart_order_id` FROM ' . $this->_tablename . " WHERE `order_number`= '" . $order_number . "'"; + $db->setQuery($query); + $virtuemart_order_id = $db->loadResult(); + if (!$virtuemart_order_id) { + return null; + } + $this->handlePaymentUserCancel($virtuemart_order_id); + return true; + } + + public function getPaymentMethod($codigo){ + // cartão de crédito + $arr_method_payments[101] = 'Visa'; + $arr_method_payments[102] = 'MasterCard'; + $arr_method_payments[103] = 'American Express'; + $arr_method_payments[104] = 'Diners'; + $arr_method_payments[105] = 'Hipercard'; + $arr_method_payments[106] = 'Aura'; + $arr_method_payments[107] = 'Elo'; + $arr_method_payments[108] = 'PLENOCard'; + $arr_method_payments[109] = 'PersonalCard'; + $arr_method_payments[110] = 'JCB'; + $arr_method_payments[111] = 'Discover'; + $arr_method_payments[112] = 'BrasilCard'; + $arr_method_payments[113] = 'FORTBRASIL'; + $arr_method_payments[114] = 'CARDBAN'; + $arr_method_payments[115] = 'VALECARD'; + $arr_method_payments[116] = 'Cabal'; + $arr_method_payments[117] = 'Mais!'; + $arr_method_payments[118] = 'Avista'; + $arr_method_payments[119] = 'GRANDCARD'; + $arr_method_payments[120] = 'Sorocred'; + // boleto bancário + $arr_method_payments[201] = 'Bradesco'; + $arr_method_payments[202] = 'Santander'; + // débito + $arr_method_payments[301] = 'Débito online Bradesco'; + $arr_method_payments[302] = 'Débito online Itaú'; + $arr_method_payments[303] = 'Débito online Unibanco'; + $arr_method_payments[304] = 'Débito online Banco do Brasil'; + $arr_method_payments[305] = 'Débito online Banco Real'; + $arr_method_payments[306] = 'Débito online Banrisul'; + $arr_method_payments[307] = 'Débito online HSBC'; + // saldo + $arr_method_payments[401] = 'Saldo PagSeguro'; + // oi paggo + $arr_method_payments[501] = 'Oi Paggo'; + // deposito + $arr_method_payments[701] = 'Depósito em conta - Banco do Brasil'; + $arr_method_payments[702] = 'Depósito em conta - HSBC'; + return $arr_method_payments[$codigo]; + } + public function getNamePaymentByCode($codigo) { + $arr_method_payments[1] = 'CartaodeCredito'; + $arr_method_payments[2] = 'BoletoBancario'; + $arr_method_payments[3] = 'DebitoBancario'; + $arr_method_payments[4] = 'SaldoPagseguro'; + $arr_method_payments[5] = 'OiPaggo'; + $arr_method_payments[7] = 'DepositoemConta'; + return $arr_method_payments[$codigo]; + } + public function getCreditCard() { + $arr_cartao = array(); + $holder = JRequest::getVar('c_holder'); + $number = JRequest::getVar('c_number'); + $securityCode = JRequest::getVar('c_securityCode'); + $expiry_date = $this->getExpiryDate(JRequest::getVar('c_expiry_date')); + $arr_cartao['holder'] = $holder; + $arr_cartao['number'] = $number; + $arr_cartao['securityCode'] = $securityCode; + $arr_cartao['maturityMonth']= $expiry_date['maturityMonth']; + $arr_cartao['maturityYear'] = '20'.$expiry_date['maturityYear']; + return $arr_cartao; + } + public function getExpiryDate($data) { + $arr_data = explode('/',$data); + $return_data['maturityMonth'] = $arr_data[0]; + $return_data['maturityYear'] = $arr_data[1]; + return $return_data; + } + public function getShipmentName($orderdetails) { + $shipmentmethods = VmModel::getModel('shipmentmethod'); + $data_shipment = $shipmentmethods->getTable('shipmentmethods'); + $data_shipment->load($orderdetails->virtuemart_shipmentmethod_id); + if (isset($data_shipment)) { + return $data_shipment->shipment_name; + } else { + return ''; + } + } + public function getStateName($state_id) { + $state = VmModel::getModel('state'); + $data_state = $state->getTable('states'); + $data_state->load($state_id); + if (isset($data_state)) { + return $data_state->state_2_code; + } else { + return ''; + } + } + public function getParcelas() { + $parcelas = JRequest::getVar('parcela_selecionada',1); + return $parcelas; + } + public function getTransactionKey($orderdetails) { + return ''; + } + public function getToken($method) { + if ($method->modo_teste) { + $token = $method->token_teste; + } else { + $token = $method->token; + } + return $token; + + } + public function getSellerEmail($method) { + if ($method->modo_teste) { + $sellerMail = $method->sellermail_teste; + } else { + $sellerMail = $method->sellermail; + } + return $sellerMail; + + } + public function getConsumerKey($method) { + if ($method->modo_teste) { + $consumerKey = $method->oauth_consumer_key_teste; + } else { + $consumerKey = $method->oauth_consumer_key; + } + return $consumerKey; + } + public function getUrlWsPagseguro($method) { + if ($method->modo_teste) { + return 'https://ws.sandbox.pagseguro.uol.com.br'; + } else { + return 'https://ws.pagseguro.uol.com.br'; + } + } + public function getUrlJsPagseguro($method) { + if ($method->modo_teste) { + return 'https://stc.sandbox.pagseguro.uol.com.br'; + } else { + return 'https://stc.pagseguro.uol.com.br'; + } + } + public function createTransaction() { + // retorno da transação + $arr_retorno = array(); + if (!class_exists('VirtueMartModelOrders')) { + require( JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php' ); + } + $order_number = JRequest::getVar('order_number'); + $virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber($order_number); + if (!$virtuemart_order_id) { + $arr_retorno['msg'] = 'Erro ao recuperar o id do pedido ao redirecionar'; + $arr_retorno['erro'] = 'true'; + } + $vendorId = 0; + $payment = $this->getDataByOrderId($virtuemart_order_id); + if($payment->payment_name == '') { + $arr_retorno['msg'] = 'Método de pagamento não encontrado'; + $arr_retorno['erro'] = 'true'; + } + // recupera as informações do método de pagamento + $virtuemart_paymentmethod_id = ($payment->virtuemart_paymentmethod_id)?$payment->virtuemart_paymentmethod_id:$pm; + $method = $this->getVmPluginMethod($virtuemart_paymentmethod_id); + // carregando pedido manualmente + $order = VirtueMartModelOrders::getOrder($virtuemart_order_id); + // cria a transação com o Pagseguro + $time = time()*1000; + $microtime = microtime(); + $rand = mt_rand(); + $charset = 'UTF-8'; + // dados do pagseguro ( configuração ) + $sellerMail = $this->getSellerEmail($method); + $token_pagseguro= $this->getToken($method); + $token_compra = JRequest::getVar('token_compra'); + $forma_pagamento= JRequest::getVar('forma_pagamento'); + $tipo_pagamento = JRequest::getVar('tipo_pagamento'); + $senderHash = JRequest::getVar('senderHash'); + // $numero_metodo_pagamento = $this->getPaymentMethod($forma_pagamento, $tipo_pagamento); + // if ($numero_metodo_pagamento) { + $json_pedido = array(); + // dados do pedido + $json_pedido['email'] = $sellerMail; + $json_pedido['token'] = $token_pagseguro; + $json_pedido['paymentMode'] = 'default'; + $json_pedido['receiverEmail'] = $this->getSellerEmail($method); + $json_pedido['currency'] = 'BRL'; + $total_tax = $order['details']['BT']->order_tax; + + // desconto e tarifa no mesmo campo + if (!empty($order["details"]["BT"]->coupon_discount)) { + // $extraAmount = $total_tax + ( (float)$order["details"]["BT"]->coupon_discount * -1); + $extraAmount = ( (float)$order["details"]["BT"]->coupon_discount ); + } else { + // $extraAmount = $total_tax; + $extraAmount = 0; + } + + // adiciona a tarifa do método de pagamento + if (!empty($order["details"]["BT"]->order_payment)) { + $extraAmount += $order["details"]["BT"]->order_payment; + } + + $json_pedido['extraAmount'] = number_format(round($extraAmount,2),2,'.',''); + $i = 1; + foreach ($order['items'] as $chave => $produto) { + $json_pedido['itemId'.$i] = ($produto->order_item_sku!='')?$produto->order_item_sku:$produto->virtuemart_product_id; + $json_pedido['itemDescription'.$i] = substr($produto->order_item_name,0,100); + $json_pedido['itemAmount'.$i] = number_format(round($produto->product_final_price,2),2,'.',''); + $json_pedido['itemQuantity'.$i] = $produto->product_quantity; + $i++; + } + $url_notificacao = str_replace('https://','http://',JROUTE::_(JURI::root() . 'index.php?option=com_virtuemart&view=pluginresponse&task=pluginnotification&tmpl=component&pm='.$order['details']['BT']->virtuemart_paymentmethod_id)); + $json_pedido['notificationURL'] = $url_notificacao; + $order_number = JRequest::getVar('order_number'); + $json_pedido['reference'] = $order_number; + // campo cpf + $campo_cpf = $method->campo_cpf; + $campo_cep = $method->campo_cep; + // cnpj + $campo_cnpj = $method->campo_cnpj; + $campo_numero = $method->campo_numero; + $campo_bairro = $method->campo_bairro; + $campo_complemento = $method->campo_complemento; + $campo_data_nascimento = $method->campo_data_nascimento; + $bt_comprador = $order['details']['BT']; + if (isset($order['details']['ST'])) { + $st_comprador = $order['details']['ST']; + } else { + $st_comprador = $bt_comprador; + } + + $campo_nome = $method->campo_nome; + $campo_sobrenome = $method->campo_sobrenome; + // billing data + $json_pedido['senderName'] = $bt_comprador->$campo_nome.' '.$bt_comprador->$campo_sobrenome; + + // cpf do comprador + $cpfComprador = $this->formataCPF((isset($bt_comprador->$campo_cpf) and !empty($bt_comprador->$campo_cpf))?$bt_comprador->$campo_cpf:''); + if (empty($cpfComprador)) { + $cpfComprador = $this->formataCPF(JRequest::getVar('cpf')); + } + if ($method->modo_debug) { + print_r($bt_comprador); + } + + $json_pedido['senderCPF'] = $cpfComprador; + + if (!empty($campo_cnpj) and $bt_comprador->$campo_cnpj != '') { + $cnpjComprador = $this->formataCNPJ($bt_comprador->$campo_cnpj); + $json_pedido['senderCNPJ'] = $cnpjComprador; + unset($json_pedido['senderCPF']); + } + + $phone = $bt_comprador->phone_1; + + $telefone = preg_replace('#[^0-9]#', '', $phone); + $json_pedido['senderAreaCode'] = substr($telefone, 0, 2); + $json_pedido['senderPhone'] = substr($telefone, 2, 9); + + if ($method->modo_teste) { + $json_pedido['senderEmail'] = $method->email_teste; + } else { + $json_pedido['senderEmail'] = $bt_comprador->email; + } + $json_pedido['senderHash'] = $senderHash; + // shipping address + $json_pedido['shippingAddressStreet'] = $st_comprador->address_1; + $json_pedido['shippingAddressNumber'] = ((isset($st_comprador->$campo_numero) and !empty($st_comprador->$campo_numero))?$st_comprador->$campo_numero:''); + $json_pedido['shippingAddressComplement'] = ((isset($st_comprador->$campo_complemento) and !empty($st_comprador->$campo_complemento))?$st_comprador->$campo_complemento:''); + $json_pedido['shippingAddressDistrict'] = ((isset($st_comprador->$campo_bairro) and !empty($st_comprador->$campo_bairro))?$st_comprador->$campo_bairro:''); + $json_pedido['shippingAddressPostalCode'] = str_replace('-','',$st_comprador->$campo_cep); + $json_pedido['shippingAddressCity'] = $st_comprador->city; + $json_pedido['shippingAddressState'] = $this->getStateName($st_comprador->virtuemart_state_id); + $json_pedido['shippingAddressCountry'] = 'BRA'; + // shipping + $json_pedido['shippingType'] = '3'; // outros + if (isset($order['details']['BT']->order_shipping)){ + $json_pedido['shippingCost'] = number_format(round($order['details']['BT']->order_shipping,2),2,'.',''); + } elseif (isset($order['details']['BT']->order_shipment)){ + $json_pedido['shippingCost'] = number_format(round($order['details']['BT']->order_shipment,2),2,'.',''); + } else { + $json_pedido['shippingCost'] = 0; + } + // cartão de crédito + $json_pedido['creditCardToken'] = $token_compra; + $parcelas_compra = $this->getParcelas(); + $json_pedido['installmentQuantity'] = $parcelas_compra; + $valor_parcela = JRequest::getVar('valor_parcela',''); + if (!empty($valor_parcela)) { + $json_pedido['installmentValue'] = number_format(round($valor_parcela,2),2,'.',''); + } else { + if ($json_pedido['installmentQuantity'] == 1) { + // $json_pedido['installmentValue'] = number_format($valor_parcela,2,'.',''); + $json_pedido['installmentValue'] = number_format(round($order['details']['BT']->order_total,2),2,'.',''); + } else { + /* + -- método antigo de calcular a parcela + // calcular as parcelas + $order_total = $order['details']['BT']->order_total; + // $total_parcela = round($order_total / $parcelas_compra,2); + if ($parcelas_compra <= $method->max_parcela_sem_juros) { + $total_parcela = round($order_total / $parcelas_compra,2); + // $json_pedido['noInterestInstallmentQuantity'] = $method->max_parcela_sem_juros; + $json_pedido['noInterestInstallmentQuantity'] = $parcelas_compra; + } else { + $tipo_parcelamento_juros = true; // com juros + $total_parcela = round($this->calculaParcelaPRICE($order_total,$parcelas_compra,$method->taxa_parcelado),2); + } + $json_pedido['installmentValue'] = number_format($total_parcela,2,'.',''); + */ + } + } + if ($method->max_parcela_sem_juros > 1) { + $json_pedido['noInterestInstallmentQuantity'] = $method->max_parcela_sem_juros; + } + + // billing address + $json_pedido['billingAddressStreet'] = $bt_comprador->address_1; + $json_pedido['billingAddressNumber'] = ((isset($bt_comprador->$campo_numero) and !empty($bt_comprador->$campo_numero))?$bt_comprador->$campo_numero:''); + $json_pedido['billingAddressComplement'] = ((isset($bt_comprador->$campo_complemento) and !empty($bt_comprador->$campo_complemento))?$bt_comprador->$campo_complemento:''); + $json_pedido['billingAddressDistrict'] = ((isset($bt_comprador->$campo_bairro) and !empty($bt_comprador->$campo_bairro))?$bt_comprador->$campo_bairro:''); + $json_pedido['billingAddressPostalCode'] = str_replace('-','',$bt_comprador->$campo_cep); + $json_pedido['billingAddressCity'] = $bt_comprador->city; + $json_pedido['billingAddressState'] = $this->getStateName($bt_comprador->virtuemart_state_id); + $json_pedido['billingAddressCountry'] = 'BRA'; + // recupera a url de retorno + $json_pedido['notificationURL'] = JROUTE::_(JURI::root().'index.php?option=com_virtuemart&view=pluginresponse&task=pluginnotification&order_number='.$order['details']['BT']->order_number.'&pm='. $order['details']['BT']->virtuemart_paymentmethod_id); + // $json_pedido['urlReturn'] = JROUTE::_(JURI::root().'index.php?option=com_virtuemart&view=pluginresponse&task=pluginresponsereceived&pm='. $order['details']['BT']->virtuemart_paymentmethod_id); + if ($forma_pagamento == 'CartaodeCredito') { + // sempre pega o do formulário + $cpf_form = JRequest::getVar('c_cpf'); + $json_pedido['senderCPF'] = $this->formataCPF($cpf_form); + $c_holder = JRequest::getVar('c_holder'); + $c_cpf = $this->formataCPF($cpf_form); + $c_phone = JRequest::getVar('c_phone'); + $c_birthdate = JRequest::getVar('c_birthdate'); + // $birthDate = $this->formataData(((isset($bt_comprador->$campo_data_nascimento) and !empty($bt_comprador->$campo_data_nascimento))?$bt_comprador->$campo_data_nascimento:'')); + $birthDate = $this->formataData($c_birthdate); + $json_pedido['paymentMethod'] = 'creditCard'; + $json_pedido['creditCardHolderName'] = $c_holder; + $json_pedido['creditCardHolderCPF'] = $c_cpf; + $json_pedido['creditCardHolderBirthDate']= $birthDate; + $telefone = preg_replace('#[^0-9]#', '', $c_phone); + $json_pedido['creditCardHolderAreaCode']= substr($telefone, 0, 2); + $json_pedido['creditCardHolderPhone'] = substr($telefone, 2, 9); + } elseif ($forma_pagamento == 'BoletoBancario') { + $json_pedido['paymentMethod'] = 'boleto'; + } elseif ($forma_pagamento == 'DebitoBancario') { + $json_pedido['paymentMethod'] = 'eft'; + $json_pedido['bankName'] = $tipo_pagamento; + } else { + return false; + } + foreach ($json_pedido as $chave => $valor) { + $json_pedido[$chave] = utf8_decode($valor); + } + if ($method->modo_debug) { + print_r($json_pedido); + // die(); + } + // url webservice + $url_ws = $this->getUrlWsPagseguro($method); + $urlPost = $url_ws."/v2/transactions"; + ob_start(); + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $urlPost); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($json_pedido, '', '&')); + // curl_setopt($ch, CURLOPT_HTTPHEADER, $oAuth); + curl_setopt($ch, CURLOPT_ENCODING ,""); + //Por default o CURL requer um ambiente SSL, durante testes/desenvolvimento ou caso não possua o protocolo de segurança, pode-se evitar a verificação SSL do CURL através das duas lonhas abaixo: + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); + curl_exec($ch); + $resposta = ob_get_contents(); + ob_end_clean(); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + /** + * 200 Informação processada com sucesso + * 400 Requisição com parâmetros obrigatórios vazios ou inválidos + * 401 Falha na autenticação ou sem acesso para usar o serviço + * 405 Método não permitido, o serviço suporta apenas POST + * 415 Content-Type não suportado + * 500 Erro fatal na aplicação, executar a solicitação mais tarde + * 503 Serviço está indisponível + **/ + + $xml = new DomDocument(); + $dom = $xml->loadXML($resposta); + if ($method->modo_debug) { + print_r($resposta); + die(); + } + $arr_retorno['erro'] = 'true'; + if ($httpCode == "200") { + $arr_retorno['erro'] = 'false'; + $json_array = array(); + // código da transação + $json_array['code'] = $xml->getElementsByTagName("code")->item(0)->nodeValue; + $json_array['date'] = $xml->getElementsByTagName("date")->item(0)->nodeValue; + $json_array['lastEventDate'] = $xml->getElementsByTagName("lastEventDate")->item(0)->nodeValue; + $json_array['reference'] = $xml->getElementsByTagName("reference")->item(0)->nodeValue; + $json_array['type'] = $xml->getElementsByTagName("type")->item(0)->nodeValue; + $json_array['cancellationSource'] = $xml->getElementsByTagName("cancellationSource")->item(0)->nodeValue; + $json_array['paymentLink'] = $xml->getElementsByTagName("paymentLink")->item(0)->nodeValue; + /* + 1 Aguardando pagamento: o comprador iniciou a transação, mas até o momento o PagSeguro não recebeu nenhuma informação sobre o pagamento. + 2 Em análise: o comprador optou por pagar com um cartão de crédito e o PagSeguro está analisando o risco da transação. + 3 Paga: a transação foi paga pelo comprador e o PagSeguro já recebeu uma confirmação da instituição financeira responsável pelo processamento. + 4 Disponível: a transação foi paga e chegou ao final de seu prazo de liberação sem ter sido retornada e sem que haja nenhuma disputa aberta. + 5 Em disputa: o comprador, dentro do prazo de liberação da transação, abriu uma disputa. + 6 Devolvida: o valor da transação foi devolvido para o comprador. + 7 Cancelada: a transação foi cancelada sem ter sido finalizada. + */ + $json_array['status'] = $xml->getElementsByTagName("status")->item(0)->nodeValue; + $status_pagamento = $this->getStatusPagamentoPagseguroRetorno($method, $json_array['status']); + $json_array['status_pedido'] = $status_pagamento[0]; + $json_array['descriptionStatus'] = $status_pagamento[1]; + $json_resposta = json_encode($json_array); + $arr_retorno['msg'] = $json_array; + } else { + //$arr_retorno['msg'] = 'Requisição com parâmetros obrigatórios vazios ou inválidos'; + $errors = $xml->getElementsByTagName("errors"); + $errors_list = array(); + if ($errors->length >= 1) { + foreach( $errors as $erro ) { + $code = $erro->getElementsByTagName("code")->item(0)->nodeValue; + $message = $erro->getElementsByTagName("message")->item(0)->nodeValue; + $errors_list[$code] = $message; + } + } + // se não tiver vindo nada do PagSeguro + if (count($errors_list) == 0) { + $errors_list[$httpCode] = "Erro interno"; + } + //$json_errors = json_encode($errors_list); + $arr_retorno['msg'] = $errors_list; + $arr_retorno['erro'] = 'true'; + $arr_retorno['tipo'] = $httpCode; + } + // $arr_retorno['msg'] = $json_resposta; + // } else { + // $arr_retorno['msg'] = 'Erro ao capturar o método de pagamento'; + // $arr_retorno['erro'] = 'true'; + // //$resposta = 'Erro ao capturar o método de pagamento'; + // } + return $arr_retorno; + } + public function getValidCreditCard($number) { + $odd = true; + $sum = 0; + foreach ( array_reverse(str_split($number)) as $num) { + $sum += array_sum( str_split(($odd = !$odd) ? $num*2 : $num) ); + } + if (($sum % 10 == 0) && ($sum != 0) && (($sum/10) > 0)) { + return true; + } else { + return false; + } + } + public function redirecionaPedido($mensagem, $tipo='message',$email=1) { + $url_pedido = JROUTE::_(JURI::root() . 'index.php?option=com_virtuemart&view=orders&layout=details&order_number='.$this->order_number); + // formata a mensagem + $msg = "TRANSAÇÃO Pagseguro N. ".$this->transactionCode."

    ".$mensagem; + if ($email) { + $msg .= "
    Verifique em seu e-mail o extrato desta transação."; + } + $app = JFactory::getApplication(); + $app->redirect($url_pedido, $msg, $tipo); + } + /** + * Calcula as parcelas do crédito + */ + public function calculaParcelasCredito( $method, $order_total, $id, $numero_parcelas=null ) { + $conteudo = "
    "; + /* + $parcelas_juros = 1; + $paymentCurrency = CurrencyDisplay::getInstance($method->payment_currency); + if (is_null($numero_parcelas)) { + $limite_sem_juros = $method->max_parcela_sem_juros; + } else { + $limite_sem_juros = $numero_parcelas; + } + if (!empty($limite_sem_juros)) { + for ($i=1; $i<=$limite_sem_juros; $i++) { + $valor_parcela = $order_total / $i; + $parcelas_juros ++; + // caso o valor da parcela seja menor do que o permitido, não a exibe + if (($valor_parcela < $method->valor_minimo or $valor_parcela < 5) and $i != 1) { + continue; + } + //$valor_formatado_credito = 'R$ '.number_format($valor_parcela,2,',','.'); + $valor_formatado_credito = $paymentCurrency->priceDisplay($valor_parcela,$paymentCurrency->payment_currency); + + // novo tipo de formatação de preço + // $conteudo .= '
    '; + $conteudo .= '
    '; + if ($method->max_parcela_com_juros == $i) { + break; + } + } + } + if (is_null($numero_parcelas)) { + $limite_parcelamento = $method->max_parcela_com_juros; + } else { + $limite_parcelamento = $numero_parcelas; + } + + $asterisco = false; + for($i=$parcelas_juros; $i<=$limite_parcelamento; $i++) { + // verifica se o juros será para o emissor ou para o comprador + // caso o valor da parcela seja menor do que o permitransactionCodeo, não a exibe + if (($valor_parcela < $method->valor_minimo or $valor_parcela < 5) and $i != 1) { + continue; + } + + if ($i==1) { + $valor_parcela = $order_total * (1+$method->taxa_credito); // calcula o valor da parcela + } else { + $valor_parcela = $this->calculaParcelaPRICE($order_total,$i,$method->taxa_parcelado); + $asterisco = true; + } + $valor_formatado_credito = $paymentCurrency->priceDisplay($valor_parcela,$paymentCurrency->payment_currency); + + // $conteudo .= '
    '; + $conteudo .= '
    '; + if ($limite_parcelamento == $i) { + break; + } + } + */ + + $parcelas_juros = 1; + $paymentCurrency = CurrencyDisplay::getInstance($method->payment_currency); + if (is_null($numero_parcelas)) { + $limite_sem_juros = $method->max_parcela_sem_juros; + } else { + $limite_sem_juros = $numero_parcelas; + } + $conteudo .= " '.$i.' x  '.$valor_formatado_credito.' sem juros
    '; + $conteudo .= ''; + if ($method->max_parcela_com_juros == $i) { + break; + } + } + } + if (is_null($numero_parcelas)) { + $limite_parcelamento = $method->max_parcela_com_juros; + } else { + $limite_parcelamento = $numero_parcelas; + } + + $asterisco = false; + for($i=$parcelas_juros; $i<=$limite_parcelamento; $i++) { + // verifica se o juros será para o emissor ou para o comprador + // caso o valor da parcela seja menor do que o permitransactionCodeo, não a exibe + if (($valor_parcela < $method->valor_minimo or $valor_parcela < 5) and $i != 1) { + continue; + } + + if ($i==1) { + $valor_parcela = $order_total * (1+$method->taxa_credito); // calcula o valor da parcela + } else { + $valor_parcela = $this->calculaParcelaPRICE($order_total,$i,$method->taxa_parcelado); + $asterisco = true; + } + $valor_formatado_credito = $paymentCurrency->priceDisplay($valor_parcela,$paymentCurrency->payment_currency); + + // $conteudo .= '
    '; + // $conteudo .= '
    '; + $conteudo .= ''; + if ($limite_parcelamento == $i) { + break; + } + } + $conteudo .= ""; + if ($asterisco) { + $conteudo .= "
    * Valores sujeitos à alteração ao efetuar o pagamento via Cartão (".$method->taxa_parcelado."% a.m.).
    "; + } + $conteudo .= ''; + return $conteudo; + } + + /** + * Calcula as parcelas do crédito + */ + public function calculaParcelasDebitoBoleto( $method, $order_total, $id, $numero_parcelas=1 ) { + $conteudo = "
    "; + $paymentCurrency = CurrencyDisplay::getInstance($method->payment_currency); + $valor_formatado_debito = $paymentCurrency->priceDisplay($order_total,$paymentCurrency->payment_currency); + $conteudo .= '
    + +
    '; + return $conteudo; + } + + public function calculaParcelaPRICE($Valor, $Parcelas, $Juros) { + $Juros = bcdiv($Juros,100,15); + $E=1.0; + $cont=1.0; + for($k=1;$k<=$Parcelas;$k++) { + $cont= bcmul($cont,bcadd($Juros,1,15),15); + $E=bcadd($E,$cont,15); + } + $E=bcsub($E,$cont,15); + $Valor = bcmul($Valor,$cont,15); + return round(bcdiv($Valor,$E,15),2); + } + + // recupera o transactionCode com base no numero do pedido + public function recuperaCodigoPagsegurotransparente($order_number) { + $db = JFactory::getDBO(); + $query = 'SELECT ' . $this->_tablename . '.`transactionCode` FROM ' . $this->_tablename . " WHERE `order_number`= '" . $order_number . "'"; + $db->setQuery($query); + $this->transactionCode = $db->loadResult(); + } + + // reformata o valor que vem do servidor da Pagsegurotransparente + public function reformataValor($valor) { + $valor = substr($valor,0,strlen($valor)-2).'.'.substr($valor,-2); + return $valor; + } + + public function formataData($valor,$formato="d/m/Y") { + if (!empty($valor) and $valor != 'null') { + return date($formato, strtotime($valor)); + } else { + return ''; + } + } + + public function formataTelefone($telefone) { + return str_replace(array('(',')',' ','-'),array('','','',''),$telefone); + } + + public function formataCPF($cpf) { + return str_replace(array('.','-'),array('',''),$cpf); + } + + public function formataCNPJ($cpf) { + return str_replace(array('.','-','/'),array('','',''),$cpf); + } + + public function trataRetornoSucessoPagseguro($retorno, $method) { + // código da transação + $this->transactionCode = $retorno['code']; + $this->order_number = $retorno['reference']; + + // recupera os status de constants + $status_pagamento = $retorno['status']; + $status_pedido = $retorno['status_pedido']; + $mensagem = $retorno['descriptionStatus']; + + $url_redirecionar = ''; + if (trim($retorno['paymentLink']) != '') { + $url_redirecionar = $retorno['paymentLink']; + } + $tipo_pagamento = JRequest::getVar('tipo_pagamento'); + $forma_pagamento = JRequest::getVar('forma_pagamento'); + $parcela_selecionada = JRequest::getVar('parcela_selecionada'); + $this->gravaDadosRetorno($method, $status_pagamento, $mensagem, $url_redirecionar, $tipo_pagamento, $forma_pagamento, $parcela_selecionada); + $this->trocaStatusPedidoPagseguroAPI($this->transactionCode, $status_pedido, $mensagem, $method, $this->order_number); + } + + public function trataRetornoFalhaPagseguro($retorno, $method) { + $msgs_erro = array(); + foreach ($retorno as $codigo => $mensagem) { + if ($method->modo_teste) { + $msgs_erro[] = 'Erro: '.$codigo." - ".$mensagem.""; + } else { + $msgs_erro[] = 'Erro: '.$codigo." - ".$this->traduzErro($codigo).""; + } + } + // recupera os status de constants + //$this->gravaDadosRetorno($method, $status_pagamento, $mensagem.$msgs_erros); + //$this->trocaStatusPedidoPagseguroAPI($this->transactionCode, $status_pagamento, $mensagem, $method, $this->order_number); + return $msgs_erro; + } + + public function trocaStatusPedidoPagseguroAPI($transactionCode, $status, $mensagem, $method, $order_number) { + $virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber($order_number); + // recupera as informações do pagamento + $db = JFactory::getDBO(); + $query = 'SELECT * + FROM `' . $this->_tablename . '` + WHERE order_number = "'.$order_number.'"'; + $db->setQuery($query); + $pagamento = $db->loadObjectList(); + $type_transaction = $pagamento[0]->type_transaction; + // $forma_pagamento = $pagamento[0]->forma_pagamento; + $payment_order_total = $pagamento[0]->payment_order_total; + $timestamp = date('Y-m-d').'T'.date('H:i:s'); + $log = $timestamp.'|'.$transactionCode.'|'.$mensagem.'|'.$type_transaction.'|'.$payment_order_total; + // notificação do pagamento realizado + $notificacao = "".JText::_('VMPAYMENT_PAGSEGUROTRANSPARENTE_NOTIFY_TRANSACTION')." \n"; + $notificacao .= JText::_('VMPAYMENT_PAGSEGUROTRANSPARENTE_NOTIFY_CODIGO_PAGSEGUROTRANSPARENTE')." ".$transactionCode."\n"; + $notificacao .= JText::_('VMPAYMENT_PAGSEGUROTRANSPARENTE_NOTIFY_PEDIDO')." ".$order_number."\n"; + $notificacao .= "
    "; + $notificacao .= JText::_('VMPAYMENT_PAGSEGUROTRANSPARENTE_NOTIFY_STATUS')." ".(($status==$method->transacao_aprovada)?JText::_('VMPAYMENT_PAGSEGUROTRANSPARENTE_NOTIFY_PAID'):JText::_('VMPAYMENT_PAGSEGUROTRANSPARENTE_NOTIFY_NOTPAID'))."\n"; + $notificacao .= JText::_('VMPAYMENT_PAGSEGUROTRANSPARENTE_NOTIFY_TYPE_TRANSACTION')." ".$type_transaction."\n"; + $notificacao .= JText::_('VMPAYMENT_PAGSEGUROTRANSPARENTE_NOTIFY_TYPE_MESSAGE')." ".$mensagem." \n"; + $notificacao .= JText::_('VMPAYMENT_PAGSEGUROTRANSPARENTE_NOTIFY_ORDER_TOTAL')." R$ ".number_format($payment_order_total,2,',','.')." \n"; + $notificacao .= "\n"; + $notificacao .= JText::_('VMPAYMENT_PAGSEGUROTRANSPARENTE_NOTIFY_AUTHENTICATE')."Pagseguro"; + if ($virtuemart_order_id) { + // send the email only if payment has been accepted + if (!class_exists('VirtueMartModelOrders')) + require( JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php' ); + $modelOrder = new VirtueMartModelOrders(); + $orderitems = $modelOrder->getOrder($virtuemart_order_id); + $nb_history = count($orderitems['history']); + $order = array(); + $order['order_status'] = $status; + $order['virtuemart_order_id'] = $virtuemart_order_id; + $order['comments'] = $notificacao; + $order['customer_notified'] = 1; + $modelOrder->updateStatusForOneOrder($virtuemart_order_id, $order, true); + if ($nb_history == 1) { + if (!class_exists('shopFunctionsF')) + require(JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php'); + $this->logInfo('Notification, sentOrderConfirmedEmail ' . $order_number. ' '. $order['order_status'], 'message'); + } + } + + // $cart = VirtueMartCart::getCart(); + // $cart->emptyCart(); + } + private function getStatusPagamentoPagseguroRetorno($method, $codigo) { + $status_pagamento = array(); + $status_pagamento[1] = array($method->transacao_em_andamento,'Aguardando a confirmação de pagamento'); + $status_pagamento[2] = array($method->transacao_em_analise,'Aguardando aprovação de risco'); + $status_pagamento[3] = array($method->transacao_aprovada,'Transação Paga'); + $status_pagamento[4] = array($method->transacao_concluida,'Transação concluída'); + $status_pagamento[5] = array($method->transacao_disputa,'Transação em disputa'); + $status_pagamento[6] = array($method->transacao_devolvida,'Transação devolvida'); + $status_pagamento[7] = array($method->transacao_cancelada,'Transação Cancelada'); + if (isset($status_pagamento[$codigo])) { + return $status_pagamento[$codigo]; + } else { + return null; + } + } + + private function traduzErro($codigo) { + $erros = array ( + "11001"=>"O campo e-mail de configuração é obrigatório.", + "11002"=>"Tamanho do e-mail de configuração inválido", + "11003"=>"E-mail de configuração inválido.", + "11004"=>"A moeda é obritatória.", + "11005"=>"Moeda inválida", + "11006"=>"Tamanho do campo redirectURL inválido", + "11007"=>"Valor inválido para o campo redirectURL", + "11008"=>"Tamanho do vampo referência inválido", + "11009"=>"Tamanho do campo e-mail inválido", + "11010"=>"Valor inválido para o e-mail", + "11011"=>"Tamanho do nome inválido", + "11012"=>"Valor inválido para o nome", + "11013"=>"Valor do código de área inválido", + "11014"=>"Valor inválido para o telefone", + "11015"=>"Tipo de entrega é obrigatório.", + "11016"=>"Valor inválido para o tipo de entrega", + "11017"=>"Valor do cep inválido", + "11018"=>"Endereço da rua inválido", + "11019"=>"Tamanho inválido para o número do endereço", + "11020"=>"Tamanho inválido para o complemento do endereço", + "11021"=>"Tamanho inválido para o bairro", + "11022"=>"Tamanho inválido para a cidade", + "11023"=>"Valor inválido para o estado, deve ser no formato SIGLA, ex. 'SP'", + "11024"=>"Quantidade de itens inválida.", + "11025"=>"O Item id é obrigatório.", + "11026"=>"A quantidade do item é obrigatória.", + "11027"=>"Número inválido para a quantidade do item", + "11028"=>"Total do item é obrigatório, ex. 10.00", + "11029"=>"Formato do total do item inválido.", + "11030"=>"Número inválido para o total do item", + "11031"=>"Formato inválido para o total de entrega", + "11032"=>"Número inválido para o total de entrega", + "11033"=>"Descrição do item é obrigatória.", + "11034"=>"Tamanho inválido para a descrição do item", + "11035"=>"Peso inválido para o item", + "11036"=>"Formato inválido para o valor extra", + "11037"=>"Número inválido para o valor extra", + "11038"=>"Cliente inválido para o checkout, favor cliente verificar o status da conta no PagSeguro.", + "11039"=>"Requisição de XML malformada.", + "11040"=>"Formato do campo idade inválido", + "11041"=>"Número inválido para o campo idade", + "11042"=>"Formato do campo maxUses inválido", + "11043"=>"Número inválido para o campo maxUses.", + "11044"=>"A data inicial é obrigatória.", + "11045"=>"A data inicial deve ser menor do que o limite permitido.", + "11046"=>"A data inicial deve maior do que 6 meses.", + "11047"=>"A data inicial deve ser menor ou igual à data final.", + "11048"=>"O intervalor de busca deve ser menor ou igual à 30 dias.", + "11049"=>"A data final deve ser menor do que a data permitida.", + "11050"=>"Formato da data inicial inválido, use o formato 'yyyy-MM-ddTHH:mm' (ex. 2010-01-27T17:25).", + "11051"=>"Formato da data final inválido, use o formato 'yyyy-MM-ddTHH:mm' (ex. 2010-01-27T17:25).", + "11052"=>"Valor inválido para a página.", + "11053"=>"Valor inválido para o total de resultados da página (deve ser entre 1 e 1000).", + "11157"=>"CPF inválido", + "53004"=>"Quantidade de itens inválida.", + "53005"=>"A moeda é obrigatória.", + "53006"=>"Moeda informada é inválida", + "53007"=>"Tamanho da referência inválido", + "53008"=>"Tamanho da url de notificação inválido.", + "53009"=>"Url de notificação inválido.", + "53010"=>"O e-mail do cliente é obrigatório.", + "53011"=>"Tamanho inválido para o e-mail do cliente", + "53012"=>"Valor inválido para o e-mail do cliente", + "53013"=>"O nome do cliente é obrigatório.", + "53014"=>"Tamanho inválido para o nome do cliente", + "53015"=>"Valor inválido para o nome do cliente", + "53017"=>"Valor inválido para o cpf", + "53018"=>"Código de área é obrigatório.", + "53019"=>"Valor inválido para o código de área", + "53020"=>"O telefone é obrigatório.", + "53021"=>"Valor inválido para o telefone", + "53022"=>"O cep de entrega é obrigatório.", + "53023"=>"Valor inválido para o cep de entrega.", + "53024"=>"Endereço de entrega é obrigatório.", + "53025"=>"Valor inválido para o endereço de entrega.", + "53026"=>"O número do endereço de entrega é obrigatório.", + "53027"=>"Tamanho inválido para o número do endereço de entrega", + "53028"=>"Tamanho inválido para o complemento do endereço de entrega", + "53029"=>"O bairro é obrigatório.", + "53030"=>"Valor inválido para o bairro do endereço de entrega", + "53031"=>"A cidade do endereço de entrega é obrigatória.", + "53032"=>"Tamanho inválido para a cidade do endereço de entrega", + "53033"=>"O estado do endereço de entrega é obrigatório.", + "53034"=>"Valor inválido para o estado do endereço de entrega.", + "53035"=>"O país do endereço de entrega é obrigatório.", + "53036"=>"Tamanho inválido para o país do endereço de entrega", + "53037"=>"O token do cartão de crédito é obrigatório.", + "53038"=>"A quantidade de parcelas é obrigatória.", + "53039"=>"Tamanho inválido para a quantidade de parcelas", + "53040"=>"O valor da parcela é obrigatório.", + "53041"=>"Tamanho inválido do valor da parcela", + "53042"=>"O titular do cartão é obrigatório.", + "53043"=>"Tamanho inválido para o campo titular do cartão.", + "53044"=>"Valor inválido para o campo titular do cartão.", + "53045"=>"O cpf do titular do cartão é obrigatório.", + "53046"=>"Valor inválido para o cpf do titular do cartão.", + "53047"=>"A data de nascimento do titular do cartão é obrigatória.", + "53048"=>"Valor inválido para a data de nascimento do titular do cartão", + "53049"=>"O código de área do titular do cartão é obrigatório.", + "53050"=>"Valor inválido para o código de área do titular do cartão", + "53051"=>"O telefone do titular do cartão é obrigatório.", + "53052"=>"Valor inválido para o telefone do titular do cartão.", + "53053"=>"O cep de cobrança é obrigatório.", + "53054"=>"Valor inválido para o cep de cobrança.", + "53055"=>"Endereço de cobrança é obrigatório.", + "53056"=>"Valor inválido para o endereço de cobrança.", + "53057"=>"O número do endereço de cobrança é obrigatório.", + "53058"=>"Tamanho inválido para o número do endereço de cobrança", + "53059"=>"Tamanho inválido para o complemento do endereço de cobrança", + "53060"=>"O bairro do endereço de cobrança é obrigatório.", + "53061"=>"Valor inválido para o bairro do endereço de cobrança", + "53062"=>"A cidade do endereço de cobrança é obrigatória.", + "53063"=>"Tamanho inválido para a cidade do endereço de cobrança", + "53064"=>"Tamanho inválido para o país do endereço de cobrança", + "53065"=>"O estado do endereço de cobrança é obrigatório.", + "53066"=>"Valor inválido para o estado do endereço de cobrança.", + "53067"=>"O país do endereço de cobrança é obrigatório.", + "53068"=>"Tamanho inválido para o e-mail do lojista", + "53069"=>"Valor inválido para o e-mail do lojista", + "53070"=>"O item id é obrigatório", + "53071"=>"Tamanho inválido para o ID do item", + "53072"=>"Descrição do item é obrigatória.", + "53073"=>"Tamanho inválido para a descrição do item", + "53074"=>"A quantidade do item é obrigatória.", + "53075"=>"Valor inválido para a quantidade do item", + "53076"=>"Formato inválido para a quantidade do item", + "53077"=>"O valor do item é obrigatório.", + "53078"=>"Formato inválido para a quantidade do item", + "53079"=>"O valor do item é inválido.", + "53081"=>"O cliente tem relação com o lojista.", + "53084"=>"Cliente inválido, favor verificar o status da conta do lojista e checar se é uma conta de vendedor.", + "53085"=>"Método de pagamento indisponível.", + "53086"=>"Total do carrinho inválido", + "53087"=>"Número do Cartão de crédito inválido.", + "53091"=>"Hash do cartão de crédito inválido.", + "53092"=>"Bandeira do cartão de crédito não-aceita.", + "53095"=>"Formato inválido para o tipo de entrega", + "53096"=>"Formato inválido para o custo de entrega", + "53097"=>"Custo de entrega inválido", + "53098"=>"Valor total do carrinho está negativo", + "53099"=>"Formato do valor extra inválido. Deve ser no formato -/+xx.xx", + "53101"=>"Modo de pagamento inválido.", + "53102"=>"Método de pagamento inválido, são aceitos cartão de crédito, boleto e transferência.", + "53104"=>"Custo de entrega foi enviado, mas o endereço de entrega deve estar completo.", + "53105"=>"Dados do cliente enviados, mas o e-mail é obrigatório.", + "53106"=>"Titular do cartão de crédito incompleto.", + "53109"=>"O endereço de entrega foi enviado, mas o e-mail do cliente é obrigatório.", + "53110"=>"O banco para transferência é obrigatório.", + "53111"=>"Banco para transferência informato não é aceito.", + "53115"=>"Valor inválido para data de nascimento do cliente", + "53122"=>"Domínio do e-mail do cliente inválido, deve obrigatoriamente ser um email de @sandbox.pagseguro.com.br", + "53140"=>"Valor inválido da quantidade de parcelamento. O valor deve ser maior do que zero.", + "53141"=>"O cadastro do cliente está bloqueado.", + "53142"=>"Token do cartão de crédito inválido.", + "400" => "Requisição com parâmetros obrigatórios vazios ou inválidos", + "401" => "Falha na autenticação ou sem acesso para usar o serviço", + "405" => "Método não permitido, o serviço suporta apenas POST", + "415" => "Content-Type não suportado", + "500" => "Erro fatal na aplicação, executar a solicitação mais tarde", + "503" => "Serviço está indisponível" + ); + if (isset($erros[$codigo])) { + $erro_traduzido = $erros[$codigo]; + } else { + $erro_traduzido = "Erro interno"; + } + return $erro_traduzido; + } + function setCartPrices (VirtueMartCart $cart, &$cart_prices, $method, $progressive=true) { + if ($method->modo_calculo_desconto == '2') { + return parent::setCartPrices($cart, $cart_prices, $method, false); + } else { + return parent::setCartPrices($cart, $cart_prices, $method, true); + } + } +} \ No newline at end of file diff --git a/pagsegurotransparente.xml b/pagsegurotransparente.xml new file mode 100644 index 0000000..a8bf98d --- /dev/null +++ b/pagsegurotransparente.xml @@ -0,0 +1,275 @@ + + + VMPayment - Checkout Transparente compatível com PagSeguro + 2017 + Luiz Felipe Weber + http://weber.eti.br + Copyright (C) 2017. All rights reserved. + http://www.gnu.org/licenses/gpl-3.0.html GNU/GPL + 2.0.38 + Plugin de pagamento + <div style="background:#E5F5FF;border:1px solid #99D6FF;padding:10px;margin:10px; -box-shadow: inset 0px 0px 10px #fff, 0px 0px 5px #ccc; -webkit-box-shadow: inset 0px 0px 10px #fff, 0px 0px 5px #ccc; -moz-box-shadow: inset 0px 0px 10px #fff, 0px 0px 5px #ccc;font-weight:normal;"> + <h1>Plugin de pagamento PagSeguro Transparente para Virtuemart 3.0 - Api Transparente.</h1> + <div style="float:right;width: 20%"> + <img src="../plugins/vmpayment/pagsegurotransparente/checkout_transparente_pagseguro.png" /> + </div> + <div><em>Passo 1</em> - Crie sua conta PagSeguro ( caso não exista ) e solicite a ativação da <b>PagSeguro Transparente</b>. </div> + <div><em>Passo 3</em> - Habilite o plugin aqui <a href="index.php?option=com_plugins&view=plugins&filter_search=pagsegurotransparente">Administrar Plugins</a></div> + <div><em>Passo 4</em> - Instale Plugin por esta tela <a href="index.php?option=com_virtuemart&view=paymentmethod">Métodos de pagamento</a></div> + <div><em>Passo 4.1</em> - <b>Clique em Novo Método de Pagamento</b> e preencha as informações:</div> + <div>* Nome do Pagamento: <b>Cartões de crédito e débito, transferência e boleto bancário ( PagSeguro )</b></div> + <div>* Publicado: <b>Sim</b></div> + <div>* Descrição do pagamento: <b>Pague com cartão de crédito, boleto ou saldo PagSeguro</b></div> + <div>* Método de pagamento: <b>PagSeguro</b></div> + <div>* Grupo de Compradores: <b>-default-</b></div> + <div><em>Passo 4.2</em> - <b>Clique em Salvar</b>.</div> + <div><em>Passo 5</em> - Na <b>aba configurações</b>, preencha os dados:</div> + + <div> <br />Configurações do Plugin de Pagamento </div> + <div>* Logotipos: <b></b></div> + <div>* Modo de teste <b>( Sim ou Não ) </b></div> + <div>* Token (teste) </div> + <div>* Email de acesso (teste) </div> + <div>* Token (produção) </div> + <div>* Email de Acesso (produção) </div> + <div>* Valor Mínimo <b> 0,01 </b></div> + <div>* Status Postado pelo PagSeguro <b> (Compra Aprovada, Em Análise, Estornada, Aguardando Pagamento, Cancelada ) </b></div> + <div> </div> + <div> <br />Configuração Parcelamento </div> + <div>** Max. Parcelas Sem Juros <b> 3 </b></div> + <div>** Max. Parcelas Com Juros <b> 12 </b></div> + <div>** Taxa de Juros Crédito à vista <b> (2.99) </b></div> + <div>** Taxa de Juros Parcelado <b> (2.99) </b></div> + <div> <br />Formas de Pagamento Aceitas </div> + <div>* Ativar Boleto <b> (Sim ou Não) </b></div> + <div>* Ativar Cartões de Crédito <b> (Sim ou Não) </b></div> + <div>* Ativar Débito em Conta <b> (Sim ou Não) </b></div> + <div> <br />Cartões de Crédito Aceitos </div> + <div>* Visa <b> (Sim ou Nâo) </b></div> + <div>* Mastercard <b> (Sim ou Nâo) </b></div> + <div>* Hipercard <b> (Sim ou Nâo) </b></div> + <div>* Diners <b> (Sim ou Nâo) </b></div> + <div>* Amex <b> (Sim ou Nâo) </b></div> + <div> <br />Pagamento com Débito Aceitos </div> + <div>* Débito BB <b> (Sim ou Nâo) </b></div> + <div>* Débito Bradesco <b> (Sim ou Nâo) </b></div> + <div>* Débito Banrisul <b> (Sim ou Nâo) </b></div> + <div>* Débito Itaú <b> (Sim ou Nâo) </b></div> + <div> <br />Pagamento com Boleto Aceitos </div> + <div>* Boleto bancário <b> (Sim ou Nâo) </b></div> + <div> <br />Outras configurações</div> + <div>* Países <b> (Brasil) </b></div> + <div>* Mínimo da Compra <b> (Mínimo da compra para ativar o módulo) </b></div> + <div>* Máximo da Compra <b> (Máximo da compra para ativar o módulo) </b></div> + <div>* Custo por Transação <b> (Custo extra por transação feita) </b></div> + <div>* Custo percentual total <b> (Custo extra por transação total) </b></div> + <div>* Tarifa/Imposto <b> (Configurar de uma tarifa previamente cadastrada) </b></div> + + </div> + <div> Licença: <a href="http://www.gnu.org/licenses/gpl-3.0.html">GNU/GPL v3</a> - Desenvolvido por Luiz Weber - <a href="http://weber.eti.br">Weber TI</a> + </div> + + + + + pagseguro.jpg + + + + + pagsegurotransparente.php + licenca-gplv3.txt + leiame.txt + gplv3-license.txt + checkout_transparente_pagseguro.png + assets + imagens + language + admin + + + + pt-BR.plg_vmpayment_pagsegurotransparente.ini + en-GB.plg_vmpayment_pagsegurotransparente.ini + + + + pt-BR.plg_vmpayment_pagsegurotransparente.ini + en-GB.plg_vmpayment_pagsegurotransparente.ini + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    \ No newline at end of file

    *7khAx@z!oM-Dn?`$WQt-gF#!Pl?OWc;ALO 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 KY1e#>KKU;?tr(mD literal 0 HcmV?d00001 diff --git a/imagens/bb_debito.jpg b/imagens/bb_debito.jpg new file mode 100644 index 0000000000000000000000000000000000000000..53fd8da245b7695bddb6716456edf8e9e9816f56 GIT binary patch literal 4419 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 HemD0YYO)&9 literal 0 HcmV?d00001 diff --git a/imagens/boleto_bancario.jpg b/imagens/boleto_bancario.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9d4696f94866d3a940727c744972791974815db3 GIT binary patch literal 625 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 literal 0 HcmV?d00001 diff --git a/imagens/diners_cartao.jpg b/imagens/diners_cartao.jpg new file mode 100644 index 0000000000000000000000000000000000000000..55e16bb82b7969b757d4e2b01de8233433dbf0c0 GIT binary patch literal 1323 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 K?I6Pb|0V!l?bW>i literal 0 HcmV?d00001 diff --git a/imagens/hipercard_cartao.jpg b/imagens/hipercard_cartao.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9031e8e6499d608127c63170808f8e8cf917c395 GIT binary patch literal 2486 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 literal 0 HcmV?d00001 diff --git a/imagens/index.html b/imagens/index.html new file mode 100644 index 0000000..e69de29 diff --git a/imagens/itau_debito.jpg b/imagens/itau_debito.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7c6cfbe984804d4f03d5b139b670333c35e9efef GIT binary patch literal 3654 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 I_wlp;2ZmUSe*gdg literal 0 HcmV?d00001 diff --git a/imagens/selo_pagseguro.gif b/imagens/selo_pagseguro.gif new file mode 100644 index 0000000000000000000000000000000000000000..af1d91bd007daf980cd00da84c120ad63b599aae GIT binary patch literal 6812 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 P2b%E?n!?20^F99qrLL4D literal 0 HcmV?d00001 diff --git a/imagens/visa_electron_cartao.jpg b/imagens/visa_electron_cartao.jpg new file mode 100644 index 0000000000000000000000000000000000000000..edbb2ec7ee60c786309d5721a916a33f1ead515e GIT binary patch literal 3636 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 + Copyright (C) + + Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo sob + os termos da Licença Pública Geral GNU, conforme publicada pela Free Software + Foundation; tanto a versão 2 da Licença como (a seu critério) qualquer versão + mais actual. + + Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + GARANTIA; incluindo as garantias implícitas de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + obter mais detalhes. + + Você deve ter recebido uma cópia da Licença Pública Geral GNU em conjunto com + este programa; caso contrário, escreva para a Free Software Foundation, Inc., + 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + + + + Inclua também informações sobre como contactá-lo electronicamente e por carta. + + Se o programa é interactivo, faça-o mostrar um aviso breve como este, ao + iniciar um modo interactivo: + +Exemplo: + + + Gnomovision versão 69, Copyright (C) O Gnomovision não + possui QUALQUER GARANTIA; para obter mais detalhes escreva `mostrar g'. É + software livre e você está convidado a redistribui-lo sob certas condições; + digite `mostrar c' para obter detalhes. + + Os comandos hipotéticos `mostrar g e `mostrar c' devem mostrar as partes + apropriadas da Licença Pública Geral. É claro que os comandos que escolher usar + podem ser activados de outra forma que `mostrar g' e `mostrar c'; podem ser + cliques do rato ou itens de um menu -- o que melhor se adequar ao seu programa. + + Você também deve obter da sua entidade patronal (se trabalhar como + programador) ou escola, conforme o caso, uma "declaração de ausência de + direitos autorais" sobre o programa, se necessário. Aqui está um exemplo: + + + Neoscopio Lda., declara a ausência de quaisquer direitos autorais sobre o + programa `Gnomovision' escrito por Jorge Andrade. + +10 de Junho de 2004 + , + +Miguel Nunes, Gerente de Neoscopio Lda. + + + + Esta Licença Pública Geral não permite incorporar o seu programa em programas + proprietários. Se o seu programa é uma biblioteca de sub-rotinas, poderá + considerar mais útil permitir ligar aplicações proprietárias com a biblioteca. + Se é isto que pretende, use a Licença Pública Geral de Bibliotecas GNU, em vez + desta Licença. + + + + + diff --git a/pagsegurotransparente.php b/pagsegurotransparente.php new file mode 100644 index 0000000..5712286 --- /dev/null +++ b/pagsegurotransparente.php @@ -0,0 +1,2290 @@ +_loggable = true; + $this->tableFields = array_keys($this->getTableSQLFields()); + $this->_tablepkey = 'id'; + $this->_tableId = 'id'; + $varsToPush = $this->getVarsToPush (); + $this->setConfigParameterable($this->_configTableFieldName, $varsToPush); + $this->domdocument = false; + + if (!class_exists('VirtueMartModelOrders')) + require( JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php' ); + // Set the language code + $lang = JFactory::getLanguage(); + $lang->load('plg_vmpayment_' . $this->_name, JPATH_ADMINISTRATOR); + // self::$_this = $this; + + if (!class_exists('CurrencyDisplay')) + require( JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php' ); + + } + /** + * Create the table for this plugin if it does not yet exist. + * @author Valérie Isaksen + */ + protected function getVmPluginCreateTableSQL() { + return $this->createTableSQL('Payment Pagsegurotransparente Table'); + } + /** + * Fields to create the payment table + * @return string SQL Fileds + */ + function getTableSQLFields() { + // tabela com as configurações de cada transação + $SQLfields = array( + 'id' => 'bigint(10) unsigned NOT NULL AUTO_INCREMENT', + 'transactionCode' => ' varchar(50) NOT NULL', + 'virtuemart_order_id' => 'bigint(11) UNSIGNED DEFAULT NULL', + 'order_number' => 'char(50) DEFAULT NULL', + 'virtuemart_paymentmethod_id' => 'mediumint(1) UNSIGNED DEFAULT NULL', + 'payment_name' => 'char(255) NOT NULL DEFAULT \'\' ', + 'payment_order_total' => 'decimal(15,5) NOT NULL DEFAULT \'0.00000\' ', + 'payment_currency' => 'char(3) ', + 'type_transaction' => 'varchar(200) DEFAULT NULL ', + 'log' => ' varchar(200) DEFAULT NULL', + 'status' => ' char(1) not null default \'P\'', + 'msg_status' => ' varchar(255) NOT NULL', + 'url_redirecionar' => ' varchar(255) NOT NULL', + 'tax_id' => 'smallint(11) DEFAULT NULL', + ); + return $SQLfields; + } + + /** + * @param $name + * @param $id + * @param $data + * @return bool + */ + function plgVmDeclarePluginParamsPaymentVM3( &$data) { + return $this->declarePluginParams('payment', $data); + } + + function getPluginParams(){ + $db = JFactory::getDbo(); + $sql = "select virtuemart_paymentmethod_id from #__virtuemart_paymentmethods where payment_element = 'pagsegurotransparente'"; + $db->setQuery($sql); + $id = (int)$db->loadResult(); + return $this->getVmPluginMethod($id); + } + /** + * + * + * @author Valérie Isaksen + */ + function plgVmConfirmedOrder($cart, $order) { + if (!($method = $this->getVmPluginMethod($order['details']['BT']->virtuemart_paymentmethod_id))) { + return null; // Another method was selected, do nothing + } + if (!$this->selectedThisElement($method->payment_element)) { + return false; + } + vmJsApi::js('facebox'); + vmJsApi::css('facebox'); + $this->order_id = $order['details']['BT']->order_number; + $url = JURI::root(); + // carrega os js e css + $doc = & JFactory::getDocument(); + $url_lib = $url. '/' .'plugins'. '/' .'vmpayment'. '/' .'pagsegurotransparente'.'/'; + $url_assets = $url_lib . 'assets'. '/'; + $url_js = $url_assets . 'js'. '/'; + $url_css = $url_assets . 'css'. '/'; + $this->url_imagens = $url_lib . 'imagens'. '/'; + // redirecionar dentro do componente para validar + $url_redireciona_pagsegurotransparente = JROUTE::_(JURI::root() . 'index.php?option=com_virtuemart&view=pluginresponse&task=pluginnotification&task2=redirecionarPagseguroAPI&tmpl=component&pm='.$order['details']['BT']->virtuemart_paymentmethod_id."&order_number=".$this->order_id); + $url_pedidos = JROUTE::_(JURI::root() . 'index.php?option=com_virtuemart&view=orders'); + + if ($method->url_redirecionamento) { + $url_recibo_pagsegurotransparente = JROUTE::_($method->url_redirecionamento); + } else { + $url_recibo_pagsegurotransparente = JROUTE::_(JURI::root() .'index.php?option=com_virtuemart&view=pluginresponse&task=pluginresponsereceived&on='.$this->order_id.'&pm='.$order['details']['BT']->virtuemart_paymentmethod_id); + } + + $session_id_pagseguro = $this->getSessionIdPagseguro($method); + if (!$session_id_pagseguro) { + JFactory::getApplication()->enqueueMessage( 'Erro ao configurar e-mail e token do PagSeguro', 'error' ); + return false; + } + $url_js_directpayment = $this->getUrlJsPagseguro($method); + $doc->addCustomTag(' + + + + + + + '.($load_squeezebox!=0?$sq_js:'').' + + + + '.($load_squeezebox!=0?$sq_css:'').' + '); + $lang = JFactory::getLanguage(); + $filename = 'com_virtuemart'; + $lang->load($filename, JPATH_ADMINISTRATOR); + $vendorId = 0; + $this->logInfo('plgVmConfirmedOrder order number: ' . $order['details']['BT']->order_number, 'message'); + $html = ""; + if (!class_exists('VirtueMartModelOrders')) { + require( JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php' ); + } + $this->getPaymentCurrency($method); + $q = 'SELECT `currency_code_3` FROM `#__virtuemart_currencies` WHERE `virtuemart_currency_id`="' . $method->payment_currency . '" '; + $db = &JFactory::getDBO(); + $db->setQuery($q); + $currency_code_3 = $db->loadResult(); + $paymentCurrency = CurrencyDisplay::getInstance($method->payment_currency); + $totalInPaymentCurrency = round($paymentCurrency->convertCurrencyTo($method->payment_currency, $order['details']['BT']->order_total, false), 2); + $cd = CurrencyDisplay::getInstance($cart->pricesCurrency); + // pega o nome do método de pagamento + $dbValues['payment_name'] = $this->renderPluginName($method); + + $html = '' . "\n"; + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_PAYMENT_NAME', $dbValues['payment_name']); + if (!empty($payment_info)) { + $lang = & JFactory::getLanguage(); + if ($lang->hasKey($method->payment_info)) { + $payment_info = JText::_($method->payment_info); + } else { + $payment_info = $method->payment_info; + } + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_INFO', $payment_info); + } + if (!class_exists('VirtueMartModelCurrency')) { + require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'currency.php'); + } + $currency = CurrencyDisplay::getInstance('', $order['details']['BT']->virtuemart_vendor_id); + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_ORDER_NUMBER', $order['details']['BT']->order_number); + $html .= $this->getHtmlRowBE('PAGSEGUROTRANSPARENTE_AMOUNT', $currency->priceDisplay($order['details']['BT']->order_total)); + $html .= ' + +
    ' . "\n"; + $this->_virtuemart_paymentmethod_id = $order['details']['BT']->virtuemart_paymentmethod_id; + $dbValues['order_number'] = $order['details']['BT']->order_number; + $dbValues['virtuemart_paymentmethod_id'] = $this->_virtuemart_paymentmethod_id; + $dbValues['cost_per_transaction'] = $method->cost_per_transaction; + $dbValues['cost_percent_total'] = $method->cost_percent_total; + $dbValues['payment_currency'] = $currency_code_3; + $dbValues['payment_order_total'] = $totalInPaymentCurrency; + $dbValues['tax_id'] = $method->tax_id; + $this->storePSPluginInternalData($dbValues); + // grava os dados do pagamento + //$this->gravaDados($method,0,$arr_pagamento['status']); + //$retorno = $this->createTransaction($method,$order); + $html .= $this->Pagsegurotransparente_mostraParcelamento($method, $order); + $cart->_confirmDone = FALSE; + $cart->_dataValidated = FALSE; + $cart->setCartIntoSession (); + JRequest::setVar ('html', $html); + + } + + public function Pagsegurotransparente_mostraParcelamento($method, $order) { + + $doc = JFactory::getDocument(); + //$doc->addScript($this->url_js); + + if ($method->ativar_cartao ) { + $lt_cartao = '