public function confirm()
 {
     if ($this->session->data['payment_method']['code'] == 'pagar_me_checkout') {
         $this->load->model('checkout/order');
         $this->load->model('payment/pagar_me_checkout');
         Pagarme::setApiKey($this->config->get('pagar_me_checkout_api'));
         $transaction = PagarMe_Transaction::findById($this->request->post['token']);
         $amount = $transaction->amount;
         try {
             $transaction->capture($amount);
         } catch (Exception $e) {
             $this->log->write($e->getMessage());
         }
         $status = $transaction->status;
         if ($transaction->status == 'authorized' || $transaction->status == 'paid') {
             $status = 'paid';
             $this->model_payment_pagar_me_checkout->addTransactionId($this->session->data['order_id'], $transaction->id, NULL);
         } else {
             $this->model_payment_pagar_me_checkout->addTransactionId($this->session->data['order_id'], $transaction->id, $transaction->boleto_url);
             $this->session->data['checkout_pagar_me_boleto_url'] = $transaction->boleto_url;
         }
         $this->model_checkout_order->addOrderHistory($this->session->data['order_id'], $this->config->get('pagar_me_checkout_order_' . $status), '', true);
         $this->response->redirect($this->url->link('checkout/success', '', 'SSL'));
     }
 }
 public function saveAction()
 {
     $post_data = $this->getRequest()->getPost();
     if ($post_data) {
         $api_mode = Mage::getStoreConfig('payment/pagarme_settings/mode');
         $api_key = Mage::getStoreConfig('payment/pagarme_settings/apikey_' . $api_mode);
         Pagarme::setApiKey($api_key);
         $post_data['trial_days'] = '0';
         // Always OFF.
         try {
             $plan = new PagarMe_Plan(array_merge($post_data, array('amount' => intval(floatval($post_data['amount']) * 100))));
             $result = $plan->create();
             $post_data['remote_id'] = $result['id'];
             $post_data['payment_methods'] = implode(',', $post_data['payment_methods']);
             if (empty($post_data['charges'])) {
                 $post_data['charges'] = new Zend_Db_Expr('NULL');
             }
             $model = Mage::getModel("pagarme/plans")->addData($post_data)->setId($this->getRequest()->getParam("id"))->save();
             Mage::getSingleton("adminhtml/session")->addSuccess(Mage::helper("adminhtml")->__("Plans was successfully saved"));
             Mage::getSingleton("adminhtml/session")->setPlansData(false);
             if ($this->getRequest()->getParam("back")) {
                 $this->_redirect("*/*/edit", array("id" => $model->getId()));
                 return;
             }
             $this->_redirect("*/*/");
             return;
         } catch (Exception $e) {
             Mage::getSingleton("adminhtml/session")->addError($e->getMessage());
             Mage::getSingleton("adminhtml/session")->setPlansData($this->getRequest()->getPost());
             $this->_redirect("*/*/edit", array("id" => $this->getRequest()->getParam("id")));
             return;
         }
     }
     $this->_redirect("*/*/");
 }
 public function payment()
 {
     $this->load->model('checkout/order');
     $this->load->model('account/customer');
     $order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);
     $customer = $this->model_account_customer->getCustomer($order_info['customer_id']);
     $document_number = '';
     $numero = 'Sem Número';
     $complemento = '';
     $customer_name = trim($order_info['payment_firstname']) . ' ' . trim($order_info['payment_lastname']);
     /* Pega os custom fields de CPF/CNPJ, número e complemento */
     $this->load->model('account/custom_field');
     $custom_fields = $this->model_account_custom_field->getCustomFields($customer['customer_group_id']);
     foreach ($custom_fields as $custom_field) {
         if ($custom_field['location'] == 'account') {
             if ((strpos(strtolower($custom_field['name']), 'cpf') || strpos(strtolower($custom_field['name']), 'cnpj')) !== false) {
                 $document_number = $order_info['custom_field'][$custom_field['custom_field_id']];
             }
         } elseif ($custom_field['location'] == 'address') {
             if (strpos(strtolower($custom_field['name']), 'numero') !== false || strpos(strtolower($custom_field['name']), 'número') !== false) {
                 $numero = $order_info['payment_custom_field'][$custom_field['custom_field_id']];
             } elseif (strpos(strtolower($custom_field['name']), 'complemento')) {
                 $complemento = $order_info['payment_custom_field'][$custom_field['custom_field_id']];
             }
         }
     }
     Pagarme::setApiKey($this->config->get('pagar_me_boleto_api'));
     $transaction = new PagarMe_Transaction(array('amount' => $this->request->post['amount'], 'payment_method' => 'boleto', 'boleto_expiration_date' => date('Y-m-d', strtotime('+' . $this->config->get('pagar_me_boleto_dias_vencimento') + 1 . ' days')), 'postback_url' => HTTP_SERVER . 'index.php?route=payment/pagar_me_boleto/callback', "customer" => array("name" => $customer_name, "document_number" => $document_number, "email" => $order_info['email'], "address" => array("street" => $order_info['payment_address_1'], "neighborhood" => $order_info['payment_address_2'], "zipcode" => $this->removeSeparadores($order_info['payment_postcode']), "street_number" => $numero, "complementary" => $complemento), "phone" => array("ddd" => substr(preg_replace('/[^0-9]/', '', $order_info['telephone']), 0, 2), "number" => substr(preg_replace('/[^0-9]/', '', $order_info['telephone']), 2)))));
     try {
         $transaction->charge();
     } catch (Exception $e) {
         $this->log->write("Erro Pagar.Me boleto: " . $e->getMessage());
         die;
     }
     $status = $transaction->status;
     // status da transação
     $boleto_url = $transaction->boleto_url;
     // URL do boleto bancário
     $id_transacao = $transaction->id;
     $json = array();
     if ($status == 'waiting_payment') {
         $this->load->model('payment/pagar_me_boleto');
         $this->model_payment_pagar_me_boleto->addTransactionId($this->session->data['order_id'], $id_transacao, $boleto_url);
         $json['transaction'] = $transaction->id;
         $json['success'] = true;
         $json['boleto_url'] = $boleto_url;
     } else {
         $json['success'] = false;
     }
     $this->response->setOutput(json_encode($json));
 }
 public function payment()
 {
     $this->load->model('checkout/order');
     $this->load->model('account/customer');
     $order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);
     $customer = $this->model_account_customer->getCustomer($order_info['customer_id']);
     if ($this->config->get('dados_status')) {
         if ($customer['cpf'] != '') {
             $document_number = $this->removeSeparadores($customer['cpf']);
             $customer_name = $order_info['payment_firstname'] . " " . $order_info['payment_lastname'];
         } else {
             $document_number = $this->removeSeparadores($customer['cnpj']);
             $customer_name = $customer['razao_social'];
         }
         $numero = $order_info['payment_numero'];
         $complemento = $order_info['payment_company'];
     } else {
         $document_number = $this->removeSeparadores($order_info['payment_tax_id']);
         $customer_name = $order_info['payment_firstname'] . " " . $order_info['payment_lastname'];
         $numero = 'Sem número';
         $complemento = '';
     }
     Pagarme::setApiKey($this->config->get('pagar_me_cartao_api'));
     $transaction = new PagarMe_Transaction(array('amount' => $this->request->post['amount'], 'card_hash' => $this->request->post['card_hash'], 'installments' => $this->request->post['installments'], 'postback_url' => HTTP_SERVER . 'index.php?route=payment/pagar_me_cartao/callback', "customer" => array("name" => $customer_name, "document_number" => $document_number, "email" => $order_info['email'], "address" => array("street" => $order_info['payment_address_1'], "neighborhood" => $order_info['payment_address_2'], "zipcode" => $order_info['payment_postcode'], "street_number" => $numero, "complementary" => $complemento), "phone" => array("ddd" => substr(preg_replace('/[^0-9]/', '', $order_info['telephone']), 0, 2), "number" => substr(preg_replace('/[^0-9]/', '', $order_info['telephone']), 2)))));
     $transaction->charge();
     $status = $transaction->status;
     // status da transação
     $id_transacao = $transaction->id;
     $json = array();
     $this->log->write($status);
     $this->load->model('payment/pagar_me_cartao');
     if ($status == 'paid' || $status == 'processing') {
         $this->model_payment_pagar_me_cartao->addTransactionId($this->session->data['order_id'], $id_transacao, $this->request->post['installments'], $this->request->post['bandeira']);
         $json['success'] = true;
     } else {
         $this->model_payment_pagar_me_cartao->addTransactionId($this->session->data['order_id'], $id_transacao);
         $json['success'] = false;
     }
     $this->response->setOutput(json_encode($json));
 }
 public function iniciaPagamentoPagarme()
 {
     $pagarme = $this->obterCredenciaisPagarme();
     Pagarme::setApiKey($pagarme['pagarme_key_api']);
     $transaction = new PagarMe_Transaction(array("amount" => $this->valor, "card_hash" => $this->card_hash, "payment_method" => $this->formaPagamento, 'postback_url' => $this->notificationURLPagarMe, "installments" => $this->parcelas, "email" => $this->emailUsuario, 'metadata' => array('id_pedido' => $this->transacaoID), "customer" => array("name" => $this->nomeUsuario, "email" => $this->emailUsuario)));
     try {
         $transaction->charge();
         $retorno['status'] = true;
         $retorno['conteudo'] = $transaction;
         return $retorno;
     } catch (PagarMe_Exception $e) {
         $msg = str_replace('consulte nossa documentação em https://pagar.me/docs.', 'consulte nosso FAQ.', $e->getMessage());
         $retorno['status'] = false;
         $retorno['conteudo'] = '<br> Erro : ' . $msg;
         return $retorno;
     }
 }
 protected function _processPlans($payment, $plans)
 {
     $allow_multiples = Mage::getStoreConfigFlag('payment/pagarme_subscriptions/allow_multiples');
     if (count($plans) > 1 && !$allow_multiples) {
         Mage::throwException(Mage::helper('pagarme')->__('Subscription of multiple plans are not allowed!'));
     }
     $api_mode = Mage::getStoreConfig('payment/pagarme_settings/mode');
     $api_key = Mage::getStoreConfig('payment/pagarme_settings/apikey_' . $api_mode);
     Pagarme::setApiKey($api_key);
     $customer_email = $payment->getOrder()->getCustomerEmail();
     $result = null;
     foreach ($plans as $id => $qty) {
         $_plan = Mage::getModel('pagarme/plans')->load($id);
         $subscription = new PagarMe_Subscription(array('plan' => PagarMe_Plan::findById($_plan->getRemoteId()), 'payment_method' => 'boleto', 'customer' => array('email' => $customer_email), 'postback_url' => Mage::getUrl('pagarme/transaction_subscription/postback', array('id' => $payment->getOrder()->getId()))));
         $subscription->create();
         $result = $subscription->current_transaction;
         $transaction = Mage::getModel('pagarme/subscriptions')->setPlanId($_plan->getId())->setRemotePlanId($_plan->getRemoteId())->setRemoteId($subscription->getId())->setTransactionId($result->getId())->setOrderId($payment->getOrder()->getId())->setPaymentMethod($result->getPaymentMethod())->setAmount(intval($result->getAmount()) / 100)->setCost($result->getCost())->setRemoteIP($result->getIp())->setBoletoUrl($result->getBoletoUrl())->setBoletoBarcode($result->getBoletoBarcode())->setBoletoExpirationDate($result->getBoletoExpirationDate())->setStatus($result->getStatus())->setCreatedAt($result->getDateCreated())->setUpdatedAt($result->getDateUpdated())->save();
     }
     // pagar.me info
     $payment->setPagarmeSubscriptionId($subscription->getId())->setPagarmeTransactionId($result->getId())->setPagarmeBoletoUrl($result->getBoletoUrl())->setPagarmeBoletoBarcode($result->getBoletoBarcode())->setPagarmeBoletoExpirationDate($result->getBoletoExpirationDate());
     $payment->setTransactionAdditionalInfo(Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS, array('status' => $result->getStatus()));
 }
