示例#1
0
     } else {
         $ct = 0;
         foreach ($dadosEst as $estadoAt) {
             $est = estado::find_by_id($estadoAt->estados_id);
             $dv = $ct++ > 0 ? ' / ' : '';
             $estados_atendidos .= $dv . $est->estado;
         }
     }
     $PAGINA['atuacao'] = $estados_atendidos;
     if ($dadosPg->mapa == 1) {
         $mapa['endereco'] = $dadosParc->logradouro . ',' . $cidade->cidade . '-' . $estado->uf;
     }
 }
 // **************************************************************************
 // ******** DADOS PACOTES ***************************************************
 $pacotes = creditos_pacote::find('all', array('conditions' => array('flag_ativo = ?', 1), 'order' => 'ordem asc'));
 $PACOTES = array();
 $hoje = new ActiveRecord\DateTime(date('Y-m-d'));
 foreach ($pacotes as $pacote) {
     $dadosPacote = array();
     $preco = number_format($pacote->desconto_pacote_reais, 3, ',', '.');
     $precof = explode(',', $preco);
     $preco = $precof[0] . ',' . substr($precof[1], 0, 2);
     $unitario = number_format($pacote->desconto_pacote_reais / $pacote->quant_creditos, 3, ',', '.');
     $unitariof = explode(',', $unitario);
     $unitario = $unitariof[0] . ',' . substr($unitariof[1], 0, 2);
     $dadosPacote['id'] = $pacote->id;
     $dadosPacote['titulo'] = $pacote->titulo;
     $dadosPacote['descricao'] = $pacote->descricao;
     $dadosPacote['creditos'] = $pacote->quant_creditos;
     $dadosPacote['preco'] = $preco;
 public static function compraCreditos($idp, $idpct)
 {
     /**
      * Executa uma operação de compra de créditos
      *
      * @param int $idp ID do parceiro
      * @param int $idpct ID do pacote comprado
      * @param int $tipo transação : 2 = cartão (default) | 3 = boleto | 4 = depósito
      * @param string $obj objeto da operação
      */
     // As ações de compra e bônus possuem status = 0 (espera) e não atualiza o saldo de créditos
     // até que a operação de checkout retorne o valor como pago.
     $hoje = new ActiveRecord\DateTime(date('Y-m-d H:i:s'));
     $saldo = creditos_saldo_parceiro::find_by_parceiro_id('first', $idp);
     $parceiro = parceiro::find_by_id($idp);
     if (!$parceiro) {
         return self::ERRO_USUARIO_INVALIDO;
     }
     $ddd = (int) substr($parceiro->fone, 1, 2);
     $fone = (int) str_replace('-', '', substr($parceiro->fone, 4, 10));
     $options['conditions'] = array('parceiro_id = ? AND vencimento >= ? AND flag_ativo = ?', $idp, $hoje, 1);
     $bonusUnico = creditos_bonus_unico::first($options);
     // Pega os dados de créditos, custo e bonus do pacote
     $pacote = creditos_pacote::find_by_id($idpct);
     if (!$pacote || $pacote->flag_ativo == 0) {
         return self::ERRO_PACOTE_INVALIDO;
     }
     $titulo = $pacote->titulo;
     $creditos = $pacote->quant_creditos;
     $custo = $pacote->custo_pacote_reais;
     $referencia = $idp . '-SC-' . self::contaEventos($idp, self::SC, 1);
     // utilizado para rastrear todos as fases da operação
     $bonus_geral = 0;
     $bonus_unico = 0;
     // avalia bonus geral e único
     if ($pacote->creditos_bonus > 0 && strtotime($pacote->data_limite_bonus) >= strtotime($hoje)) {
         $bonus_geral = $pacote->creditos_bonus;
     }
     $buOptions['conditions'] = array('parceiro_id = ? AND vencimento >= ? AND flag_ativo = ?', $idp, $hoje, 1);
     $bu = creditos_bonus_unico::first($buOptions);
     if ($bu) {
         $bonus_unico = $bu->bonus;
     }
     // inicializa classe do pagseguro, inserindo dados de usuário
     $paymentRequest = new PagSeguroPaymentRequest();
     $paymentRequest->addItem($idpct, $titulo, 1, $custo);
     $paymentRequest->setSender($parceiro->responsavel . ' - ' . $parceiro->nome, $parceiro->email, $ddd, $fone);
     $paymentRequest->setCurrency('BRL');
     $paymentRequest->setReference($referencia);
     //$paymentRequest->addParameter('notificationURL', self::NOTIFICATION_URL);
     $sedexCode = PagSeguroShippingType::getCodeByType('NOT_SPECIFIED');
     $paymentRequest->setShippingType($sedexCode);
     $cidade = cidade::find_by_id($parceiro->cidade_id);
     $estado = estado::find_by_id($parceiro->estado_id);
     $postalCode = str_replace('-', '', $parceiro->cep);
     $postalCode = str_replace('.', '', $postalCode);
     $logradouro = explode(', ', $parceiro->logradouro);
     $paymentRequest->setShippingAddress($postalCode, $logradouro[0], $logradouro[1], $parceiro->complemento, $parceiro->bairro, $cidade->cidade, $estado->uf, 'BRA');
     // inicia o processo de transação enviando as credenciais e
     // solicitando o código da operação
     try {
         $credentials = PagSeguroConfig::getAccountCredentials();
         // getApplicationCredentials()
         $checkoutUrl = $paymentRequest->register($credentials);
         // FORMATO:  https://pagseguro.uol.com.br/v2/checkout/payment.html?code=1C9B0FD3AEAE0FF004A39F98B751B1E5
         $codigo = explode('=', $checkoutUrl);
         // grava os dados da operação antes inicar
         $dadosPagSeguro = array();
         $dadosPagSeguro['parceiro_id'] = $idp;
         $dadosPagSeguro['parceiro_nome'] = $parceiro->responsavel . ' - ' . $parceiro->nome;
         $dadosPagSeguro['parceiro_email'] = $parceiro->email;
         $dadosPagSeguro['parceiro_fone'] = $parceiro->fone;
         $dadosPagSeguro['bonus_geral'] = $bonus_geral;
         $dadosPagSeguro['bonus_unico'] = $bonus_unico;
         $dadosPagSeguro['pacote_id'] = $idpct;
         $dadosPagSeguro['pacote_titulo'] = $titulo;
         $dadosPagSeguro['pacote_creditos'] = $creditos;
         $dadosPagSeguro['flag_pacote_creditado'] = 0;
         $dadosPagSeguro['data_cadastro'] = $hoje;
         $dadosPagSeguro['data_atualizacao'] = $hoje;
         $dadosPagSeguro['codigo_link'] = $codigo[1];
         $dadosPagSeguro['referencia'] = $referencia;
         $dadosPagSeguro['tipo_transacao'] = 1;
         // 1 ==  compra | 11 == assinatura
         $dadosPagSeguro['status_transacao'] = 0;
         // inicia como 0
         $dadosPagSeguro['fases'] = 0;
         // registra todos os status retornados pelo pagseguro. Inicia como 0
         $dadosPagSeguro['valor_reais'] = $custo;
         $pagseguro = operacoes_pagseguro::create($dadosPagSeguro);
         $pagseguro->save();
         $observação = 'Solicitação de compra PagSeguro ' . $referencia . '(R$' . number_format($custo, 2, ',', '.') . ')';
         // registra o crédito adquirido como status EM ESPERA
         self::registraEvento($idp, self::SC, $saldo->saldo, $referencia, $crdt, $custo, 1, $observação);
         // descomentar esta linha na versão final
         // return $codigo[1];
         return self::ERRO_OPERACAO_TESTE_CANCELADA;
     } catch (PagSeguroServiceException $e) {
         // implementar retorno de erro personalizado
         die($e->getMessage());
     }
 }
示例#3
0
function retornaCreditosTeste($idp, $idpacote)
{
    $crdt = creditos_pacote::find_by_id($idpacote);
    return operacoes_de_credito::insereCreditos($idp, $crdt->quant_creditos, 'Teste de Insersão/compra de créditos');
}