Ir para conteúdo

Pitag346

Members
  • Total de itens

    169
  • Registro em

  • Última visita

Reputação

0 Comum

3 Seguidores

Sobre Pitag346

Últimos Visitantes

4978 visualizações
  1. Pitag346

    Sub Consulta SQL com PHP

    Conseguiria me ajudar amigo? não consegui adaptar o mesmo no meu código. Segue um exemplo do que quero executar: nota que a tabela acima com o nome RESULTA DA CONSULTA é uma tabela em HTML onde exibo os resultados em um LOOP... (Por conta do loop não estou conseguindo fazer essa lista eu acredito).
  2. Pitag346

    E-mail autenticado

    Utilize autenticação SMTP, e uma outra lib de envio de e-mails, pesquise pela lib do PHPMailer
  3. Pitag346

    Sub Consulta SQL com PHP

    Boa noite pessoal... Eu não estou conseguindo fazer uma sub consulta... Se alguém puder clarear minhas ideias isso ser de muita ajuda. Fiz varias pesquisas e ainda não entendi como posso fazer o seguinte: Tenho 3 tabelas no banco de dados a tabela: Users, Ingress, Vendas. A tabela ingress seria a tabela onde armazeno meus produtos, contendo o preço do produto obviamente. E a tabela vendas eu armazeno o ID do produto vendido e o ID do user que vendeu... Quero fazer uma sub consulta pra exibir dentro de um loop o valor total de produtos vendidos por cada usuario, porem eu não faço ideia como fazer, tentei a seguinte forma: $sq = " SELECT P.id, (SELECT COUNT(C.lote_id) FROM ingress C WHERE ticket_promote_id = P.id ) FROM users GROUP BY P.id "; $t2 = $conn->query($sq); Mas não estou entendendo como fazer... Se alguém puder só me dar um exemplo, eu só quero pegar o preço da outra tabela e exibir dentro de um loop em uma LISTA contendo, USER, VENDAS, VALOR TOTAL VENDIDO... Obrigado. att.
  4. Pitag346

    Input dinamico com SELECT

    Pessoal, alguem me ajuda... Como consigo fazer com que um SELECT, adicione campos ao meu formulário.... Tenho um SELECT onde existe a quantidade, esse select tem de 1 a 3 .... Por padrão ele é definido como 1 ou seja 1 campo... Gostaria de adicionar campos conforme essa quantidade, se o select estiver com o NUMERO 2... Adiciona 2 campos, se tiver 3 ele adiciona 3 campos e se tiver 1, apenas 1 campo. Alguem conseguiria me ajudar ? tentei fazer com a propriedade FOR porem... ela me retorna sempre mais campos do que eu preciso realmente. Obrigado.
  5. Pitag346

    Laço de repetição com dados

    Olá pessoal, tudo bem ? Estou com um probleminha, espero que me ajudem... Seguinte, tenho uma tabela onde faço a exibição de alguns dados, tais como: NOME, QUANTIDADE, VALOR Eu quero buscar o valor, em outra tabela e exibir dentro desse while. Porem, ele está exibindo em todos os resultados. Seguinte, Cada usuário que efetuar uma vendo do produto tal, é salvo na tabela VENDIDOS, onde o mesmo armazena o "ticket_promote_id". Ao fazer o while das vendas, quero pegar o valor do produto em outra tabela com o "ticket_promote_id" que mencionei acima, porem ao fazer isso, ele me retorna o valor de um produto em todos os resultados do while. Alguém sabe por que ? Segue meu código abaixo: $valueTotali = 0; while($dados = mysqli_fetch_assoc($sql_promoters)){ $user = $dados['id']; $sqlIngress = $conn->query("SELECT * FROM vendidos WHERE ticket_promote_id = '$user' "); $cont = $sqlIngress->num_rows; if($cont > 0){ $dadosIngress = mysqli_fetch_assoc($sqlIngress); $loteId = $dadosIngress['ticket_lote_id']; $sqlLote = $conn->query("SELECT * FROM ingress WHERE lote_id = '$loteId' "); while($data = mysqli_fetch_assoc($sqlLote)){ $valueTotali += $data['lote_preco']; } } Segue a imagem da tabela com o mesmo valor sendo replicado em todos os resultados:
  6. Pitag346

    Manter função em outras paginas!

    Esse é o detalhe... Quando o usuário fechar a pagina e voltar (as vezes rapidamente) o cookie pode ainda estar disponível ou seja, a função ira continuar ativa! Tem algum forma de eu definir para os cookies expirarem caso fechar a pagina ?
  7. Pitag346

    Manter função em outras paginas!

    Olá galera, tudo bom ? Estou com uma dúvida... Tenho uma função javascript em que faz algumas requisições de uma API... porem eu tenho q chamar essa api a cada 4 minutos! (caso o usuário tenha ativado). Tudo bem... essa função está em um arquivo chamado: Ativador.js E está configurada na index.php do meu site... (ao usuário apertar o botão ATIVAR, ele faz a requisição e com o SetInterval chama ela novamente a cada 4 minutos). Mas ai que vem minha dúvida... Ao usuário mudar de pagina, a função para e o usuário teria que apertar ATIVAR novamente... Gostaria de saber como fazer com que se o botão ativar for acionado e a função estivesse chamada (fazendo as requisições a cada 4 minutos) e o usuário mudasse de pagina isso continuaria... (Fazendo as requisições a cada 4 minutos) estilo o mini player do youtube.... POREM SE O USUÁRIO SAIR DO SITE E VOLTAR NOVAMENTE A FUNÇÃO ESTARIA DESATIVADA (O usuário teria que acionar o botão ativar novamente.,) Obrigado. Ficou meio confuso se não tiverem entendido posso explicar melhor! Só queria um norte pois não sei como iniciar, tentei fazer algo com o LocalStorage ... declarando que a função está ativada e etc... mas tive problemas!
  8. Pitag346

    Carregamento de imagem

    Olá pessoal, tudo bem? Estou com uma dúvida bem bobinha... mas gostaria que me ajudassem a solucionar. Alguns sites utilizam uma forma de carregar as imagens deixando elas embaçadas/desfocadas. Até que são carregadas e elas aparecerem normalmente... Exemplo básico seria esse site: https://www.redbull.com/br-pt/athletes Sabem me explicar como isso é feito, e pra que ? Meu site usa bastante imagens, gostaria de saber se tem algum benefício ou se seria somente estética ... Obrigado! (Não sei se isso é feito em JavaScript, acredito que sim... perdão se publiquei na área errada).
  9. Pitag346

    Calculo em Javascript

    @Felipe Guedes Coutinho , perdão pela demora amigo. Acabei ficando sem acesso a internet. Muito obrigado mesmo, solucionou meu problema! e ACHEI SEU CÓDIGO INCRÍVEL! por algum motivo não estou conseguindo reagir ao post! Mas eu agradeço muito.
  10. Pitag346

    Calculo em Javascript

    @Felipe Guedes Coutinho Muito obrigado pela resposta, eu utilizei o FOR com a expressão que eu criei e acabou dando certo. Vou tentar explicar melhor sobre o meses. Oque eu estou querendo fazer é um sistema de simulação de rendimento, onde o 10% do ValorAtual é somado com ele mesmo, subtraído o valor que você sacou/retirou e adicionando o valor que depositou/entrou. Os valores de Saque e Deposito seriam adicionados via HTML/INPUT. Em uma página html tenho 12 quadros que mostram os 12 meses, dentro desses quadros existem 2 campos, SAQUE E DEPOSITO onde eu posso deixar em branco e utilizar o valor 0 ou preencher. Caso preencher alterar os valores seguintes. O resultado utilizando dessa forma: for(var i = 0; i < 13; i++){ var resultado = (parseFloat(valoratual)/100*10)+parseFloat(valoratual)-parseFloat(saquev)+parseFloat(depositov); valoratual = resultado; console.log(valoratual); //retorna os 12 valores corretamente. }; Como podemos ver acima, os valores de cada mês, se dependem. Ou seja, eu não sei de que forma eu possa gerar os 12 valores onde eu posso alterar os dados SAQUE E DEPOSITO do mês e eles se atualizarem. um exemplo abaixo: Utilizando a função acima o resultado será (exemplo); Valor Atual: 10 Saque: 10 Deposito: 10 Janeiro - Resultado: 11 Fevereiro - Resultado: 12.1 Março - Resultado: 13.3 Abril - Resultado: 14.6 Maio - Resultado: 16.1 (Caso eu alterar os valores de SAQUE e DEPOSITO a partir desse resultado os demais abaixo, atualizam pois o resultado final será outro, e o mês abaixo calcula conforme o resultado final desse mês.). Junho - Resultado: 17.7 Julho - Resultado: 19.4 Agosto - Resultado: 21.4 Setembro - Resultado: 23.5 Outubro - Resultado: 25.9 Novembro - Resultado: 28.5 Dezembro - Resultado: 31.3 Cada mês teria seu Valor de SAQUE E DEPOSITO, porem os resultados finais tem que se encontrar. O resultado final do mes de janeiro é o valoratual para o mês de fevereiro e assim vai... é dificil explicar, porem ao entender fica mais facil. Eu não faço ideia como fazer. Obrigado, se tiver ficado muito confuso não precisa quebrar a cabeça pra tentar entender não kkkk Obrigado!
  11. Pitag346

    Calculo em Javascript

    Olá pessoal, tudo bem ? Estou com um probleminha bem chato que não faço ideia como resolver... Espero que me ajudem! Agradeço desde já. Vamos lá. Preciso fazer um calculo com a seguinte expressão: (ValorAtual/100*10)+parseFloat(ValorAtual)-parseFloat(Saque)+parseFloat(Deposito); Até o momento estou obtendo sucesso com a expressão acima. Agora vem o problema. Após eu obter o resultado da expressão acima, eu preciso substituir a variável ValorAtual com o resultado do mesmo, isso 12 vezes. (12 meses). Não sei se ficou muito bem explicado, porem eu preciso fazer essa função com valores já definidos e as próximas 12 vezes com valores a definir ou 0. Vou fazer uma nova explicação com os códigos comentados: var ValorAtual = 1000; var Saque = 0; // zero seria o padrão, eu poderia adicionar valores diferentes. (para cada mês, se possivel). var Deposito = 0; // zero seria o padrão, eu poderia adicionar valores diferentes. (para cada mês, se possivel).. var resultado = (ValorAtual/100*10)+parseFloat(ValorAtual)-parseFloat(Saque)+parseFloat(Deposito); Preciso recuperar o primeiro resultado, no exemplo acima seria: 1100 Então após recuperar o valor acima, eu precisaria substituir o ValorAtual para 1100. Isso, 12 vezes... Recuperando o valor e substituindo como se fosse um calculo de juros mensais (12 meses). Tentei fazer com while mas não obtive exito. Estou parado com a função simples que detalhei acima. Obrigado. Espero tenham entendido e agradeço desde já!
  12. Pitag346

    Implementando aplicação Laravel Open Source

    eu fiz implementações que não tem a ver com os gateways de pagamento, então nessa oarte eu nem mexi, não entendi o codigo pra poder fazer algo... por isso não obtive erros... eu nao sei oque fazer... as implementações que fiz foi no design, traduções, criei umas páginas que faltavam para o meu projeto e a única coisa que falta é esse gateway do PagSeguro que queria adicionar e não sei por onde começar...
  13. Pitag346

    Implementando aplicação Laravel Open Source

    Olá, como vão vcs? Bom estou editando um sistema open source chamado attendize (https://www.attendize.com/), fiz varias implementações, traduções e entre outras coisas... trabalhei muito nesse código e estou quase no fim... onde estou com um problema, quero implementar um gateway de pagamento via pagseguro... mas o detalhe é, não estou entendendo o código, alguém poderia me ajudar ? caso quiserem baixar o sistema completo que como citei é open source, só entrar no site... mas o código que não estou entendendo vou deixa-lo abaixo... app/Http/Controllers/EventCheckoutController.php <?php namespace App\Http\Controllers; use App\Events\OrderCompletedEvent; use App\Models\Affiliate; use App\Models\Attendee; use App\Models\Event; use App\Models\EventStats; use App\Models\Order; use App\Models\OrderItem; use App\Models\QuestionAnswer; use App\Models\ReservedTickets; use App\Models\Ticket; use Carbon\Carbon; use Cookie; use DB; use Illuminate\Http\Request; use Log; use Omnipay; use PDF; use PhpSpec\Exception\Exception; use Validator; class EventCheckoutController extends Controller { /** * Is the checkout in an embedded Iframe? * * @var bool */ protected $is_embedded; /** * EventCheckoutController constructor. * @param Request $request */ public function __construct(Request $request) { /* * See if the checkout is being called from an embedded iframe. */ $this->is_embedded = $request->get('is_embedded') == '1'; } /** * Validate a ticket request. If successful reserve the tickets and redirect to checkout * * @param Request $request * @param $event_id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse */ public function postValidateTickets(Request $request, $event_id) { /* * Order expires after X min */ $order_expires_time = Carbon::now()->addMinutes(config('attendize.checkout_timeout_after')); $event = Event::findOrFail($event_id); if (!$request->has('tickets')) { return response()->json([ 'status' => 'error', 'message' => 'No tickets selected', ]); } $ticket_ids = $request->get('tickets'); /* * Remove any tickets the user has reserved */ ReservedTickets::where('session_id', '=', session()->getId())->delete(); /* * Go though the selected tickets and check if they're available * , tot up the price and reserve them to prevent over selling. */ $validation_rules = []; $validation_messages = []; $tickets = []; $order_total = 0; $total_ticket_quantity = 0; $booking_fee = 0; $organiser_booking_fee = 0; $quantity_available_validation_rules = []; foreach ($ticket_ids as $ticket_id) { $current_ticket_quantity = (int)$request->get('ticket_' . $ticket_id); if ($current_ticket_quantity < 1) { continue; } $total_ticket_quantity = $total_ticket_quantity + $current_ticket_quantity; $ticket = Ticket::find($ticket_id); $ticket_quantity_remaining = $ticket->quantity_remaining; $max_per_person = min($ticket_quantity_remaining, $ticket->max_per_person); $quantity_available_validation_rules['ticket_' . $ticket_id] = [ 'numeric', 'min:' . $ticket->min_per_person, 'max:' . $max_per_person ]; $quantity_available_validation_messages = [ 'ticket_' . $ticket_id . '.max' => 'The maximum number of tickets you can register is ' . $ticket_quantity_remaining, 'ticket_' . $ticket_id . '.min' => 'You must select at least ' . $ticket->min_per_person . ' tickets.', ]; $validator = Validator::make(['ticket_' . $ticket_id => (int)$request->get('ticket_' . $ticket_id)], $quantity_available_validation_rules, $quantity_available_validation_messages); if ($validator->fails()) { return response()->json([ 'status' => 'error', 'messages' => $validator->messages()->toArray(), ]); } $order_total = $order_total + ($current_ticket_quantity * $ticket->price); $booking_fee = $booking_fee + ($current_ticket_quantity * $ticket->booking_fee); $organiser_booking_fee = $organiser_booking_fee + ($current_ticket_quantity * $ticket->organiser_booking_fee); $tickets[] = [ 'ticket' => $ticket, 'qty' => $current_ticket_quantity, 'price' => ($current_ticket_quantity * $ticket->price), 'booking_fee' => ($current_ticket_quantity * $ticket->booking_fee), 'organiser_booking_fee' => ($current_ticket_quantity * $ticket->organiser_booking_fee), 'full_price' => $ticket->price + $ticket->total_booking_fee, ]; /* * Reserve the tickets for X amount of minutes */ $reservedTickets = new ReservedTickets(); $reservedTickets->ticket_id = $ticket_id; $reservedTickets->event_id = $event_id; $reservedTickets->quantity_reserved = $current_ticket_quantity; $reservedTickets->expires = $order_expires_time; $reservedTickets->session_id = session()->getId(); $reservedTickets->save(); for ($i = 0; $i < $current_ticket_quantity; $i++) { /* * Create our validation rules here */ $validation_rules['ticket_holder_first_name.' . $i . '.' . $ticket_id] = ['required']; $validation_rules['ticket_holder_last_name.' . $i . '.' . $ticket_id] = ['required']; $validation_rules['ticket_holder_email.' . $i . '.' . $ticket_id] = ['required', 'email']; $validation_messages['ticket_holder_first_name.' . $i . '.' . $ticket_id . '.required'] = 'Ticket holder ' . ($i + 1) . '\'s first name is required'; $validation_messages['ticket_holder_last_name.' . $i . '.' . $ticket_id . '.required'] = 'Ticket holder ' . ($i + 1) . '\'s last name is required'; $validation_messages['ticket_holder_email.' . $i . '.' . $ticket_id . '.required'] = 'Ticket holder ' . ($i + 1) . '\'s email is required'; $validation_messages['ticket_holder_email.' . $i . '.' . $ticket_id . '.email'] = 'Ticket holder ' . ($i + 1) . '\'s email appears to be invalid'; /* * Validation rules for custom questions */ foreach ($ticket->questions as $question) { if ($question->is_required && $question->is_enabled) { $validation_rules['ticket_holder_questions.' . $ticket_id . '.' . $i . '.' . $question->id] = ['required']; $validation_messages['ticket_holder_questions.' . $ticket_id . '.' . $i . '.' . $question->id . '.required'] = "This question is required"; } } } } if (empty($tickets)) { return response()->json([ 'status' => 'error', 'message' => 'No tickets selected.', ]); } /* * The 'ticket_order_{event_id}' session stores everything we need to complete the transaction. */ session()->set('ticket_order_' . $event->id, [ 'validation_rules' => $validation_rules, 'validation_messages' => $validation_messages, 'event_id' => $event->id, 'tickets' => $tickets, 'total_ticket_quantity' => $total_ticket_quantity, 'order_started' => time(), 'expires' => $order_expires_time, 'reserved_tickets_id' => $reservedTickets->id, 'order_total' => $order_total, 'booking_fee' => $booking_fee, 'organiser_booking_fee' => $organiser_booking_fee, 'total_booking_fee' => $booking_fee + $organiser_booking_fee, 'order_requires_payment' => (ceil($order_total) == 0) ? false : true, 'account_id' => $event->account->id, 'affiliate_referral' => Cookie::get('affiliate_' . $event_id), 'account_payment_gateway' => count($event->account->active_payment_gateway) ? $event->account->active_payment_gateway : false, 'payment_gateway' => count($event->account->active_payment_gateway) ? $event->account->active_payment_gateway->payment_gateway : false, ]); /* * If we're this far assume everything is OK and redirect them * to the the checkout page. */ if ($request->ajax()) { return response()->json([ 'status' => 'success', 'redirectUrl' => route('showEventCheckout', [ 'event_id' => $event_id, 'is_embedded' => $this->is_embedded, ]) . '#order_form', ]); } /* * Maybe display something prettier than this? */ exit('Please enable Javascript in your browser.'); } /** * Show the checkout page * * @param Request $request * @param $event_id * @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View */ public function showEventCheckout(Request $request, $event_id) { $order_session = session()->get('ticket_order_' . $event_id); if (!$order_session || $order_session['expires'] < Carbon::now()) { $route_name = $this->is_embedded ? 'showEmbeddedEventPage' : 'showEventPage'; return redirect()->route($route_name, ['event_id' => $event_id]); } $secondsToExpire = Carbon::now()->diffInSeconds($order_session['expires']); $data = $order_session + [ 'event' => Event::findorFail($order_session['event_id']), 'secondsToExpire' => $secondsToExpire, 'is_embedded' => $this->is_embedded, ]; if ($this->is_embedded) { return view('Public.ViewEvent.Embedded.EventPageCheckout', $data); } return view('Public.ViewEvent.EventPageCheckout', $data); } /** * Create the order, handle payment, update stats, fire off email jobs then redirect user * * @param Request $request * @param $event_id * @return \Illuminate\Http\JsonResponse */ public function postCreateOrder(Request $request, $event_id) { /* * If there's no session kill the request and redirect back to the event homepage. */ if (!session()->get('ticket_order_' . $event_id)) { return response()->json([ 'status' => 'error', 'message' => 'Your session has expired.', 'redirectUrl' => route('showEventPage', [ 'event_id' => $event_id, ]) ]); } $event = Event::findOrFail($event_id); $order = new Order; $ticket_order = session()->get('ticket_order_' . $event_id); $validation_rules = $ticket_order['validation_rules']; $validation_messages = $ticket_order['validation_messages']; $order->rules = $order->rules + $validation_rules; $order->messages = $order->messages + $validation_messages; if (!$order->validate($request->all())) { return response()->json([ 'status' => 'error', 'messages' => $order->errors(), ]); } /* * Add the request data to a session in case payment is required off-site */ session()->push('ticket_order_' . $event_id . '.request_data', $request->except(['card-number', 'card-cvc'])); /* * Begin payment attempt before creating the attendees etc. * */ if ($ticket_order['order_requires_payment']) { /* * Check if the user has chosen to pay offline * and if they are allowed */ if ($request->get('pay_offline') && $event->enable_offline_payments) { return $this->completeOrder($event_id); } try { $gateway = Omnipay::create($ticket_order['payment_gateway']->name); $gateway->initialize($ticket_order['account_payment_gateway']->config + [ 'testMode' => config('attendize.enable_test_payments'), ]); $transaction_data = [ 'amount' => ($ticket_order['order_total'] + $ticket_order['organiser_booking_fee']), 'currency' => $event->currency->code, 'description' => 'Order for customer: ' . $request->get('order_email'), ]; switch ($ticket_order['payment_gateway']->id) { case config('attendize.payment_gateway_paypal'): case config('attendize.payment_gateway_coinbase'): $transaction_data += [ 'cancelUrl' => route('showEventCheckoutPaymentReturn', [ 'event_id' => $event_id, 'is_payment_cancelled' => 1 ]), 'returnUrl' => route('showEventCheckoutPaymentReturn', [ 'event_id' => $event_id, 'is_payment_successful' => 1 ]), 'brandName' => isset($ticket_order['account_payment_gateway']->config['brandingName']) ? $ticket_order['account_payment_gateway']->config['brandingName'] : $event->organiser->name ]; break; case config('attendize.payment_gateway_stripe'): $token = $request->get('stripeToken'); $transaction_data += [ 'token' => $token, ]; break; case config('attendize.payment_gateway_migs'): $transaction_data += [ 'transactionId' => $event_id . date('YmdHis'), // TODO: Where to generate transaction id? 'returnUrl' => route('showEventCheckoutPaymentReturn', [ 'event_id' => $event_id, 'is_payment_successful' => 1 ]), ]; // Order description in MIGS is only 34 characters long; so we need a short description $transaction_data['description'] = "Ticket sales " . $transaction_data['transactionId']; break; default: Log::error('No payment gateway configured.'); return repsonse()->json([ 'status' => 'error', 'message' => 'No payment gateway configured.' ]); break; } $transaction = $gateway->purchase($transaction_data); $response = $transaction->send(); if ($response->isSuccessful()) { session()->push('ticket_order_' . $event_id . '.transaction_id', $response->getTransactionReference()); return $this->completeOrder($event_id); } elseif ($response->isRedirect()) { /* * As we're going off-site for payment we need to store some data in a session so it's available * when we return */ session()->push('ticket_order_' . $event_id . '.transaction_data', $transaction_data); Log::info("Redirect url: " . $response->getRedirectUrl()); $return = [ 'status' => 'success', 'redirectUrl' => $response->getRedirectUrl(), 'message' => 'Redirecting to ' . $ticket_order['payment_gateway']->provider_name ]; // GET method requests should not have redirectData on the JSON return string if($response->getRedirectMethod() == 'POST') { $return['redirectData'] = $response->getRedirectData(); } return response()->json($return); } else { // display error to customer return response()->json([ 'status' => 'error', 'message' => $response->getMessage(), ]); } } catch (\Exeption $e) { Log::error($e); $error = 'Sorry, there was an error processing your payment. Please try again.'; } if ($error) { return response()->json([ 'status' => 'error', 'message' => $error, ]); } } /* * No payment required so go ahead and complete the order */ return $this->completeOrder($event_id); } /** * Attempt to complete a user's payment when they return from * an off-site gateway * * @param Request $request * @param $event_id * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse */ public function showEventCheckoutPaymentReturn(Request $request, $event_id) { if ($request->get('is_payment_cancelled') == '1') { session()->flash('message', 'You cancelled your payment. You may try again.'); return response()->redirectToRoute('showEventCheckout', [ 'event_id' => $event_id, 'is_payment_cancelled' => 1, ]); } $ticket_order = session()->get('ticket_order_' . $event_id); $gateway = Omnipay::create($ticket_order['payment_gateway']->name); $gateway->initialize($ticket_order['account_payment_gateway']->config + [ 'testMode' => config('attendize.enable_test_payments'), ]); $transaction = $gateway->completePurchase($ticket_order['transaction_data'][0]); $response = $transaction->send(); if ($response->isSuccessful()) { session()->push('ticket_order_' . $event_id . '.transaction_id', $response->getTransactionReference()); return $this->completeOrder($event_id, false); } else { session()->flash('message', $response->getMessage()); return response()->redirectToRoute('showEventCheckout', [ 'event_id' => $event_id, 'is_payment_failed' => 1, ]); } } /** * Complete an order * * @param $event_id * @param bool|true $return_json * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse */ public function completeOrder($event_id, $return_json = true) { DB::beginTransaction(); try { $order = new Order(); $ticket_order = session()->get('ticket_order_' . $event_id); $request_data = $ticket_order['request_data'][0]; $event = Event::findOrFail($ticket_order['event_id']); $attendee_increment = 1; $ticket_questions = isset($request_data['ticket_holder_questions']) ? $request_data['ticket_holder_questions'] : []; /* * Create the order */ if (isset($ticket_order['transaction_id'])) { $order->transaction_id = $ticket_order['transaction_id'][0]; } if ($ticket_order['order_requires_payment'] && !isset($request_data['pay_offline'])) { $order->payment_gateway_id = $ticket_order['payment_gateway']->id; } $order->first_name = $request_data['order_first_name']; $order->last_name = $request_data['order_last_name']; $order->email = $request_data['order_email']; $order->order_status_id = isset($request_data['pay_offline']) ? config('attendize.order_awaiting_payment') : config('attendize.order_complete'); $order->amount = $ticket_order['order_total']; $order->booking_fee = $ticket_order['booking_fee']; $order->organiser_booking_fee = $ticket_order['organiser_booking_fee']; $order->discount = 0.00; $order->account_id = $event->account->id; $order->event_id = $ticket_order['event_id']; $order->is_payment_received = isset($request_data['pay_offline']) ? 0 : 1; $order->save(); /* * Update the event sales volume */ $event->increment('sales_volume', $order->amount); $event->increment('organiser_fees_volume', $order->organiser_booking_fee); /* * Update affiliates stats stats */ if ($ticket_order['affiliate_referral']) { $affiliate = Affiliate::where('name', '=', $ticket_order['affiliate_referral']) ->where('event_id', '=', $event_id)->first(); $affiliate->increment('sales_volume', $order->amount + $order->organiser_booking_fee); $affiliate->increment('tickets_sold', $ticket_order['total_ticket_quantity']); } /* * Update the event stats */ $event_stats = EventStats::firstOrNew([ 'event_id' => $event_id, 'date' => DB::raw('CURRENT_DATE'), ]); $event_stats->increment('tickets_sold', $ticket_order['total_ticket_quantity']); if ($ticket_order['order_requires_payment']) { $event_stats->increment('sales_volume', $order->amount); $event_stats->increment('organiser_fees_volume', $order->organiser_booking_fee); } /* * Add the attendees */ foreach ($ticket_order['tickets'] as $attendee_details) { /* * Update ticket's quantity sold */ $ticket = Ticket::findOrFail($attendee_details['ticket']['id']); /* * Update some ticket info */ $ticket->increment('quantity_sold', $attendee_details['qty']); $ticket->increment('sales_volume', ($attendee_details['ticket']['price'] * $attendee_details['qty'])); $ticket->increment('organiser_fees_volume', ($attendee_details['ticket']['organiser_booking_fee'] * $attendee_details['qty'])); /* * Insert order items (for use in generating invoices) */ $orderItem = new OrderItem(); $orderItem->title = $attendee_details['ticket']['title']; $orderItem->quantity = $attendee_details['qty']; $orderItem->order_id = $order->id; $orderItem->unit_price = $attendee_details['ticket']['price']; $orderItem->unit_booking_fee = $attendee_details['ticket']['booking_fee'] + $attendee_details['ticket']['organiser_booking_fee']; $orderItem->save(); /* * Create the attendees */ for ($i = 0; $i < $attendee_details['qty']; $i++) { $attendee = new Attendee(); $attendee->first_name = $request_data["ticket_holder_first_name"][$i][$attendee_details['ticket']['id']]; $attendee->last_name = $request_data["ticket_holder_last_name"][$i][$attendee_details['ticket']['id']]; $attendee->email = $request_data["ticket_holder_email"][$i][$attendee_details['ticket']['id']]; $attendee->event_id = $event_id; $attendee->order_id = $order->id; $attendee->ticket_id = $attendee_details['ticket']['id']; $attendee->account_id = $event->account->id; $attendee->reference_index = $attendee_increment; $attendee->save(); /* * Save the attendee's questions */ foreach ($attendee_details['ticket']->questions as $question) { $ticket_answer = isset($ticket_questions[$attendee_details['ticket']->id][$i][$question->id]) ? $ticket_questions[$attendee_details['ticket']->id][$i][$question->id] : null; if (is_null($ticket_answer)) { continue; } /* * If there are multiple answers to a question then join them with a comma * and treat them as a single answer. */ $ticket_answer = is_array($ticket_answer) ? implode(', ', $ticket_answer) : $ticket_answer; if (!empty($ticket_answer)) { QuestionAnswer::create([ 'answer_text' => $ticket_answer, 'attendee_id' => $attendee->id, 'event_id' => $event->id, 'account_id' => $event->account->id, 'question_id' => $question->id ]); } } /* Keep track of total number of attendees */ $attendee_increment++; } } /* * Kill the session */ session()->forget('ticket_order_' . $event->id); /* * Queue up some tasks - Emails to be sent, PDFs etc. */ Log::info('Firing the event'); event(new OrderCompletedEvent($order)); } catch (Exception $e) { Log::error($e); DB::rollBack(); return response()->json([ 'status' => 'error', 'message' => 'Whoops! There was a problem processing your order. Please try again.' ]); } DB::commit(); if ($return_json) { return response()->json([ 'status' => 'success', 'redirectUrl' => route('showOrderDetails', [ 'is_embedded' => $this->is_embedded, 'order_reference' => $order->order_reference, ]), ]); } return response()->redirectToRoute('showOrderDetails', [ 'is_embedded' => $this->is_embedded, 'order_reference' => $order->order_reference, ]); } /** * Show the order details page * * @param Request $request * @param $order_reference * @return \Illuminate\View\View */ public function showOrderDetails(Request $request, $order_reference) { $order = Order::where('order_reference', '=', $order_reference)->first(); if (!$order) { abort(404); } $data = [ 'order' => $order, 'event' => $order->event, 'tickets' => $order->event->tickets, 'is_embedded' => $this->is_embedded, ]; if ($this->is_embedded) { return view('Public.ViewEvent.Embedded.EventPageViewOrder', $data); } return view('Public.ViewEvent.EventPageViewOrder', $data); } /** * Shows the tickets for an order - either HTML or PDF * * @param Request $request * @param $order_reference * @return \Illuminate\View\View */ public function showOrderTickets(Request $request, $order_reference) { $order = Order::where('order_reference', '=', $order_reference)->first(); if (!$order) { abort(404); } $data = [ 'order' => $order, 'event' => $order->event, 'tickets' => $order->event->tickets, 'attendees' => $order->attendees, 'css' => file_get_contents(public_path('assets/stylesheet/ticket.css')), 'image' => base64_encode(file_get_contents(public_path($order->event->organiser->full_logo_path))), ]; if ($request->get('download') == '1') { return PDF::html('Public.ViewEvent.Partials.PDFTicket', $data, 'Tickets'); } return view('Public.ViewEvent.Partials.PDFTicket', $data); } } nesse arquivo eu tentei edita-lo, mas não obtive exito! /resources/views/ManageAccount/Partials/PaymentGatewayOptions.blade.php <script> $(function() { $('.payment_gateway_options').hide(); $('#gateway_{{$account->payment_gateway_id}}').show(); $('.gateway_selector').on('change', function(e) { $('.payment_gateway_options').hide(); $('#gateway_' + $(this).val()).fadeIn(); }); }); </script> {!! Form::model($account, array('url' => route('postEditAccountPayment'), 'class' => 'ajax ')) !!} <div class="form-group"> {!! Form::label('payment_gateway_id', 'Default Payment Gateway', array('class'=>'control-label ')) !!} {!! Form::select('payment_gateway_id', $payment_gateways, $account->payment_gateway_id, ['class' => 'form-control gateway_selector']) !!} </div> {{--Stripe--}} <section class="payment_gateway_options" id="gateway_{{config('attendize.payment_gateway_stripe')}}"> <h4>Stripe Settings</h4> <div class="row"> <div class="col-md-6"> <div class="form-group"> {!! Form::label('stripe[apiKey]', 'Stripe Secret Key', array('class'=>'control-label ')) !!} {!! Form::text('stripe[apiKey]', $account->getGatewayConfigVal(config('attendize.payment_gateway_stripe'), 'apiKey'),[ 'class'=>'form-control']) !!} </div> </div> <div class="col-md-6"> <div class="form-group"> {!! Form::label('publishableKey', 'Stripe Publishable Key', array('class'=>'control-label ')) !!} {!! Form::text('stripe[publishableKey]', $account->getGatewayConfigVal(config('attendize.payment_gateway_stripe'), 'publishableKey'),[ 'class'=>'form-control']) !!} </div> </div> </div> </section> {{--Paypal--}} <section class="payment_gateway_options" id="gateway_{{config('attendize.payment_gateway_paypal')}}"> <h4>PayPal Settings</h4> <div class="row"> <div class="col-md-6"> <div class="form-group"> {!! Form::label('paypal[username]', 'PayPal Username', array('class'=>'control-label ')) !!} {!! Form::text('paypal[username]', $account->getGatewayConfigVal(config('attendize.payment_gateway_paypal'), 'username'),[ 'class'=>'form-control']) !!} </div> </div> <div class="col-md-6"> <div class="form-group"> {!! Form::label('paypal[password]', 'PayPal Password', ['class'=>'control-label ']) !!} {!! Form::text('paypal[password]', $account->getGatewayConfigVal(config('attendize.payment_gateway_paypal'), 'password'),[ 'class'=>'form-control']) !!} </div> </div> </div> <div class="row"> <div class="col-md-12"> <div class="form-group"> {!! Form::label('paypal[signature]', 'PayPal Signature', array('class'=>'control-label ')) !!} {!! Form::text('paypal[signature]', $account->getGatewayConfigVal(config('attendize.payment_gateway_paypal'), 'signature'),[ 'class'=>'form-control']) !!} </div> </div> </div> <div class="row"> <div class="col-md-12"> <div class="form-group"> {!! Form::label('paypal[brandName]', 'Branding Name', array('class'=>'control-label ')) !!} {!! Form::text('paypal[brandName]', $account->getGatewayConfigVal(config('attendize.payment_gateway_paypal'), 'brandName'),[ 'class'=>'form-control']) !!} <div class="help-block"> This is the name buyers will see when checking out. Leave this blank if you want the event organiser's name to be used. </div> </div> </div> </div> </section> {{--BitPay--}} <section class="payment_gateway_options" id="gateway_{{config('attendize.payment_gateway_bitpay')}}"> <h4>BitPay Settings</h4> <div class="row"> <div class="col-md-12"> <div class="form-group"> {!! Form::label('bitpay[apiKey]', 'BitPay Api Key', array('class'=>'control-label ')) !!} {!! Form::text('bitpay[apiKey]', $account->getGatewayConfigVal(config('attendize.payment_gateway_bitpay'), 'apiKey'),[ 'class'=>'form-control']) !!} </div> </div> </div> </section> {{--Coinbase--}} <section class="payment_gateway_options" id="gateway_{{config('attendize.payment_gateway_coinbase')}}"> <h4>Coinbase Settings</h4> <div class="row"> <div class="col-md-6"> <div class="form-group"> {!! Form::label('coinbase[apiKey]', 'API Key', array('class'=>'control-label ')) !!} {!! Form::text('coinbase[apiKey]', $account->getGatewayConfigVal(config('attendize.payment_gateway_coinbase'), 'apiKey'),[ 'class'=>'form-control']) !!} </div> </div> <div class="col-md-6"> <div class="form-group"> {!! Form::label('coinbase[secret]', 'Secret Code', ['class'=>'control-label ']) !!} {!! Form::text('coinbase[secret]', $account->getGatewayConfigVal(config('attendize.payment_gateway_coinbase'), 'secret'),[ 'class'=>'form-control']) !!} </div> </div> </div> <div class="row"> <div class="col-md-12"> <div class="form-group"> {!! Form::label('coinbase[accountId]', 'Account ID', array('class'=>'control-label ')) !!} {!! Form::text('coinbase[accountId]', $account->getGatewayConfigVal(config('attendize.payment_gateway_coinbase'), 'accountId'),[ 'class'=>'form-control']) !!} </div> </div> </div> {{--Pagseguro--}} <section class="payment_gateway_options" id="gateway_{{config('attendize.payment_gateway_pagseguro')}}"> <h4>Configurações pagseguro</h4> <div class="row"> <div class="col-md-6"> <div class="form-group"> {!! Form::label('pagseguro[appId]', 'APP id', array('class'=>'control-label ')) !!} {!! Form::text('pagseguro[appId]', $account->getGatewayConfigVal(config('attendize.payment_gateway_pagseguro'), 'APP id'),[ 'class'=>'form-control']) !!} </div> </div> <div class="col-md-6"> <div class="form-group"> {!! Form::label('pagseguro[AppKey]', 'AppKey', ['class'=>'control-label ']) !!} {!! Form::text('pagseguro[AppKey]', $account->getGatewayConfigVal(config('attendize.payment_gateway_pagseguro'), 'AppKey'),[ 'class'=>'form-control']) !!} </div> </div> </div> </section> {{--BDO MIGS--}} <section class="payment_gateway_options" id="gateway_{{config('attendize.payment_gateway_migs')}}"> <h4>Mastercard Internet Gateway Service Settings</h4> <div class="row"> <div class="col-md-6"> <div class="form-group"> {!! Form::label('migs[merchantAccessCode]', 'Merchant Access Code', array('class'=>'control-label ')) !!} {!! Form::text('migs[merchantAccessCode]', $account->getGatewayConfigVal(config('attendize.payment_gateway_migs'), 'merchantAccessCode'),[ 'class'=>'form-control']) !!} </div> </div> <div class="col-md-6"> <div class="form-group"> {!! Form::label('migs[merchantId]', 'Merchant ID', ['class'=>'control-label ']) !!} {!! Form::text('migs[merchantId]', $account->getGatewayConfigVal(config('attendize.payment_gateway_migs'), 'merchantId'),[ 'class'=>'form-control']) !!} </div> </div> </div> <div class="row"> <div class="col-md-12"> <div class="form-group"> {!! Form::label('migs[secureHash]', 'Secure Hash Code', array('class'=>'control-label ')) !!} {!! Form::text('migs[secureHash]', $account->getGatewayConfigVal(config('attendize.payment_gateway_migs'), 'secureHash'),[ 'class'=>'form-control']) !!} </div> </div> </div> </section> <div class="row"> <div class="col-md-12"> <div class="panel-footer"> {!! Form::submit('Save Payment Details', ['class' => 'btn btn-success pull-right']) !!} </div> </div> </div> {!! Form::close() !!} estou tentando todos os dias, mas não estou conseguindo... pra terem uma noção estou tentar fazer a implementação do pagseguro desde setembro de 2016... estou recorrendo ao fórum pois não sei mais o que fazer ou á quem recorrer... se for causar muito trabalho a vocês, podem deixar pra lá! att. e Obrigado desde já!
  14. Pitag346

    como fazer Html desktop e html mobile em um só site

    Amigo, caso você queira criar um 2º site, e fazer com que redirecione caso esteja com um celular, tablet, ou algo do genero... tem um seguinte script q faz isso... segue abaixo: <script type="text/javascript"> var userAgent = navigator.userAgent.toLowerCase(); var devices = new Array('nokia','iphone','blackberry','sony','lg', 'htc_tattoo','samsung','symbian','SymbianOS','elaine','palm', 'series60','windows ce','android','obigo','netfront', 'openwave','mobilexplorer','operamini'); var url_redirect = 'm.seusite.com'; function mobiDetect(userAgent, devices) { for(var i = 0; i < devices.length; i++) { if (userAgent.search(devices[i]) > 0) { return true; } } return false; } if (mobiDetect(userAgent, devices)) { window.location.href = url_redirect; } </script>
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.