Exemple #7
0
            $system->vendas->atualizar($venda['id'], array('data_expiracao' => $dataExpiracao));
            $system->pagarme->atualizar(array('status' => 1, 'ultima_atualizacao' => date('Y-m-d H:i:s'), 'code' => $fields['code']));
            //Professor
            foreach ($cursos as $curso) {
                $system->email_model->vendaCursoProfessor($curso['id'], $venda['numero']);
            }
            //Administrativo
            $system->email_model->alteradoStatusVendaAdministrativo($venda['numero']);
            //Aluno
            $system->email_model->vendaAprovadaAluno($venda['aluno_id'], $venda['numero'], date('d/m/Y', strtotime($dataExpiracao)));
        }
    }
} else {
    // Primeira ocorrencia de assinatua. somente quando o cliente compra que é submetido para um form.php  e direciona para cá.
    $pagarme = $system->configuracoesgerais->getPagarme();
    Pagarme::setApiKey($pagarme['pagarme_key_api']);
    $id_transacao_assinatura = $_POST['id_assinatura_pagarme'];
    //$system->session->getItem('id_assinatura_pagarme');
    //echo "id transacao = ".$id_transacao_assinatura;
    $transaction = $system->pagarme_model->formataValoresAssinatura($id_transacao_assinatura, 'subscription');
    if (!empty($transaction['id'])) {
        $fields['code'] = $transaction['id'];
        $fields['code_assinatura'] = $transaction['id_asinatura'];
        $fields['venda_id'] = $transaction['venda_id'];
        $fields['status'] = $transaction['status'];
        $fields['data'] = substr($transaction['data'], 0, 10) . ' 00:00';
        $fields['ultima_atualizacao'] = substr($transaction['ultima_atualizacao'], 0, 10);
        $fields['total'] = $transaction['total'];
        $fields['total_liquido'] = $transaction['total_liquido'];
        $fields['taxas'] = $transaction['transacao_custo'];
        //$fields['custo']              = $transaction['transacao_custo'];
<?php   
require("Pagarme.php");
Pagarme::setApiKey("ak_test_VI0RjtmUyIqfXUUYdLHGDOCEUHoUtk");

$transaction = PagarMe_Transaction::findById("177784");

$TRANSACAO = formataValoresTransacao($transaction);



echo utf8_decode("valor da transação : ".$TRANSACAO['total']);
echo "<br>valor de custo : ".$TRANSACAO['transacao_custo'];
echo '<br><br><br><br><br>';
print_r($TRANSACAO);

//echo '<br><br><br><br><br>';       
//print_r($transaction);


function formataValoresTransacao($transaction){

    $valor_transacao       = substr($transaction->amount, 0, -2) . '.' . substr($transaction->amount, -2);
    $custo 			       = number_format($transaction->cost,0, '.', '');    
    $valor_custo	       = substr($custo, 0, -2) . '.' . substr($custo, -2);    
    $TRANSACAO['parcelas'] = $transaction->installments;

    if($TRANSACAO['parcelas'] >= 2 && $TRANSACAO['parcelas'] <= 6) $TRANSACAO['taxas'] = (1.49 + 2.60);
    else if($TRANSACAO['parcelas'] >= 7 && $TRANSACAO['parcelas'] <= 12) $TRANSACAO['taxas'] = (1.49 + 2.9);
    else $TRANSACAO['taxas'] = (1.49 + 2.5);

    $TRANSACAO['total'] = number_format($valor_transacao, 2, '.', '');
 public function payment()
 {
     $this->load->model('checkout/order');
     $this->load->model('account/customer');
     $order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);
     $customer = $this->model_account_customer->getCustomer($order_info['customer_id']);
     $document_number = '';
     $numero = 'Sem Número';
     $complemento = '';
     $customer_name = trim($order_info['payment_firstname']) . ' ' . trim($order_info['payment_lastname']);
     /* Pega os custom fields de CPF/CNPJ, número e complemento */
     $this->load->model('account/custom_field');
     $custom_fields = $this->model_account_custom_field->getCustomFields($customer['customer_group_id']);
     foreach ($custom_fields as $custom_field) {
         if ($custom_field['location'] == 'account') {
             if ((strpos(strtolower($custom_field['name']), 'cpf') || strpos(strtolower($custom_field['name']), 'cnpj')) !== false) {
                 $document_number = $order_info['custom_field'][$custom_field['custom_field_id']];
             }
         } elseif ($custom_field['location'] == 'address') {
             if (strpos(strtolower($custom_field['name']), 'numero') !== false || strpos(strtolower($custom_field['name']), 'número') !== false) {
                 $numero = $order_info['payment_custom_field'][$custom_field['custom_field_id']];
             } elseif (strpos(strtolower($custom_field['name']), 'complemento')) {
                 $complemento = $order_info['payment_custom_field'][$custom_field['custom_field_id']];
             }
         }
     }
     Pagarme::setApiKey($this->config->get('pagar_me_cartao_api'));
     $transaction = new PagarMe_Transaction(array('amount' => $this->request->post['amount'], 'card_hash' => $this->request->post['card_hash'], 'installments' => $this->request->post['installments'], 'postback_url' => HTTP_SERVER . 'index.php?route=payment/pagar_me_cartao/callback', "customer" => array("name" => $customer_name, "document_number" => $document_number, "email" => $order_info['email'], "address" => array("street" => $order_info['payment_address_1'], "neighborhood" => $order_info['payment_address_2'], "zipcode" => $this->removeSeparadores($order_info['payment_postcode']), "street_number" => $numero, "complementary" => $complemento), "phone" => array("ddd" => substr(preg_replace('/[^0-9]/', '', $order_info['telephone']), 0, 2), "number" => substr(preg_replace('/[^0-9]/', '', $order_info['telephone']), 2)))));
     $transaction->charge();
     $status = $transaction->status;
     // status da transação
     $id_transacao = $transaction->id;
     $json = array();
     $this->log->write($status);
     $this->load->model('payment/pagar_me_cartao');
     if ($status == 'paid' || $status == 'processing') {
         $this->model_payment_pagar_me_cartao->addTransactionId($this->session->data['order_id'], $id_transacao, $this->request->post['installments'], $this->request->post['bandeira']);
         $json['success'] = true;
     } else {
         $this->model_payment_pagar_me_cartao->addTransactionId($this->session->data['order_id'], $id_transacao);
         $json['success'] = false;
     }
     $this->response->setOutput(json_encode($json));
 }
 public function formataValoresAssinatura($id, $tipo)
 {
     $dados = $this->contaPagarme();
     Pagarme::setApiKey($dados['key_api']);
     if ($tipo == 'transaction') {
         $transaction = PagarMe_Transaction::findById($id);
         $subscription = PagarMe_Subscription::findById($transaction->subscription_id);
     } else {
         $subscription = PagarMe_Subscription::findById($id);
     }
     $valor_transacao = substr($subscription->current_transaction->amount, 0, -2) . '.' . substr($subscription->current_transaction->amount, -2);
     if ($subscription->current_transaction->cost == 0) {
         $custo = "380";
     } else {
         $custo = number_format($subscription->current_transaction->cost, 0, '.', '');
     }
     $valor_custo = substr($custo, 0, -2) . '.' . substr($custo, -2);
     $ASSINATURA['parcelas'] = $subscription->current_transaction->installments;
     //BOLETO
     $ASSINATURA['boleto_url'] = $subscription->current_transaction->boleto_url;
     $ASSINATURA['boleto_barcode'] = $subscription->current_transaction->boleto_barcode;
     $ASSINATURA['boleto_dataExpiracao'] = substr($subscription->current_transaction->expiration_date, 0, 10);
     if (empty($ASSINATURA['boleto_url'])) {
         if ($ASSINATURA['parcelas'] >= 2 && $ASSINATURA['parcelas'] <= 6) {
             $ASSINATURA['taxas'] = 1.49 + 2.6;
         } else {
             if ($ASSINATURA['parcelas'] >= 7 && $ASSINATURA['parcelas'] <= 12) {
                 $ASSINATURA['taxas'] = 1.49 + 2.9;
             } else {
                 $ASSINATURA['taxas'] = 1.49 + 2.5;
             }
         }
         //cálculo para ver a taxa
         $ASSINATURA['transacao_taxa_05'] = 0.5 * 100 / substr($subscription->current_transaction->amount, 0, -2);
         $ASSINATURA['transacao_taxa_05'] = number_format($ASSINATURA['transacao_taxa_05'], 2, '.', '');
         $ASSINATURA['taxas'] = $ASSINATURA['taxas'] + $ASSINATURA['transacao_taxa_05'];
     }
     $ASSINATURA['total'] = number_format($valor_transacao, 2, '.', '');
     $ASSINATURA['transacao_custo'] = number_format($valor_custo, 2, '.', '');
     $ASSINATURA['total_liquido'] = number_format($ASSINATURA['total'] - $ASSINATURA['transacao_custo'], 2, '.', '');
     $ASSINATURA['venda_id'] = $subscription->metadata->id_pedido;
     $ASSINATURA['id'] = $subscription->current_transaction->id;
     $ASSINATURA['id_asinatura'] = $subscription->id;
     $ASSINATURA['data'] = $subscription->current_transaction->date_created;
     $ASSINATURA['ultima_atualizacao'] = $subscription->current_transaction->date_updated;
     $ASSINATURA['status'] = $subscription->status;
     //DADOS ASSINATURA
     $ASSINATURA['data_inicio_cobranca'] = substr($subscription->current_period_start, 0, 10) . ' 00:00';
     $ASSINATURA['data_fim_cobranca'] = substr($subscription->current_period_end, 0, 10) . ' 23:59';
     //DADOS CARTÃO
     $ASSINATURA['cartao_fingerprint'] = $subscription->card->fingerprint;
     $ASSINATURA['cartao_id'] = $subscription->card->id;
     $ASSINATURA['cartao_nome'] = $subscription->card->holder_name;
     //DADOS PLANO
     $ASSINATURA['plano_id'] = $subscription->plan->id;
     $ASSINATURA['plano_valor'] = $subscription->plan->amount;
     $ASSINATURA['plano_dias'] = $subscription->plan->days;
     $ASSINATURA['plano_nome'] = $subscription->plan->name;
     $ASSINATURA['plano_dias_tiral'] = $subscription->plan->trial_days;
     $ASSINATURA['plano_data_criacao'] = $subscription->plan->date_created;
     //DADOS CLIENTE
     $ASSINATURA['cliente_id'] = $subscription->customer->id;
     $ASSINATURA['cliente_nome'] = $subscription->customer->name;
     $ASSINATURA['cliente_cpf'] = $subscription->customer->document_number;
     $ASSINATURA['cliente_email'] = $subscription->customer->email;
     $ASSINATURA['cliente_nome'] = $subscription->customer->name;
     return $ASSINATURA;
 }
Exemple #11
0
 protected function _processPlans($payment, $plans)
 {
     $allow_multiples = Mage::getStoreConfigFlag('payment/pagarme_subscriptions/allow_multiples');
     if (count($plans) > 1 && !$allow_multiples) {
         Mage::throwException(Mage::helper('pagarme')->__('Subscription of multiple plans are not allowed!'));
     }
     $api_mode = Mage::getStoreConfig('payment/pagarme_settings/mode');
     $api_key = Mage::getStoreConfig('payment/pagarme_settings/apikey_' . $api_mode);
     Pagarme::setApiKey($api_key);
     $card_hash = $payment->getPagarmeCardHash() != null ? $payment->getPagarmeCardHash() : $payment->getPagarmeCheckoutHash();
     $customer_email = $payment->getOrder()->getCustomerEmail();
     $result = null;
     foreach ($plans as $id => $qty) {
         $_plan = Mage::getModel('pagarme/plans')->load($id);
         $subscription = new PagarMe_Subscription(array('plan' => PagarMe_Plan::findById($_plan->getRemoteId()), 'payment_method' => 'credit_card', 'card_hash' => $card_hash, 'customer' => array('email' => $customer_email), 'postback_url' => Mage::getUrl('pagarme/transaction_subscription/postback', array('id' => $payment->getOrder()->getId()))));
         $subscription->create();
         $result = $subscription->current_transaction;
         $transaction = Mage::getModel('pagarme/subscriptions')->setRemoteId($result->getId())->setOrderId($payment->getOrder()->getId())->setPaymentMethod($result->getPaymentMethod())->setAmount(intval($result->getAmount()) / 100)->setInstallments($result->getInstallments())->setCost($result->getCost())->setRemoteIP($result->getIp())->setAuthorizationCode($result->getAuthorizationCode())->setTid($result->getTid())->setStatus($result->getStatus())->setCreatedAt($result->getDateCreated())->setUpdatedAt($result->getDateUpdated())->save();
     }
     $payment->setCcOwner($result->getCardHolderName())->setCcLast4($result->getCardLastDigits())->setCcType(Mage::getSingleton('pagarme/source_cctype')->getTypeByBrand($result->getCardBrand()))->setPagarmeTransactionId($result->getId())->setPagarmeAntifraudScore($result->getAntifraudScore())->setTransactionId($result->getId())->setIsTransactionClosed(0);
     $payment->setTransactionAdditionalInfo(Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS, array('status' => $result->getStatus()));
 }
 public function store(Request $request)
 {
     //Pagamento/Efetivar
     $inputArray = $request->all();
     $checkboxes = Session::get('checkbox');
     if (!$checkboxes) {
         return Redirect::to('Pagamento\\Calcular')->withErrors(['Nenhuma assinatura foi selecionada']);
     }
     $valorRealGet = 0.0;
     $idUsuario = Auth::id();
     $asCom = DB::table('assinaturas')->join('assinaturasFiliais', 'assinaturasFiliais.idAssinatura', '=', 'assinaturas.id')->join('filiais', 'assinaturasFiliais.idFilial', '=', 'filiais.id')->join('empresas', 'empresas.id', '=', 'filiais.idEmpresa')->join('planos', 'assinaturas.idPlano', '=', 'planos.id')->join('comerciantes', 'assinaturas.idComerciante', '=', 'comerciantes.id')->select('planos.valor', 'assinaturas.id as idAssinatura', 'empresas.nomeFantasia', 'comerciantes.idUsuario as idUsuario', 'empresas.id as idEmpresa')->whereIn('assinaturas.id', array_values($checkboxes))->get();
     foreach ($asCom as $single) {
         $valorRealGet = $valorRealGet + $single->valor;
     }
     $valorRealGet = Transacao::getValorCentavos($valorRealGet);
     $inputArray['valorReal'] = $valorRealGet;
     $mensagensErro = array('min' => 'Valor a ser pago invalido.', 'numeric' => 'Valor a ser pago invalido.', 'valor_pagamento_positivo_minimo_valido' => 'Valor a ser pago não pode ser inferior a 1');
     Validator::extend('valor_pagamento_positivo_minimo_valido', function ($attribute, $value, $parameters) {
         if (str_contains($value, 'R$ ')) {
             $floated = floatval(str_replace(',', '.', ltrim($value, "R\$ ")));
             if ($floated < 1) {
                 return false;
             } else {
                 return true;
             }
         } else {
             return false;
         }
     });
     $validator = Validator::make($inputArray, ['valorPagamento' => 'required|min:1|valor_pagamento_positivo_minimo_valido', 'payment' => 'required', 'valorReal' => 'required|min:1'], $mensagensErro);
     if ($validator->fails()) {
         return Redirect::to('Pagamento/Calcular')->withErrors($validator);
     }
     Pagarme::setApiKey("ak_test_1jVGAUzxWNanzfTiW6yGX0cbA8Ywq7");
     $idEmpresa = $asCom[0]->idEmpresa;
     $transacao = null;
     $transacao = Transacao::create(['idUsuario' => $idUsuario, 'idTipoTransacao' => Transacao::getTipoTransacao($inputArray['payment']), 'idEstadoTransacao' => '1', 'valorBruto' => $valorRealGet, 'cardHash' => Transacao::getSkipCardHash($inputArray), 'dataInicio' => date('y-m-d'), 'dataResposta' => date('y-m-d')]);
     HistoricoMudancaEstado::registrarHistoricoTransacao($transacao->id, EstadoTransacao::Criado);
     $dataValidade = new DateTime(date('y-m-d'));
     // $dataValidade = $dataValidade->add(DateInterval::createFromDateString('1 month')); //WRONG
     $assinaturasCliente = array_values($checkboxes);
     $assinaturasConfereData = null;
     foreach ($assinaturasCliente as $single) {
         $candidato = DB::table('pagamentos')->where('idAssinatura', $single)->orderBy('validade', 'asc')->first();
         if ($candidato) {
             //existe pagamento
             if ($candidato->isPaid == 1) {
                 //foi pago?, entao pegar a data de vencimento e add1mes
                 $dataAntiga = new DateTime($candidato->validade);
                 $dataValidade = new DateTime(date('y-m-d'));
                 $checkDate = $dataValidade->diff($dataAntiga);
                 $dataValidade = $dataValidade->add(DateInterval::createFromDateString('1 month'));
                 if (!$checkDate->invert) {
                     $dataValidade->setDate($dataValidade->format('y'), $dataValidade->format('m'), $dataAntiga->format('d'));
                     //set o mesmo dia do vencimento
                 } else {
                 }
                 $assinaturasConfereData[$single] = $dataValidade;
             }
         } else {
             //nunca existiu pagamento, criar o primeiro vencimento
             $dataValidade = new DateTime(date('y-m-d'));
             $assinaturasConfereData[$single] = $dataValidade->add(DateInterval::createFromDateString('1 month'));
         }
     }
     switch ($transacao->idTipoTransacao) {
         //TODO: fazer a pagina mostrando pagamento efetuado etc
         default:
         case 1:
             //pagamentocartaosimples
             $transactionPagarMe = new PagarMe_Transaction(array('amount' => $transacao->valorBruto, 'card_hash' => $transacao->cardHash));
             $transactionPagarMe->charge();
             if ($transactionPagarMe->status == 'paid') {
                 foreach ($asCom as $single) {
                     $pagamento = Pagamento::create(['isPaid' => 1, 'idUsuario' => $idUsuario, 'valor' => Transacao::converteCentavos($single->valor), 'dataPagamento' => date('y-m-d'), 'dataBaixa' => date('y-m-d'), 'idAssinatura' => $single->idAssinatura, 'idTransacao' => $transacao->id, 'validade' => $assinaturasConfereData[$single->idAssinatura]]);
                 }
                 $transacao->idEstadoTransacao = EstadoTransacao::Pago;
                 $transacao->save();
                 HistoricoMudancaEstado::registrarHistoricoTransacao($transacao->id, EstadoTransacao::Pago);
                 return "thank you " . $transactionPagarMe->status;
             } else {
                 HistoricoMudancaEstado::registrarHistoricoTransacao($transacao->id, EstadoTransacao::Recusado);
                 $transacao->idEstadoTransacao = EstadoTransacao::Recusado;
                 $transacao->save();
                 return "sorry " . $transactionPagarMe->status;
             }
             //TODO: fazer pagina informando o resultado do pagamento
         //TODO: fazer pagina informando o resultado do pagamento
         case 2:
             ///assinatura
             $transactionPagarMe = new PagarMe_Transaction(array('amount' => $transacao->valorBruto, 'card_hash' => $transacao->cardHash));
             $transactionPagarMe->charge();
             $card = new PagarMe_Card(array('card_hash' => $transacao->cardHash));
             $card->create();
             $card_id = $card->id;
             //$transacao->save();
             //TODO: criar CRONJOB para recobrar
             if ($transactionPagarMe->status == 'paid') {
                 foreach ($asCom as $single) {
                     $pagamento = Pagamento::create(['isPaid' => 1, 'idUsuario' => $idUsuario, 'valor' => Transacao::converteCentavos($single->valor), 'dataPagamento' => date('y-m-d'), 'dataBaixa' => date('y-m-d'), 'idAssinatura' => $single->idAssinatura, 'idTransacao' => $transacao->id, 'validade' => $assinaturasConfereData[$single->idAssinatura]]);
                 }
                 $transacao->idEstadoTransacao = EstadoTransacao::Pago;
                 $transacao->cardHashMensal = $card_id;
                 $transacao->save();
                 HistoricoMudancaEstado::registrarHistoricoTransacao($transacao->id, EstadoTransacao::Pago);
                 return "thank you " . $transactionPagarMe->status;
             } else {
                 HistoricoMudancaEstado::registrarHistoricoTransacao($transacao->id, EstadoTransacao::Recusado);
                 return "sorry " . $transactionPagarMe->status;
             }
             //return $status = $transactionPagarMe->status . ' ' . $card_id;
         //return $status = $transactionPagarMe->status . ' ' . $card_id;
         case 3:
             //boleto
             $transaction = new PagarMe_Transaction(array('amount' => $transacao->valorBruto, 'payment_method' => "boleto"));
             foreach ($asCom as $single) {
                 $pagamento = Pagamento::create(['isPaid' => 0, 'idUsuario' => $idUsuario, 'valor' => Transacao::converteCentavos($single->valor), 'dataPagamento' => date('y-m-d'), 'dataBaixa' => date('y-m-d'), 'idAssinatura' => $single->idAssinatura, 'idTransacao' => $transacao->id, 'validade' => $assinaturasConfereData[$single->idAssinatura]]);
             }
             $transaction->charge();
             $boleto_url = $transaction->boleto_url;
             // URL do boleto bancário
             $boleto_barcode = $transaction->boleto_barcode;
             // código de barras do boleto bancário
             $transacao->idEstadoTransacao = EstadoTransacao::PagamentoPendente;
             $transacao->numeroBoleto = $boleto_barcode;
             $transacao->save();
             HistoricoMudancaEstado::registrarHistoricoTransacao($transacao->id, EstadoTransacao::PagamentoPendente);
             //TODO: provavelmente gerar a pagina do boleto? no ambiente de teste só aparece
             return $boleto_barcode . ' ' . $boleto_url;
     }
 }
 public function efetivar(Request $request)
 {
     Pagarme::setApiKey("ak_test_UvGkVG7SUAeiwCnzYarSKdxc3syszb");
     //$request = $request->all();
     $numero_assinaturas = $request['numeroAssinaturas'];
     $card_hash = $request['card_hash'];
     $valor = 2490 * $numero_assinaturas;
     $usuario = Auth::user();
     //pagamento
     //        $transactionPagarMe = new PagarMe_Transaction(array(
     //            'amount' => $valor,
     //            'card_hash' => $card_hash,
     //            "metadata" => array(
     //                "id" => $usuario->id,
     //                "name" => $usuario->name,
     //                "email" => $usuario->email
     //            )
     //        ));
     //
     //        $transactionPagarMe->charge();
     //        $status = $transactionPagarMe->status; // status da transação
     //        dd($status);
     //assinatura para o plano id=27440
     $subscription = new PagarMe_Subscription(array('plan' => PagarMe_Plan::findById("27440"), 'card_hash' => $card_hash, "metadata" => array("id" => $usuario->id, "name" => $usuario->name, "email" => $usuario->email), 'customer' => array('email' => $usuario->email)));
     $subscription->create();
     if ($subscription->status == "paid") {
         return View('Comerciante/StatusPagamento')->with('status', $subscription->status);
     } else {
         return View('Comerciante/StatusPagamento')->with('status', 'erro');
     }
 }