/**
  * Validate payment
  */
 function ConfirmExpressCheckout()
 {
     $config = HCCoder_PayPalConfig::getInstance();
     // FIELDS
     $fields = array('USER' => get_option('paypal_api_username'), 'PWD' => get_option('paypal_api_password'), 'SIGNATURE' => get_option('paypal_api_signature'), 'VERSION' => '74.0', 'TOKEN' => $_GET['token'], 'METHOD' => 'GetExpressCheckoutDetails');
     $nb_fields = count($fields);
     $fields = http_build_query($fields);
     // $fields_string = '';
     // foreach ( $fields as $key => $value )
     // $fields_string .= $key.'='.$value.'&';
     // rtrim($fields_string,'&');
     // CURL
     $ch = curl_init();
     if (get_option('paypal_environment') == 'sandbox') {
         curl_setopt($ch, CURLOPT_URL, 'https://api-3t.sandbox.paypal.com/nvp');
     } elseif (get_option('paypal_environment') == 'live') {
         curl_setopt($ch, CURLOPT_URL, 'https://api-3t.paypal.com/nvp');
     }
     curl_setopt($ch, CURLOPT_POST, $nb_fields);
     // curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
     curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     //execute post
     $result = curl_exec($ch);
     //close connection
     curl_close($ch);
     parse_str($result, $result);
     if ($result['ACK'] == 'Success') {
         HCCoder_PayPalAPI::SavePayment($result, 'pending');
         HCCoder_PayPalAPI::DoExpressCheckout($result);
         return $result;
     } else {
         HCCoder_PayPalAPI::SavePayment($result, 'failed');
     }
 }