/**
  * Store new donative.
  *
  * @param  DonativoStoreRequest $request
  *
  * @return response
  */
 public function store(DonativoStoreRequest $request)
 {
     $input = $request->all();
     $paypal = new PaypalRequestService(uniqid());
     if (count($input['doacoes']) > 1) {
         foreach ($input['doacoes'] as $key => $doacao) {
             $paypal->setItem('1', 'Doação voluntária: ' . ($key + 1), 'Não há produto para ser entregue, isso é apenas uma doação, esteja ciente disso.', $doacao['value']);
         }
     } else {
         foreach ($input['doacoes'] as $doacao) {
             $paypal->setItem('1', 'Doação voluntária', 'Não há produto para ser entregue, isso é apenas uma doação, esteja ciente disso.', $doacao['value']);
         }
     }
     return $paypal->getCheckoutUrl();
 }
 public function ipn(PaypalRequestService $paypal, Request $request)
 {
     $input = $request->all();
     // dd($input);
     $data['data'] = json_encode($input);
     try {
         $r = Mail::send('emails.ipn', $data, function ($message) {
             $message->replyTo('*****@*****.**')->to(env('MAIL_TO'))->subject('Conctact: Paypal IPN!');
         });
     } catch (Exception $e) {
     }
     if (!$paypal->isIPNValid($input)) {
         return response()->json('Algo errado', 403);
     }
     //Está tudo correto, somos o destinatário da notificação, vamos
     //gravar um log dessa notificação.
     $ipn = new $this->ipn();
     $ipn->fill($input);
     try {
         $ipn->save();
     } catch (Exception $e) {
     }
     //Log gravado, podemos seguir com as regras de negócio para
     //essa notificação.
     //gravamos dados do cliente
     $customer = new $this->customer();
     $customer->fill($input);
     try {
         if (!isset($input['email']) && isset($input['payer_email'])) {
             $input['email'] = $input['payer_email'];
         }
         $customer->save();
     } catch (Exception $e) {
     }
     //gravamos dados da transação
     $transaction = new $this->transaction();
     $transaction->fill($input);
     try {
         $transaction->save();
     } catch (Exception $e) {
     }
     return response()->json('Log travado');
 }