Ir para conteúdo

Pitag346

Members
  • Total de itens

    158
  • Registro em

  • Última visita

Tudo que Pitag346 postou

  1. 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á!
  2. Pitag346

    Audio Streaming

    Olá pessoal, beleza? Estou com um pequeno problema... Tenho um servidor streaming onde toca alguns audios, mas não é sempre que o navegador executa o audio, como assim ? Tipo as vezes eu acesso o site e toca normalmente o que está na tag <audio> ... Mas as vezes eu acesso e não toca... Sei que consigo sanar isso com javascript ou jquery, mas não tenho esse conhecimento. OBS: O problema não é meu servidor pq se eu acessa-lo diretamente ele funciona sem parar em nenhum momento. Meu código html: <audio id="audio" autoplay="autoplay"> <source src="https://streaming.meuservidor.com.br/;" type="audio/mpeg" /> <source src="https://streaming.meuservidor.com.br/stream.ogg" type="audio/ogg" /> </audio> Um detalhe importante, mesmo quando estava com somente 1 source src, acontecia isso, pensei q era culpa da velocidade da conexão mas não é acredito eu. Obrigado amigos.
  3. Pitag346

    Sites Responsivos

    Olá pessoal, tudo bem com vocês ??? Espero que sim... Estou um problema com meu site, tentei montar ele com responsividade, mas não obtive sucesso. Alguém que tenha bastante conhecimento nessa área teria um site de estudos/apostilas para indicar ? Obrigado.
  4. Pitag346

    Sites Responsivos

    @dougtop Obrigado amigo, estudei os links e consegui sucesso com o meu responsivo. agradeço tbm ao amigo @Omar~
  5. Pitag346

    Dúvidas com JSON

    Olá, como vcs estão ? bom, é o seguinte... tenho um site onde quero exibir algumas imagens que estão no iTunes. para eu buscar uma imagem eu utilizo esse link que o iTunes disponibiliza: https://itunes.apple.com/search?term=Justin+Bieber&limit=1 e ele me retorna esse código abaixo: { "resultCount":1, "results": [ {"wrapperType":"track", "kind":"song", "artistId":320569549, "collectionId":1049605561, "trackId":1049605634, "artistName":"Justin Bieber", "collectionName":"Purpose (Deluxe)", "trackName":"Love Yourself", "collectionCensoredName":"Purpose (Deluxe)", "trackCensoredName":"Love Yourself", "artistViewUrl":"https://itunes.apple.com/us/artist/justin-bieber/id320569549?uo=4", "collectionViewUrl":"https://itunes.apple.com/us/album/love-yourself/id1049605561?i=1049605634&uo=4", "trackViewUrl":"https://itunes.apple.com/us/album/love-yourself/id1049605561?i=1049605634&uo=4", "previewUrl":"http://a1268.phobos.apple.com/us/r30/Music69/v4/8d/89/89/8d898987-2771-877f-b06c-27813f13c79f/mzaf_6954744275616470123.plus.aac.p.m4a", "artworkUrl30":"http://is5.mzstatic.com/image/thumb/Music6/v4/0e/38/b4/0e38b405-ae2c-1da4-5959-866f7abb110e/source/30x30bb.jpg", "artworkUrl60":"http://is5.mzstatic.com/image/thumb/Music6/v4/0e/38/b4/0e38b405-ae2c-1da4-5959-866f7abb110e/source/60x60bb.jpg", "artworkUrl100":"http://is5.mzstatic.com/image/thumb/Music6/v4/0e/38/b4/0e38b405-ae2c-1da4-5959-866f7abb110e/source/100x100bb.jpg", "collectionPrice":13.99, "trackPrice":1.29, "releaseDate":"2015-11-13T08:00:00Z", "collectionExplicitness":"notExplicit", "trackExplicitness":"notExplicit", "discCount":1, "discNumber":1, "trackCount":18, "trackNumber":5, "trackTimeMillis":233719, "country":"USA", "currency":"USD", "primaryGenreName":"Pop", "isStreamable":true}] } Gostaria de saber como faço pra exibir somente o link do álbum, a case onde fica o link é: artworkUrl100. espero tenham entendido... Obrigado desde já!
  6. Pitag346

    Inserção e Comparação

    Oi pessoal, Beleza? Preciso de ajuda.... Resumidamente: Eu armazeno varios dados no banco de dados inclusive alguns id's que estão em array... eles são armazenados com virgulas (pelo implode)... ou seja, os id's são armazenados desas forma: (1,2,3,4) Esses ids, eu preciso utilizar um SELECT neles para executar um WHILE ... Completo: Tenho um sistema em php + mysqli... onde 1 grupo de usuários faz upload de arquivos... esse grupo pode escolher quais grupos podem visualizar esse arquivo... podem escolher varios grupos ou apenas 1, ou até nenhum... para isso estou utilizando checkbox com array ... (<input type="checkbox" name="turma[]"/>). Faço o envio via POST e com o explode eu separo com virgulas... Ficando da forma que mencionei lá em cima... (1,2,3,4) mas preciso fazer um select e verificar esse campo que tem esses valores com virgulas... o detalhe que no select preciso verificar se o ID DO GRUPO é um dos que estão dentro da virgula se for faço a exibição ... se não, não é exibido... Obs: como serão varios arquivos enviados será necessário um WHILE ... Não faço ideia como fazer... Se não entenderem oq eu realmente estou precisando... podem estar solicitando que faço o anexo de imagens... Att. desde já, Obrigado!
  7. Pitag346

    Dicas para inserção de dados mysqli

    Olá amigos, tudo bom? Preciso de uma dica/solução para meu projeto... Bom vamos pelo começo: 1. Tenho um sistema de upload de arquivos onde faço o envio e registro no banco de dados o local do arquivo, nome e entre outros... 2. Apenas administradores podem enviar e editar arquivos... 3. Os usuários comuns são divididos em turmas, e em meu projeto existem 5 turmas e 2 períodos. (Manhã e Noite). Bom, o upload e as informações são simples de inserir no banco de dados Uso o mysqli para inserir os dados. Antes do upload tenho um modal onde o administrador informa os dados e envia o arquivo, neste eu quero ter a liberdade de listar esse arquivo somente na turma em que o administrador selecionou nos checkboxs Exemplo: Vou fazer o upload de 1 lista de exercícios do módulo 2, mas apenas as turmas 1 e 2 estão nesse módulo, ou seja o sistema não vai listar NO WHILE esse arquivo para a turma 3, 4 e 5... mas se eu quiser posso liberar para essas turmas quando eu quiser. Ou tbm posso remover das turmas 1 e 2 e apenas liberar para a turma 4... Não faço ideia de como posso armazenar isso no banco de dados... Pensei em fazer os names dos checkbox's com array e depois separando com vírgulas os values, ficando da seguinte forma NO BANCO DE DADOS: Turmas 1, 2, Mas dentro do while na hora de exibição, utilizando explode não consigo fazer a comparação com a turma do usuário (armezado em session)... Espero que tenham entendido e se não for pedir muito, eu entendo muito pouco de php, se puderem me ajudar com exemplos parecidos com o meu problema, ficarei grato! Obrigado desde já ♡ !
  8. Pitag346

    Dicas para inserção de dados mysqli

    Upload.php: //Receber os dados do formulário $tmp_name = $_FILES['arquivo']['tmp_name']; $arquivo = $_FILES['arquivo']['name']; $arquivo_name = $_POST['arquivo_nome']; $arquivo_data = date("Y-m-d H:i:s"); $professor = $_SESSION['usuarioNome']; $user_id = $_SESSION['usuarioId']; $semextensao = explode(".", $arquivo); $materia = $_POST['materia']; $descricao = $_POST['descricao']; // fim dos dados recebidos // $arm = $_POST['armazena']; $turmas = $_POST['turma']; $periodo = $_POST['periodo']; //verifica //Busca $result_usuario = "SELECT * FROM nuvem1 WHERE arquivo = '$arquivo_name' "; $resultado_usuario = mysqli_query($My, $result_usuario); $rowcount = mysqli_num_rows($resultado_usuario); if($rowcount >= 1){ $_SESSION['msg'] = "<div class='alert alert-danger'>Erro ao cadastrar arquivo, nome de exibição já existente!</div>"; exit; } if($arm == true){ $t = "0"; $p = "0"; }else{ foreach ($turmas as $value) { $t .= $value . ', '; } foreach ($periodo as $values) { $p .= $values . ', '; } } //Fazer o Upload move_uploaded_file($tmp_name, "nuvem/{$token}/". $arquivo); // Faço a inserção // $result_arq = "INSERT INTO nuvem1 (arquivo_id, arquivo, descricao, materia, arquivo_data, professor, turmas, periodos, arquivo_link, user_id) VALUES ('', '$arquivo_name', '$descricao', '$materia', '$arquivo_data', '$professor', '$t', '$p', '$link', '$user_id')"; Meu problema é armazenar as turmas, e depois comparar... Segue o formulário em html: <!-- Modal --> <div id="EnviaArq" class="modal fade" role="dialog"> <div class="modal-dialog"> <!-- Modal content--> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">&times;</button> <h4 class="modal-title">Enviar Arquivo</h4> </div> <form action="#" method="post"> <div class="modal-body"> <input type="file" id="file" name="arquivo" class="custom-file-input"> <div class="progress progress-striped active"> <div class="progress-bar" style="width: 0%"> </div> </div> </br> <span><b>Nome de exibição: </b><input type="text" name="arquivo_nome" placeholder="Ex. Lista 1" /></span> <span><b>Matéria: </b><select name="materia"><option value="1">Matemática</option></select></span> </br> </br> <div class="checkbox in-line"> <label><input type="checkbox" id="atribui" name="armazena"><b>Não Disponibilizar</b></label> </br> <span style="font-size: small; color: red">*Apenas será armazenado nos servidores, e poderá ser liberado a qualquer momento.</span> </br> </br> <span> <b>Turma:</b> </span> <label><input id="t1" type="checkbox" name="turma[]" value="1"> Turma 1</label> <label><input id="t2" type="checkbox" name="turma[]" value="2"> Turma 2</label> <label><input id="t3" type="checkbox" name="turma[]" value="3"> Turma 3</label> <label><input id="t4" type="checkbox" name="turma[]" value="4"> Turma 4</label> <label><input id="t5" type="checkbox" name="turma[]" value="5"> Barro-Branco</label> </br> </br> <span><b>Periodo: </b></span><label><input id="p1" type="checkbox" value="1" name="periodo[]"> Manhã</label> <label><input id="p2" type="checkbox" value="2" name="periodo[]"> Noite</label> </div> </br> <center> <span><b>Descrição</b></span> </br> <label><textarea name="descricao" placeholder="Ex. Lista com 50 Exercícios da Unicamp para estudo" style="margin: 0px; width: 548px; height: 91px;"></textarea></label> </center> </div> <div class="modal-footer"> <button type="submit" class="btn btn-success">Enviar</button> <button type="button" class="btn btn-default" data-dismiss="modal">Fechar</button> </form> </div> </div> </div> </div> e o javascript para envio do mesmo: <script> $(document).on('submit', 'form', function (e) { e.preventDefault(); //Receber os dados $form = $(this); var formdata = new FormData($form[0]); //Criar a conexao com o servidor var request = new XMLHttpRequest(); //Progresso do Upload request.upload.addEventListener('progress', function (e) { var percent = Math.round(e.loaded / e.total * 100); $form.find('.progress-bar').width(percent + '%').html(percent + '%'); }); //Upload completo limpar a barra de progresso request.addEventListener('load', function(e){ $form.find('.progress-bar').addClass('progress-bar-success').html('upload completo...'); //Atualizar a página após o upload completo setTimeout("window.open(self.location, '_self');", 2500); }); //Arquivo responsável em fazer o upload da imagem request.open('post', 'down/upload.php'); request.send(formdata); }); </script> Faltou somente o código da exibição dos arquivos que ainda não desenvolvi mas vou fazer com While o mais certo nessa situação, eu acredito...
  9. Pitag346

    Separação e Identificação de Arrays

    Oi pessoal, beleza? To com um probleminha aqui, eu não faço ideia como posso estar armazenando vários valores e depois fazendo com o php separe eles e verifique. Como assim? Seguinte: tenho um sistema de upload de arquivos que quero separar por turmas e periodos. Exemplo: Meu arquivo, vou enviar para TURMA 1, TURMA 2 E TURMA 3 estou utilizando checkbox para selecionar as turmas com o name em array (Assim: <input type="checkbox" name="turma[]" value="1">)... estou utilizando um forech para salvar no banco de dados com virgulas ficando no registro dessa forma: 1, 2, 3, Agora eu pego a turma do aluno que está armazenada em SESSION e quero comparar com esses números registrados acima ... Exemplo: Se o aluno em questão estiver na turma 1, 2 ou 3, ele vai ver o arquivo ... caso esteja na turma 4, esse arquivo não é exibido pra ele... não consigo fazer, pois, não estou sabendo como separar os valores... e fazer a comparação com os valores... Se alguém puder me ajudar com exemplos, serei muito grato. Obrigado desde já! Se estiver ficado muito confuso, posso estar adicionar imagens para melhor visualização! Att.
  10. Pitag346

    Separação e Identificação de Arrays

    Poderia me explicar como posso estar relacionando as tabelas ?
  11. Eu consigo fazer isso com JavaScript, dessa forma, tente adaptar ao seu gosto. Javascript: (buscar.js) var req; // FUNÇÃO PARA BUSCA O PRODUTO function buscarProduto(valor) { // Verificando Browser if(window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if(window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); } // Arquivo PHP juntamente com o valor digitado no campo (método GET) var url = "busca.php?produto="+valor; // Chamada do método open para processar a requisição req.open("Get", url, true); // Quando o objeto recebe o retorno, chamamos a seguinte função; req.onreadystatechange = function() { // Exibe a mensagem "Buscando Noticias..." enquanto carrega if(req.readyState == 1) { document.getElementById('resultado').innerHTML = 'Verificando...'; } // Verifica se o Ajax realizou todas as operações corretamente if(req.readyState == 4 && req.status == 200) { // Resposta retornada pelo busca.php var resposta = req.responseText; // Abaixo colocamos a(s) resposta(s) na div resultado document.getElementById('resultado').innerHTML = resposta; } } req.send(null); } PHP: (busca.php) <?php include("../../includes/conn.php"); //include na conexao // Acentuação header("Content-Type: text/html; charset=UTF-8",true); // Recebe o valor enviado $valor = $_GET['produto']; //busca o sql $sql = "SELECT * FROM produtos WHERE nome = '$valor' "; if($result = $conn->query($sql)){ $rowcount = mysqli_num_rows($result); if($rowcount > 1){ echo "<span style='color: red'>Produto já registrado.</span>"; } } HTML: (BuscarProduto.php) <script type="text/javascript" src="buscar.js"></script> <input type="text" placeholder="Produto" class="form-control" id="busca" onkeyup="buscarProduto(this.value)" /> <div id="resultado" class="resultado"></div> Espero que resolva seu problema, att.
  12. Pitag346

    Conexão com mysqli

    Poste o seu código de conexão para mim ver qual o seu problema...
  13. Pitag346

    Retorno do banco de dados com variaveis

    ERA ISSO QUE EU PRECISAVA AMIGO! Muito Obrigado!
  14. Pitag346

    Retorno do banco de dados com variaveis

    Olá pessoal, tudo bem ? Estou com um pequeno problema que não sei como resolver e acredito que seja fácil... Tenho um MODELO DE CONTRATO armazenado em banco de dados, e ao imprimir ele as variáveis contidas nele não estão sendo exibidas. Segue um exemplo abaixo: CONTRATO (ARMAZENADO NO BANCO DE DADOS) Meu código: $busca_contrato = "SELECT * FROM config"; $result00 = $My->query($busca_contrato); $row00 = $result00->fetch_assoc(); $inicio_aulas = $row00["inicio_aulas"]; $fim_aulas2 = $row00["fim_aulas"]; $fim_aulas_barrobranco = $row00["fim_barrobranco"]; $ano = $row00["ano"]; $contrato = $row00['contrato']; Quero que ao exibir o contrato as variáveis acima sejam adicionadas nele, ficando dessa forma: Tento exibir e não consigo, tentei alterar o que está armazenado no banco com {$inicio_aulas} para <?php echo $inicio_aulas ?> ou para <?= $inicio_aulas ?>, mas ainda não obtive exito. Espero que tenham entendio e obrigado desde já!
  15. Você poderia alterar o tipo do input... Ele está setado como TEXT, mude para DATE... Ficando assim: <strong><b><font size="3"> <font color="#000000">Data Vencimento:</font></strong> <input type="date" name="data" size="11" required maxlength="10"/><br><br> Você pode remover o evento, pois o input já vai estar formatado como data... Caso não der certo, tenho um código javascript aqui mas acredito que não será preciso...
  16. Pitag346

    Sistema de pagamento

    O mercado livre tem seu próprio gateway de pagamento que seria o MERCADO PAGO, você teria q desenvolver o próprio tbm... Ou conversar com o gerente do seu banco para te auxiliar na aplicação acredito que eles podem te ajudar... No meu caso eu teria que gerar boletos para cada aluno e identificar eles para saber se está com a mensalidade em dia ou não, conversei com o meu gerente e ele me auxiliou muito. Edit: Você pode verificar também com outros gateways de pagamentos, se tem a tal função que você quer e etc... da uma pesquisa sobre outros alem do pagseguro. Att.
  17. Pitag346

    Retorno do banco de dados com variaveis

    Assim da certo, o problema que eu queria uma forma de pelo painel de administração que eu desenvolvi fazer alterações no contrato... Teria algum jeito sem o contrato estar no banco de dados ??
  18. Pitag346

    Retorno do banco de dados com variaveis

    As variáveis estão sendo retornadas, mas quando eu dou echo no $contrato as variaveis contidas dentro de $contrato não são exibidas... ou melhor, não são reconhecidas...
  19. Pitag346

    Trabalhando com API's

    Olá pessoal, beleza ? estou com um problema em uma solicitação utilizando um API... segue o código (PHP): <?php $apiKey = ''; $summonerName = $_GET['i']; $result = file_get_contents('https://br.api.pvp.net/api/lol/BR/v1.4/summoner/by-name/'.$summonerName.'?api_key=' . $apiKey); $summoner = json_decode($result)->$summonerName; ?> <h3> <image height="64" width="64" src="http://avatar.leagueoflegends.com/br/<?php print $summonerName; ?>.png" valign="middle"/> <?php print $summonerName ?> </h3> <div> Level: <?php print $summoner->summonerLevel; ?> </div> <?php $result = file_get_contents('https://br.api.riotgames.com/api/lol/BR/v1.3/stats/by-summoner/' . $summoner->id . '?api_key=' . $apiKey); $stats = json_decode($result); foreach($stats->playerStatSummaries as $statSummary){ $losses = property_exists($statSummary, 'losses')? $statSummary->losses : '(not available)'; print '<p><b>' . $statSummary->playerStatSummaryType . '</b>: ' . $statSummary->wins . ' wins, ' . $losses . ' losses</p>'; } ?> estou com problema, utilizei esse código mas esta retornando esse erro: Warning: file_get_contents(https://br.api.riotgames.com/api/lol/BR/v1.3/stats/by-summoner/?api_key=************): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in get.php on line 28 não sei oque está dando de errado.... se alguém puder me ajudar com esse API (O api é da riot games desenvolvedora do jogo League of Legends) Obrigado desde já! att
  20. Pitag346

    Problemas com json_decode

    Olá pessoal, beleza? estou com um problema... tenho uma requisição json, ou seja um api... que encontra-se assim: (exemplo) {"4460961":[{"name":"Urgot's Shadowdancers","tier":"SILVER","queue":"RANKED_SOLO_5x5","entries":[{"playerOrTeamId":"4460961","playerOrTeamName":"Bonbonha","division":"IV","leaguePoints":3,"wins":90,"losses":83,"isHotStreak":false,"isVeteran":false,"isFreshBlood":false,"isInactive":false}]},{"name":"Jax's Crusaders","tier":"SILVER","queue":"RANKED_FLEX_SR","entries":[{"playerOrTeamId":"4460961","playerOrTeamName":"Bonbonha","division":"V","leaguePoints":62,"wins":69,"losses":68,"isHotStreak":false,"isVeteran":false,"isFreshBlood":false,"isInactive":false}]}]} Como podem ver, os índices se repetem... ou seja estão com os índices duplicados e os valores estão diferentes de cada um... gostaria de separa-los, então utilizei: foreach($obj2 as $key => $value){ $tier = $value[0]['tier']; $rank = $value[0]['division']; } o único erro retornado é: Notice: Undefined index: division ... mas o division está definido na API ... não sei oque fazer, e não sei porque não está reconhecendo o indice => "division" ... mas o indice => "tier" está funcionando normal... Espero que ajudem-me... Agradeço desde já!
  21. Pitag346

    Problemas com json_decode

    Mas amigo me deparei com mais um problema.... eu utilizo para buscar os valores o "foreach($obj2 as $key => $value)" .... até ai tudo bem... mas quando o valor não existe o API vai me retornar: {"status":{"message":"Data not found","status_code":404}} mas o php me exibe um erro: Cannot use object of type stdClass as array in... PORQUE O VALOR QUE TO PEGANDO NO FOREACH NÃO EXISTE ACREDITO EU... então como eu faço pra verificar se o api estava me retornando not found antes de fazer o foreach ou tem uma outra solução pra isso ??? segue o código: foreach($obj2 as $key => $value){ $tier = $value[0]->tier; $division = $value[0]->entries[0]->division; }
  22. Pitag346

    Problemas com json_decode

    Obrigado amigo, deu certo!!! att.
  23. Pitag346

    Dúvidas com JSON

    Obrigado amigo, só que agora estou me deparando com um outro problema, teria como "tratar" essa url que me retorna? no caso ele retorna o link da imagem que seria: http://is5.mzstatic.com/image/thumb/Music6/v4/0e/38/b4/0e38b405-ae2c-1da4-5959-866f7abb110e/source/100x100bb.jpg , onde eu destaquei em vermelho é o tamanho da imagem, eu precisaria de um tamanho maior, basta mudar "100x100" para o tamanho que desejo, que consigo obter a imagem. Teria como eu tratar esse link para outro tamanho um exemplo "300x300" ?
  24. Pitag346

    Sistema de instalação

    Olá pessoal, beleza? estou com um probleminha, tentei criar um sistema de instalação ou seja o php verifica se a pasta "install" existe, se existir ele verifica se o sistema já está instalado, caso não estiver instalado ele redireciona para: install/install.php?i=start ... até ai tudo bem, mas eu parei em uma parte que seria a mais importante, no install o usuário/cliente adiciona os dados dele como titulo do site e entre outros... após esses dados preciso que ele me informe o USUÁRIO, SENHA E DATABASE para que o sistema instale o bd... parei nessa parte, qual o melhor método para o usuário adicionar essas informações e o php salvar esses dados e tipo esses dados tem que serem editados no arquivo de conexão eu creio... alguém poderia me explicar?? tentei com: fopen() e fwrite() mas ele não salva da forma que eu quero... Obrigado desde ja!
  25. Pitag346

    Sistema de instalação

    Eae @Alaerte Gabriel , Beleza? eu fiz dessa forma: DEIXEI UM COMENTÁRIO ONDE ESTOU COM PROBLEMA... (se tiver sugestões melhores para melhorar o código, agradeceria) if(isset($_POST["host"]) && isset($_POST["usuario"]) && isset($_POST["senha"]) && isset($_POST["bd"]))//Verificamos se foi postado { $host = $_POST["host"]; //Salvamos em variáveis. $usuario = $_POST["usuario"]; $senha = $_POST["senha"]; $bd = $_POST["bd"]; ///estou com problema nessa parte ABAIXO \/ // $salvar = $host = $host; $usuario = $usuario; $senha = $senha; $bd = $bd; //--// $fp = fopen("dados.php", "w");//Abrimos o arquivo aonde está salvo os dados, com o parâmetro w, que subistitui todo o conteúdo. fwrite($fp, $salvar); fclose($fp); echo "Salvo!"; }
×

Informação importante

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