Guest User

Untitled

a guest
Jan 2nd, 2018
510
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 29.96 KB | None | 0 0
  1. <?php
  2.     // PHP settings
  3.     ini_set("max_execution_time", 5000);
  4.  
  5.     // PagarMe
  6.     require_once(ABSPATH . "wp-includes/pagarme-php/vendor/autoload.php");
  7.     $pagar_me = new \PagarMe\Sdk\PagarMe("ak_test_qtDOZfF5K0VDn17k04NxnQPIZ3r5wV");
  8.     $postback_url = "http://aledsz.com.br/coprime/?action=postback";
  9.  
  10.     // Start session
  11.     session_start();
  12.  
  13.     // Disable admin bar
  14.     add_filter("show_admin_bar", "__return_false");
  15.     add_filter('send_password_change_email', '__return_false');
  16.     add_filter('wp_mail_from', 'new_mail_from');
  17.     add_filter('wp_mail_from_name', 'new_mail_from_name');
  18.  
  19.     function new_mail_from($old) {
  20.         return 'contato@coprime.com.br';
  21.     }
  22.  
  23.     function new_mail_from_name($old) {
  24.         return 'CoPrime';
  25.     }
  26.  
  27.     // Remove meta tag generator
  28.     remove_action("wp_head", "wp_generator");
  29.  
  30.     // Register menu
  31.     function register_my_menu() {
  32.         register_nav_menus( array(
  33.             "header-menu" => "Menu",
  34.         ) );
  35.     }
  36.     add_action( "init", "register_my_menu" );
  37.  
  38.     // Register thumbnails
  39.     add_theme_support("post-thumbnails", array ("post", "page"));
  40.     add_image_size("servico", 690, 460, true );
  41.  
  42.     // Remove title from the_post_thumbnail
  43.     function the_post_thumbnail_remove_title($output) {
  44.         $output = preg_replace("` title='(.*?)'`", "", $output);
  45.         return $output;
  46.     }
  47.     add_filter("post_thumbnail_html", "the_post_thumbnail_remove_title");
  48.  
  49.     //To keep the count accurate, lets get rid of prefetching
  50.     remove_action( "wp_head", "adjacent_posts_rel_link_wp_head", 10, 0);
  51.  
  52.     add_action("wp_enqueue_scripts", "wpmidia_enqueue_masked_input");
  53.  
  54.     function wpmidia_enqueue_masked_input() {
  55.         if (is_page(array("trabalhe-conosco","contato", "login", "cadastro"))) {
  56.                 wp_enqueue_script("masked-input", "https://cdnjs.cloudflare.com/ajax/libs/jquery.maskedinput/1.4.1/jquery.maskedinput.min.js", array("jquery"));
  57.         }
  58.     }
  59.  
  60.     add_action("wp_footer", "wpmidia_activate_masked_input");
  61.  
  62.     function wpmidia_activate_masked_input() {
  63.        if (is_page(array("trabalhe-conosco", "contato"))) {
  64.     ?>
  65.         <script type="text/javascript">
  66.             jQuery( function($){
  67.                 $(".telefone").focusout(function () {
  68.                     var phone, element;
  69.                     element = $(this);
  70.                     element.unmask();
  71.                     phone = element.val().replace(/\D/g, "");
  72.                     if (phone.length > 10) {
  73.                         element.mask("(99) 99999-999?9");
  74.                     } else {
  75.                         element.mask("(99) 9999-9999?9");
  76.                     }
  77.                 }).trigger("focusout");
  78.             });
  79.         </script>
  80.     <?php
  81.        }
  82.     }
  83.  
  84.     function is_logged() {
  85.         return isSet($_SESSION["user"]);
  86.     }
  87.  
  88.     // Custom Post Type
  89.     function create_posttype() {
  90.         $args = array(
  91.             "public" => true,
  92.             "label"  => "Parceiros",
  93.             "supports" => array()
  94.         );
  95.  
  96.         register_post_type("parceiros", $args);
  97.  
  98.         $args = array(
  99.             "public" => true,
  100.             "label"  => "Usuário Coprime",
  101.             "supports" => array("")
  102.         );
  103.  
  104.         register_post_type("usuario_coprime", $args);
  105.  
  106.         $args = array(
  107.             "public" => true,
  108.             "label"  => "E-mail",
  109.             "supports" => array("title", "editor")
  110.         );
  111.  
  112.         register_post_type("email", $args);
  113.  
  114.         $args = array(
  115.             "public" => true,
  116.             "label"  => "Contratação de Serviços",
  117.             "supports" => array("title")
  118.         );
  119.  
  120.         register_post_type("contratacao", $args);
  121.     }
  122.     add_action("init", "create_posttype");
  123.  
  124.     // Get username
  125.     function get_user_name($cnpj, $email) {
  126.         $symbols = array("/", ".", "-");
  127.  
  128.         $cnpj = str_replace($symbols, "", $cnpj);
  129.  
  130.         $email = explode("@", $email);
  131.         $new_email = str_replace(".", "_", $email[0]);
  132.  
  133.         $email = explode(".", $email[1]);
  134.         $new_email = $new_email . "_" . $email[0];
  135.  
  136.         $user_name = $cnpj . "_" . $new_email;
  137.  
  138.         return $user_name;
  139.     }
  140.  
  141.     // Check user
  142.     function check_user() {
  143.         if (is_page(array("minha-conta"))) {
  144.             if (!is_logged()) {
  145.                 $_SESSION["error_login"] = "Favor acessar sua conta para visualizar esta página";
  146.                 header("location:" . get_bloginfo("url") . "/login?action=error");
  147.             }
  148.         } else if (is_page(array("login"))) {
  149.             if (is_logged()) {
  150.                 header("location:" . get_bloginfo("url"));
  151.             }
  152.         }
  153.     }
  154.  
  155.     add_action("wp_enqueue_scripts", "check_user");
  156.  
  157.     // Send mail
  158.     function send_mail ($email, $email_data, $post_query) {
  159.         $query = new WP_Query($post_query);
  160.  
  161.         while ($query->have_posts()) {
  162.             $query->the_post();
  163.             $title = get_the_title();
  164.             $html = get_the_content();
  165.         }
  166.  
  167.         foreach ($email_data as $key => $value) {
  168.             $html = str_replace("#$key#", "$value", $html);
  169.         }
  170.  
  171.         $html = strtr($html, array(
  172.             "#br#" => "<br />"
  173.         ));
  174.  
  175.         wp_mail($email, str_replace("&#8211;", "-", $title), $html, array("Content-type: text/html"));
  176.     }
  177.  
  178.     function get_post_id ($post_query) {
  179.         $query = new WP_Query($post_query);
  180.  
  181.         while ($query->have_posts()) {
  182.             $query->the_post();
  183.            
  184.             return $query->post->ID;
  185.         }
  186.  
  187.         return null;
  188.     }
  189.  
  190.     function get_services ($user_id) {
  191.         $query = new WP_Query("author=$user_id&post_type=contratacao&posts_per_page=100");
  192.  
  193.         $services = array();
  194.  
  195.         while ($query->have_posts()) {
  196.             $query->the_post();
  197.             $services[] = get_fields();
  198.         }
  199.  
  200.         return $services;
  201.     }
  202.  
  203.     // Get data when exists
  204.     function get_data_when_exists ($data) {
  205.         if (empty($data) || !$data) {
  206.             return "";
  207.         } else {
  208.             return $data;
  209.         }
  210.     }
  211.  
  212.     // Get signature value
  213.     function get_signature_value ($valor_pagarme) {
  214.         $decimais_valor = substr($valor_pagarme, strlen($valor_pagarme) - 2);
  215.         $valor_parcela = substr($valor_pagarme, 0, strlen($valor_pagarme) - 2);
  216.  
  217.         return "{$valor_parcela},{$decimais_valor}";
  218.     }
  219.  
  220. // Actions
  221. if (isSet($_GET["action"])) {
  222.     switch ($_GET["action"]) {
  223.  
  224.         case "logout":
  225.             wp_logout();
  226.             unset($_SESSION["user"]);
  227.             header("location:" . get_bloginfo("url"));
  228.             die;
  229.             break;
  230.  
  231.         case "get_token":
  232.             $user = get_user_by("login", get_user_name($_POST["cnpj"], $_POST["email"]));
  233.  
  234.             if ($user) {
  235.                 $user_password = base64_encode(get_user_name($_POST["cnpj"], $_POST["email"]));
  236.  
  237.                 $email_data["name"] = $user->data->display_name;
  238.                 $email_data["token"] = $user_password;
  239.                 $_SESSION["send_token"] = $_POST;
  240.  
  241.                 send_mail($_POST["email"], $email_data, "p=95&post_type=email");
  242.  
  243.                 header("location:" . get_bloginfo("url") . "/login?action=set_token&?redirect/minha-conta");
  244.             } else {
  245.                 unset($_SESSION["user"]);
  246.                 header("location:" . get_bloginfo("url") . "/cadastro");
  247.             }
  248.             die;
  249.             break;
  250.  
  251.         case "login":
  252.             $user = wp_signon(array(
  253.                 "user_login" => get_user_name($_POST["cnpj"], $_POST["email"]),
  254.                 "user_password" => $_POST["password"],
  255.                 "remember" => true
  256.             ));
  257.  
  258.             if (is_wp_error($user)) {
  259.                 $_SESSION["error_login"] = "Usuário e/ou senha incorretos.";
  260.                 header("location:" . get_bloginfo("url") . "/login");
  261.             } else {
  262.                 $user = get_user_by("login", get_user_name($_POST["cnpj"], $_POST["email"]));
  263.                 $user_id = $user->data->ID;
  264.                 $data = get_userdata($user_id);
  265.                 $user->data->first_name = $data->first_name;
  266.  
  267.                 $_SESSION["user"] = $user;
  268.                 $_SESSION["usuario_coprime"] = get_post_id("author=$user_id&post_type=usuario_coprime");
  269.  
  270.                 header("location:" . get_bloginfo("url") . "/minha-conta");
  271.             }
  272.             die;
  273.             break;
  274.  
  275.         case "register":
  276.             $user_id = wp_create_user(
  277.                 get_user_name($_POST["cnpj"], $_POST["email"]),
  278.                 base64_encode(get_user_name($_POST["cnpj"], $_POST["email"])),
  279.                 $_POST["email"]
  280.             );
  281.  
  282.             if (is_wp_error($user_id)) {
  283.                 header("location:" . get_bloginfo("url") . "/cadastro");
  284.             } else {
  285.  
  286.                 wp_update_user(array(
  287.                     "ID" => $user_id,
  288.                     "first_name" => $_POST["representante_nome"],
  289.                     "last_name" => $_POST["razao_social"],
  290.                     "display_name" => $_POST["representante_nome"],
  291.                     "role" => "author"
  292.                 ));
  293.  
  294.                 $post_data = array(
  295.                     "post_author" => $user_id,
  296.                     "post_title" => $_POST["representante_nome"] . " — " . $_POST["razao_social"],
  297.                     "post_content" => $_POST["representante_nome"] . " — " . $_POST["razao_social"],
  298.                     "post_excerpt" => $_POST["representante_nome"] . " — " . $_POST["razao_social"],
  299.                     "post_type" => "usuario_coprime"
  300.                 );
  301.  
  302.                 $post_id = wp_insert_post($post_data, true);
  303.  
  304.                 if ((int) $post_id > 0) {
  305.                     foreach ($_POST as $key => $value) {
  306.                         update_field($key, $value, $post_id);
  307.                     }
  308.  
  309.                     wp_update_post(array(
  310.                         "ID" => $post_id,
  311.                         "post_status" => "publish"
  312.                     ));
  313.  
  314.                     $user = wp_signon(array(
  315.                         "user_login" => get_user_name($_POST["cnpj"], $_POST["email"]),
  316.                         "user_password" => base64_encode(get_user_name($_POST["cnpj"], $_POST["email"])),
  317.                         "remember" => true
  318.                     ));
  319.  
  320.                     $user = get_user_by("login", get_user_name($_POST["cnpj"], $_POST["email"]));
  321.                     $data = get_userdata($user_id);
  322.  
  323.                     $user->data->first_name = $data->first_name;
  324.                     $_SESSION["user"] = $user;
  325.                     $_SESSION["usuario_coprime"] = get_post_id("author=$user_id&post_type=usuario_coprime");
  326.  
  327.                     header("location:" . get_bloginfo("url") . "/minha-conta");
  328.                 }
  329.             }
  330.             die;
  331.             break;
  332.  
  333.         case "update_data":
  334.             $post_id = $_SESSION["usuario_coprime"];
  335.             $cnpj = get_field("cnpj", $post_id);
  336.             $email = get_field("email", $post_id);
  337.  
  338.             $user = get_user_by("login", get_user_name($cnpj, $email));
  339.  
  340.             if ($user) {
  341.                 $user_login = get_user_name($_POST["cnpj"], $_POST["email"]);
  342.                 $user_password = base64_encode(get_user_name($_POST["cnpj"], $_POST["email"]));
  343.  
  344.                 wp_update_user(array(
  345.                     "ID" => $user_id,
  346.                     "user_login" => $user_password,
  347.                     "user_password" => $user_password,
  348.                     "first_name" => $_POST["representante_nome"],
  349.                     "last_name" => $_POST["razao_social"],
  350.                     "display_name" => $_POST["representante_nome"],
  351.                     "role" => "author"
  352.                 ));
  353.  
  354.                 foreach ($_POST as $key => $value) {
  355.                     update_field($key, $value, $post_id);
  356.                 }
  357.  
  358.                 $user = get_user_by("login", get_user_name($cnpj, $email));
  359.                 $user_id = $user->data->ID;
  360.                 $data = get_userdata($user_id);
  361.                 $user->data->first_name = $data->first_name;
  362.  
  363.                 $_SESSION["user"] = $user;
  364.             }
  365.             header("location:" . get_bloginfo("url") . "/minha-conta");
  366.             die;
  367.             break;
  368.        
  369.         case "generate_boleto":
  370.             $usuario_coprime_id = $_SESSION["usuario_coprime"];
  371.             $cnpj = get_field("cnpj", $usuario_coprime_id);
  372.             $email = get_field("email", $usuario_coprime_id);
  373.             $telefone = get_field("telefone", $usuario_coprime_id);
  374.             $cep = get_field("cep", $usuario_coprime_id);
  375.             $numero = get_field("numero", $usuario_coprime_id);
  376.             $complemento = get_field("complemento", $usuario_coprime_id);
  377.             $razao_social = get_field("razao_social", $usuario_coprime_id);
  378.             $usuario_coprime = get_the_title($usuario_coprime_id);
  379.  
  380.             $user = get_user_by("login", get_user_name("99.999.999/9999-99", $email));
  381.  
  382.             if ($user) {
  383.                 $payment_method = $_POST["payment_method"];
  384.  
  385.                 if ($payment_method == "a_vista") {
  386.                     $installments = 1;
  387.                 } else {
  388.                     $installments = $_POST["installments"];
  389.                 }
  390.  
  391.                 $valor_total = $_POST["valor_pagarme"];
  392.                 $valor_total_pagarme = $_POST["valor_pagarme"];
  393.                 $servico = $_POST["servico"];
  394.                 $plano = $_POST["plano"];
  395.                 $assinatura = $_POST["assinatura"];
  396.                 $data_contratacao = date("Y-m-d");
  397.  
  398.                 if ($assinatura == "Mensal") {
  399.                     $data_vencto = date_add(date_create($data_contratacao), date_interval_create_from_date_string("1 month"));
  400.                 } else if ($assinatura == "Trimestral") {
  401.                     if ($installments == 1) {
  402.                         $data_vencto = date_add(date_create($data_contratacao), date_interval_create_from_date_string("3 months"));
  403.                     } else {
  404.                         $data_vencto = date_add(date_create($data_contratacao), date_interval_create_from_date_string("1 month"));
  405.                     }
  406.                 } else if ($assinatura == "Semestral") {
  407.                     if ($installments == 1) {
  408.                         $data_vencto = date_add(date_create($data_contratacao), date_interval_create_from_date_string("6 months"));
  409.                     } else {
  410.                         $data_vencto = date_add(date_create($data_contratacao), date_interval_create_from_date_string("1 month"));
  411.                     }
  412.                 } else if ($assinatura == "Anual") {
  413.                     if ($installments == 1) {
  414.                         $data_vencto = date_add(date_create($data_contratacao), date_interval_create_from_date_string("12 months"));
  415.                     } else {
  416.                         $data_vencto = date_add(date_create($data_contratacao), date_interval_create_from_date_string("1 month"));
  417.                     }
  418.                 } else {
  419.                     $data_vencto = date_add(date_create($data_contratacao), date_interval_create_from_date_string("7 days"));
  420.                 }
  421.  
  422.                 $data_vencto = date_add($data_vencto, date_interval_create_from_date_string("1 day"));
  423.                 $data_vencimento = date_format($data_vencto, "Y-m-d");
  424.  
  425.                 $parcelas_calculadas = $pagar_me->calculation()->calculateInstallmentsAmount($valor_total, 1, 12, 12);
  426.                 $valor_total = $parcelas_calculadas[$installments]["installment_amount"];
  427.  
  428.                 $telefone_pagarme = explode(" ", $telefone);
  429.                 $telefone_pagarme[0] = str_replace("(", "", $telefone_pagarme[0]);
  430.                 $telefone_pagarme[0] = str_replace(")", "", $telefone_pagarme[0]);
  431.                 $telefone_pagarme[1] = str_replace("-", "", $telefone_pagarme[1]);
  432.                 $cep = str_replace("-", "", $cep);
  433.  
  434.                 $dados_cep = $pagar_me->zipcode()->getInfo($cep);
  435.  
  436.                 $post_data = array(
  437.                     "post_author" => $user->data->ID,
  438.                     "post_title" => "{$servico}{$plano}{$assinatura}{$razao_social}",
  439.                     "post_content" => "{$servico}{$plano}{$assinatura}{$razao_social}",
  440.                     "post_excerpt" => "{$servico}{$plano}{$assinatura}{$razao_social}",
  441.                     "post_type" => "contratacao"
  442.                 );
  443.  
  444.                 $contrato_id = wp_insert_post($post_data, true);
  445.  
  446.                 update_field("data_contratacao", $data_contratacao, $contrato_id);
  447.  
  448.                 $transaction = $pagar_me->transaction()->boletoTransaction($valor_total,
  449.                     $pagar_me->customer()->create(
  450.                             $user->display_name,
  451.                             $email,
  452.                             $cnpj,
  453.                             new \PagarMe\Sdk\Customer\Address(array(
  454.                                 "street" => $dados_cep->street,
  455.                                 "streetNumber" => $numero,
  456.                                 "neighborhood" => $dados_cep->neighborhood,
  457.                                 "zipcode" => $dados_cep->zipcode,
  458.                                 "complementary" => $complemento,
  459.                                 "city" => $dados_cep->city,
  460.                                 "state" => $dados_cep->state
  461.                             )),
  462.                             new \PagarMe\Sdk\Customer\Phone(array(
  463.                                 "ddd" => $telefone_pagarme[0],
  464.                                 "number" => $telefone_pagarme[1]
  465.                             ))
  466.                     ),
  467.                     $postback_url,
  468.                     array(
  469.                         "id_usuario_coprime" => $usuario_coprime_id,
  470.                         "id_usuario" => $user->data->ID,
  471.                         "id_contrato" => $contrato_id,
  472.                         "cnpj" => $cnpj,
  473.                         "email" => $email,
  474.                         "razao_social" => $razao_social,
  475.                         "softDescriptor" => "CoPrime",
  476.                         "parcela" => 1
  477.                     ),
  478.                     array(
  479.                         "boleto_expiration_date" => $data_vencimento
  480.                     )
  481.                 );
  482.  
  483.                 $transaction_id = $transaction->getId();
  484.  
  485.                 wp_update_post(array(
  486.                     "ID" => $contrato_id,
  487.                     "post_status" => "publish"
  488.                 ));
  489.                
  490.                 update_field("transaction_id", $transaction_id, $contrato_id);
  491.                 update_field("servico", $servico, $contrato_id);
  492.                 update_field("plano", $plano, $contrato_id);
  493.                 update_field("assinatura", $assinatura, $contrato_id);
  494.                 update_field("valor_total", $valor_total_pagarme, $contrato_id);
  495.                 update_field("parcelas", $installments, $contrato_id);
  496.                 update_field("status", $transaction->getStatus(), $contrato_id);
  497.                 update_field("boleto_url", $transaction->getBoletoUrl(), $contrato_id);
  498.  
  499.                 wp_update_post(array(
  500.                     "ID" => $contrato_id,
  501.                     "post_status" => "publish"
  502.                 ));
  503.  
  504.                 $email_data["name"] = $user->data->display_name;
  505.                 $email_data["service_name"] = $servico;
  506.                 $email_data["plan_name"] = $plano;
  507.                 $email_data["signature_type"] = $assinatura;
  508.                 $email_data["signature_value"] = get_signature_value($valor_total);
  509.                 $email_data["boleto_expiration_date"] = $transaction->getBoletoExpirationDate()->format('d/m/Y');
  510.                 $email_data["boleto_link"] = $transaction->getBoletoUrl();
  511.  
  512.                 send_mail($user->data->user_email, $email_data, "p=94&post_type=email");
  513.  
  514.                 $_SESSION["payment_data"] = $transaction;
  515.                 header("location:" . get_bloginfo("url") . "/pagamento");
  516.             }
  517.             die;
  518.             break;
  519.  
  520.         case "register_user":
  521.             $user_id = wp_create_user(
  522.                 get_user_name($_POST["cnpj"], $_POST["email"]),
  523.                 base64_encode(get_user_name($_POST["cnpj"], $_POST["email"])),
  524.                 $_POST["email"]
  525.             );
  526.  
  527.             if (is_wp_error($user_id)) {
  528.                 header("location:" . get_bloginfo("url") . "/cadastro");
  529.             } else {
  530.  
  531.                 wp_update_user(array(
  532.                     "ID" => $user_id,
  533.                     "first_name" => $_POST["representante_nome"],
  534.                     "last_name" => $_POST["razao_social"],
  535.                     "display_name" => $_POST["representante_nome"],
  536.                     "role" => "author"
  537.                 ));
  538.  
  539.                 $post_data = array(
  540.                     "post_author" => $user_id,
  541.                     "post_title" => $_POST["representante_nome"] . " — " . $_POST["razao_social"],
  542.                     "post_content" => $_POST["representante_nome"] . " — " . $_POST["razao_social"],
  543.                     "post_excerpt" => $_POST["representante_nome"] . " — " . $_POST["razao_social"],
  544.                     "post_type" => "usuario_coprime"
  545.                 );
  546.  
  547.                 $post_id = wp_insert_post($post_data, true);
  548.  
  549.                 if ((int) $post_id > 0) {
  550.                     foreach ($_POST as $key => $value) {
  551.                         update_field($key, $value, $post_id);
  552.                     }
  553.  
  554.                     wp_update_post(array(
  555.                         "ID" => $post_id,
  556.                         "post_status" => "publish"
  557.                     ));
  558.  
  559.                     $user = wp_signon(array(
  560.                         "user_login" => get_user_name($_POST["cnpj"], $_POST["email"]),
  561.                         "user_password" => base64_encode(get_user_name($_POST["cnpj"], $_POST["email"])),
  562.                         "remember" => true
  563.                     ));
  564.  
  565.                     $user = get_user_by("login", get_user_name($_POST["cnpj"], $_POST["email"]));
  566.                     $data = get_userdata($user_id);
  567.  
  568.                     $user->data->first_name = $data->first_name;
  569.                     $_SESSION["user"] = $user;
  570.                     $_SESSION["usuario_coprime"] = get_post_id("author=$user_id&post_type=usuario_coprime");
  571.  
  572.                     $usuario_coprime_id = get_post_id("author=$user_id&post_type=usuario_coprime");
  573.                     $cnpj = get_field("cnpj", $usuario_coprime_id);
  574.                     $email = get_field("email", $usuario_coprime_id);
  575.                     $telefone = get_field("telefone", $usuario_coprime_id);
  576.                     $cep = get_field("cep", $usuario_coprime_id);
  577.                     $numero = get_field("numero", $usuario_coprime_id);
  578.                     $complemento = get_field("complemento", $usuario_coprime_id);
  579.                     $razao_social = get_field("razao_social", $usuario_coprime_id);
  580.                     $usuario_coprime = get_the_title($usuario_coprime_id);
  581.  
  582.                     $payment_method = $_POST["payment_method"];
  583.  
  584.                     if ($payment_method == "a_vista") {
  585.                         $installments = 1;
  586.                     } else {
  587.                         $installments = $_POST["installments"];
  588.                     }
  589.  
  590.                     $valor_total = $_POST["valor_pagarme"];
  591.                     $valor_total_pagarme = $_POST["valor_pagarme"];
  592.                     $servico = $_POST["servico"];
  593.                     $plano = $_POST["plano"];
  594.                     $assinatura = $_POST["assinatura"];
  595.                     $data_contratacao = date("Y-m-d");
  596.  
  597.                     if ($assinatura == "Mensal") {
  598.                         $data_vencto = date_add(date_create($data_contratacao), date_interval_create_from_date_string("1 month"));
  599.                     } else if ($assinatura == "Trimestral") {
  600.                         if ($installments == 1) {
  601.                             $data_vencto = date_add(date_create($data_contratacao), date_interval_create_from_date_string("3 months"));
  602.                         } else {
  603.                             $data_vencto = date_add(date_create($data_contratacao), date_interval_create_from_date_string("1 month"));
  604.                         }
  605.                     } else if ($assinatura == "Semestral") {
  606.                         if ($installments == 1) {
  607.                             $data_vencto = date_add(date_create($data_contratacao), date_interval_create_from_date_string("6 months"));
  608.                         } else {
  609.                             $data_vencto = date_add(date_create($data_contratacao), date_interval_create_from_date_string("1 month"));
  610.                         }
  611.                     } else if ($assinatura == "Anual") {
  612.                         if ($installments == 1) {
  613.                             $data_vencto = date_add(date_create($data_contratacao), date_interval_create_from_date_string("12 months"));
  614.                         } else {
  615.                             $data_vencto = date_add(date_create($data_contratacao), date_interval_create_from_date_string("1 month"));
  616.                         }
  617.                     } else {
  618.                         $data_vencto = date_add(date_create($data_contratacao), date_interval_create_from_date_string("7 days"));
  619.                     }
  620.  
  621.                     $data_vencto = date_add($data_vencto, date_interval_create_from_date_string("1 day"));
  622.                     $data_vencimento = date_format($data_vencto, "Y-m-d");
  623.  
  624.                     $parcelas_calculadas = $pagar_me->calculation()->calculateInstallmentsAmount($valor_total, 1, 12, 12);
  625.                     $valor_total = $parcelas_calculadas[$installments]["installment_amount"];
  626.  
  627.                     $telefone_pagarme = explode(" ", $telefone);
  628.                     $telefone_pagarme[0] = str_replace("(", "", $telefone_pagarme[0]);
  629.                     $telefone_pagarme[0] = str_replace(")", "", $telefone_pagarme[0]);
  630.                     $telefone_pagarme[1] = str_replace("-", "", $telefone_pagarme[1]);
  631.                     $cep = str_replace("-", "", $cep);
  632.  
  633.                     $dados_cep = $pagar_me->zipcode()->getInfo($cep);
  634.  
  635.                     $post_data = array(
  636.                         "post_author" => $user->data->ID,
  637.                         "post_title" => "{$servico}{$plano}{$assinatura}{$razao_social}",
  638.                         "post_content" => "{$servico}{$plano}{$assinatura}{$razao_social}",
  639.                         "post_excerpt" => "{$servico}{$plano}{$assinatura}{$razao_social}",
  640.                         "post_type" => "contratacao"
  641.                     );
  642.  
  643.                     $contrato_id = wp_insert_post($post_data, true);
  644.  
  645.                     update_field("data_contratacao", $data_contratacao, $contrato_id);
  646.  
  647.                     $transaction = $pagar_me->transaction()->boletoTransaction($valor_total,
  648.                         $pagar_me->customer()->create(
  649.                                 $user->display_name,
  650.                                 $email,
  651.                                 $cnpj,
  652.                                 new \PagarMe\Sdk\Customer\Address(array(
  653.                                     "street" => $dados_cep->street,
  654.                                     "streetNumber" => $numero,
  655.                                     "neighborhood" => $dados_cep->neighborhood,
  656.                                     "zipcode" => $dados_cep->zipcode,
  657.                                     "complementary" => $complemento,
  658.                                     "city" => $dados_cep->city,
  659.                                     "state" => $dados_cep->state
  660.                                 )),
  661.                                 new \PagarMe\Sdk\Customer\Phone(array(
  662.                                     "ddd" => $telefone_pagarme[0],
  663.                                     "number" => $telefone_pagarme[1]
  664.                                 ))
  665.                         ),
  666.                         $postback_url,
  667.                         array(
  668.                             "id_usuario_coprime" => $usuario_coprime_id,
  669.                             "id_usuario" => $user->data->ID,
  670.                             "id_contrato" => $contrato_id,
  671.                             "cnpj" => $cnpj,
  672.                             "email" => $email,
  673.                             "razao_social" => $razao_social,
  674.                             "softDescriptor" => "CoPrime",
  675.                             "parcela" => 1
  676.                         ),
  677.                         array(
  678.                             "boleto_expiration_date" => $data_vencimento
  679.                         )
  680.                     );
  681.  
  682.                     $transaction_id = $transaction->getId();
  683.  
  684.                     wp_update_post(array(
  685.                         "ID" => $contrato_id,
  686.                         "post_status" => "publish"
  687.                     ));
  688.                    
  689.                     update_field("transaction_id", $transaction_id, $contrato_id);
  690.                     update_field("servico", $servico, $contrato_id);
  691.                     update_field("plano", $plano, $contrato_id);
  692.                     update_field("assinatura", $assinatura, $contrato_id);
  693.                     update_field("valor_total", $valor_total_pagarme, $contrato_id);
  694.                     update_field("parcelas", $installments, $contrato_id);
  695.                     update_field("status", $transaction->getStatus(), $contrato_id);
  696.                     update_field("boleto_url", $transaction->getBoletoUrl(), $contrato_id);
  697.  
  698.                     wp_update_post(array(
  699.                         "ID" => $contrato_id,
  700.                         "post_status" => "publish"
  701.                     ));
  702.  
  703.                     $email_data["name"] = $user->data->display_name;
  704.                     $email_data["service_name"] = $servico;
  705.                     $email_data["plan_name"] = $plano;
  706.                     $email_data["signature_type"] = $assinatura;
  707.                     $email_data["signature_value"] = get_signature_value($valor_total);
  708.                     $email_data["boleto_expiration_date"] = $transaction->getBoletoExpirationDate()->format('d/m/Y');
  709.                     $email_data["boleto_link"] = $transaction->getBoletoUrl();
  710.  
  711.                     send_mail($user->data->user_email, $email_data, "p=94&post_type=email");
  712.  
  713.                     $_SESSION["payment_data"] = $transaction;
  714.                     header("location:" . get_bloginfo("url") . "/pagamento");
  715.                 }
  716.             }
  717.             break;
  718.  
  719.         case "postback":
  720.             $postback_data = $_REQUEST;
  721.  
  722.             if ($postback_data["transaction"]) {
  723.                 $transaction = $postback_data["transaction"];
  724.                 $transaction_id = $transaction["id"];
  725.                 $dados_coprime = $postback_data["transaction"]["metadata"];
  726.                 $event = $postback_data["event"];
  727.                 $status = $postback_data["current_status"];
  728.                 $usuario_coprime = $dados_coprime["id_usuario_coprime"];
  729.  
  730.                 if ($event == "transaction_status_changed") {
  731.                     $id_usuario = $dados_coprime["id_usuario"];
  732.                     $id_usuario_coprime = $dados_coprime["id_usuario_coprime"];
  733.                     $id_contrato = $dados_coprime["id_contrato"];
  734.                     $user = get_user_by("ID", $id_usuario);
  735.  
  736.                     if ($user) {
  737.                         if ($status == "paid") {
  738.                             $total_parcelas = get_field("parcelas", $id_contrato);
  739.                             $parcelas_pagas = get_field("parcelas_pagas", $id_contrato);
  740.                             $valor_total = get_field("valor_total", $id_contrato);
  741.                             $valor_pago = get_field("valor_pago", $id_contrato);
  742.                             $plano = get_field("plano", $id_contrato);
  743.                             $servico = get_field("servico", $id_contrato);
  744.                             $assinatura = get_field("assinatura", $id_contrato);
  745.                             $all_transaction_id = get_field("transaction_id", $id_contrato);
  746.  
  747.                             $cnpj = get_field("cnpj", $id_usuario_coprime);
  748.                             $email = get_field("email", $id_usuario_coprime);
  749.                             $telefone = get_field("telefone", $id_usuario_coprime);
  750.                             $cep = get_field("cep", $id_usuario_coprime);
  751.                             $numero = get_field("numero", $id_usuario_coprime);
  752.                             $complemento = get_field("complemento", $id_usuario_coprime);
  753.                             $razao_social = get_field("razao_social", $id_usuario_coprime);
  754.  
  755.                             if ($assinatura == "Mensal") {
  756.                                 $data_vencto = date_add(date_create($transaction["date_updated"]), date_interval_create_from_date_string("1 month"));
  757.                             } else if ($assinatura == "Trimestral") {
  758.                                 if ($total_parcelas == 1) {
  759.                                     $data_vencto = date_add(date_create($transaction["date_updated"]), date_interval_create_from_date_string("3 months"));
  760.                                 } else {
  761.                                     $data_vencto = date_add(date_create($transaction["date_updated"]), date_interval_create_from_date_string("1 month"));
  762.                                 }
  763.                             } else if ($assinatura == "Semestral") {
  764.                                 if ($total_parcelas == 1) {
  765.                                     $data_vencto = date_add(date_create($transaction["date_updated"]), date_interval_create_from_date_string("6 months"));
  766.                                 } else {
  767.                                     $data_vencto = date_add(date_create($transaction["date_updated"]), date_interval_create_from_date_string("1 month"));
  768.                                 }
  769.                             } else if ($assinatura == "Anual") {
  770.                                 if ($total_parcelas == 1) {
  771.                                     $data_vencto = date_add(date_create($transaction["date_updated"]), date_interval_create_from_date_string("12 months"));
  772.                                 } else {
  773.                                     $data_vencto = date_add(date_create($transaction["date_updated"]), date_interval_create_from_date_string("1 month"));
  774.                                 }
  775.                             } else {
  776.                                 $data_vencto = date_add(date_create($transaction["date_updated"]), date_interval_create_from_date_string("7 days"));
  777.                             }
  778.  
  779.                             $data_vencto = date_add($data_vencto, date_interval_create_from_date_string("1 day"));
  780.                             $data_vencimento = date_format($data_vencto, "Y-m-d");
  781.  
  782.                             if ($parcelas_pagas) {
  783.                                 $parcelas_pagas++;
  784.                             } else {
  785.                                 $parcelas_pagas = $dados_coprime["parcela"];
  786.                             }
  787.  
  788.                             if ($parcelas_pagas) {
  789.                                 $valor_pago += $transaction["paid_amount"];
  790.                             } else {
  791.                                 $valor_pago = $transaction["paid_amount"];
  792.                             }
  793.  
  794.                             if ($parcelas_pagas < $total_parcelas) {
  795.                                 $parcelas_calculadas = $pagar_me->calculation()->calculateInstallmentsAmount($valor_total, 1, 12, 12);
  796.                                 $valor_total = $parcelas_calculadas[$total_parcelas]["installment_amount"];
  797.  
  798.                                 $telefone_pagarme = explode(" ", $telefone);
  799.                                 $telefone_pagarme[0] = str_replace("(", "", $telefone_pagarme[0]);
  800.                                 $telefone_pagarme[0] = str_replace(")", "", $telefone_pagarme[0]);
  801.                                 $telefone_pagarme[1] = str_replace("-", "", $telefone_pagarme[1]);
  802.                                 $cep = str_replace("-", "", $cep);
  803.  
  804.                                 $dados_cep = $pagar_me->zipcode()->getInfo($cep);
  805.  
  806.                                 $transaction = $pagar_me->transaction()->boletoTransaction($valor_total,
  807.                                     $pagar_me->customer()->create(
  808.                                             $user->display_name,
  809.                                             $email,
  810.                                             $cnpj,
  811.                                             new \PagarMe\Sdk\Customer\Address(array(
  812.                                                 "street" => $dados_cep->street,
  813.                                                 "streetNumber" => $numero,
  814.                                                 "neighborhood" => $dados_cep->neighborhood,
  815.                                                 "zipcode" => $dados_cep->zipcode,
  816.                                                 "complementary" => $complemento,
  817.                                                 "city" => $dados_cep->city,
  818.                                                 "state" => $dados_cep->state
  819.                                             )),
  820.                                             new \PagarMe\Sdk\Customer\Phone(array(
  821.                                                 "ddd" => $telefone_pagarme[0],
  822.                                                 "number" => $telefone_pagarme[1]
  823.                                             ))
  824.                                     ),
  825.                                     $postback_url,
  826.                                     array(
  827.                                         "id_usuario_coprime" => $id_usuario_coprime,
  828.                                         "id_usuario" => $id_usuario,
  829.                                         "id_contrato" => $id_contrato,
  830.                                         "cnpj" => $cnpj,
  831.                                         "email" => $email,
  832.                                         "razao_social" => $razao_social,
  833.                                         "softDescriptor" => "CoPrime",
  834.                                         "parcela" => $parcelas_pagas + 1
  835.                                     ),
  836.                                     array(
  837.                                         "boleto_expiration_date" => $data_vencimento
  838.                                     )
  839.                                 );
  840.  
  841.                                 $status = $transaction->getStatus();
  842.                                 update_field("transaction_id", $all_transaction_id . "," . $transaction->getId(), $id_contrato);
  843.                                 update_field("boleto_url", $transaction->getBoletoUrl(), $id_contrato);
  844.  
  845.                                 $email_data["name"] = $user->data->display_name;
  846.                                 $email_data["service_name"] = $servico;
  847.                                 $email_data["plan_name"] = $plano;
  848.                                 $email_data["signature_type"] = $assinatura;
  849.                                 $email_data["signature_value"] = get_signature_value($valor_total);
  850.                                 $email_data["boleto_expiration_date"] = $transaction->getBoletoExpirationDate()->format('d/m/Y');
  851.                                 $email_data["boleto_link"] = $transaction->getBoletoUrl();
  852.  
  853.                                 send_mail($user->data->user_email, $email_data, "p=94&post_type=email");
  854.                             }
  855.  
  856.                             update_field("valor_pago", (string) $valor_pago, $id_contrato);
  857.                             update_field("parcelas_pagas", (string) $parcelas_pagas, $id_contrato);
  858.                             update_field("status", (string) $status, $id_contrato);
  859.                         } else {
  860.                             update_field("status", $status, $id_contrato);
  861.                         }
  862.                     }
  863.                 }
  864.             }
  865.  
  866.             die;
  867.             break;
  868.  
  869.         default:
  870.             break;
  871.     }
  872. } else {
  873.     unset($_SESSION["error_login"]);
  874.     unset($_SESSION["send_token"]);
  875. }
  876.  
  877.  
  878. ?>
Add Comment
Please, Sign In to add comment