public static function main()
 {
     // Instantiate a new payment request
     $paymentRequest = new PagSeguroPaymentRequest();
     // Set the currency
     $paymentRequest->setCurrency("BRL");
     // Add an item for this payment request
     $paymentRequest->addItem('0001', 'Notebook prata', 2, 430.0);
     // Add another item for this payment request
     $paymentRequest->addItem('0002', 'Notebook rosa', 2, 560.0);
     // Set a reference code for this payment request. It is useful to identify this payment
     // in future notifications.
     $paymentRequest->setReference("REF123");
     // Set shipping information for this payment request
     $sedexCode = PagSeguroShippingType::getCodeByType('SEDEX');
     $paymentRequest->setShippingType($sedexCode);
     $paymentRequest->setShippingAddress('01452002', 'Av. Brig. Faria Lima', '1384', 'apto. 114', 'Jardim Paulistano', 'São Paulo', 'SP', 'BRA');
     // Set your customer information.
     $paymentRequest->setSender('João Comprador', '*****@*****.**', '11', '56273440', 'CPF', '156.009.442-76');
     // Set the url used by PagSeguro to redirect user after checkout process ends
     $paymentRequest->setRedirectUrl("http://www.lojamodelo.com.br");
     // Add checkout metadata information
     $paymentRequest->addMetadata('PASSENGER_CPF', '15600944276', 1);
     $paymentRequest->addMetadata('GAME_NAME', 'DOTA');
     $paymentRequest->addMetadata('PASSENGER_PASSPORT', '23456', 1);
     // Another way to set checkout parameters
     $paymentRequest->addParameter('notificationURL', 'http://www.lojamodelo.com.br/nas');
     $paymentRequest->addParameter('senderBornDate', '07/05/1981');
     $paymentRequest->addIndexedParameter('itemId', '0003', 3);
     $paymentRequest->addIndexedParameter('itemDescription', 'Notebook Preto', 3);
     $paymentRequest->addIndexedParameter('itemQuantity', '1', 3);
     $paymentRequest->addIndexedParameter('itemAmount', '200.00', 3);
     /***
      * Pre Approval information
      */
     $preApprovalRequest = new PagSeguroPreApprovalRequest();
     $preApprovalRequest->setPreApprovalCharge('manual');
     $preApprovalRequest->setPreApprovalName("Seguro contra roubo do Notebook Prata");
     $preApprovalRequest->setPreApprovalDetails("Todo dia 30 será cobrado o valor de R100,00 referente ao seguro contra\n            roubo do Notebook Prata.");
     $preApprovalRequest->setPreApprovalAmountPerPayment('100.00');
     $preApprovalRequest->setPreApprovalMaxAmountPerPeriod('200.00');
     $preApprovalRequest->setPreApprovalPeriod('Monthly');
     $preApprovalRequest->setPreApprovalMaxTotalAmount('2400.00');
     $preApprovalRequest->setPreApprovalInitialDate('2015-09-09T00:00:00');
     $preApprovalRequest->setPreApprovalFinalDate('2017-09-09T00:00:00');
     $preApprovalRequest->setReviewURL("http://www.lojateste.com.br/redirect");
     $paymentRequest->setPreApproval($preApprovalRequest);
     try {
         /*
          * #### Credentials #####
          * Replace the parameters below with your credentials
          * You can also get your credentials from a config file. See an example:
          * $credentials = PagSeguroConfig::getAccountCredentials();
          */
         // seller authentication
         $credentials = new PagSeguroAccountCredentials("*****@*****.**", "E231B2C9BCC8474DA2E260B6C8CF60D3");
         // application authentication
         //$credentials = PagSeguroConfig::getApplicationCredentials();
         //$credentials->setAuthorizationCode("E231B2C9BCC8474DA2E260B6C8CF60D3");
         // Register this payment request in PagSeguro to obtain the payment URL to redirect your customer.
         $url = $paymentRequest->register($credentials);
         self::printPaymentUrl($url);
     } catch (PagSeguroServiceException $e) {
         die($e->getMessage());
     }
 }