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())); }
$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; }
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'); } }