2009-11-24 14 views

Répondre

17

Il est très facile de convertir en dif. les devises en utilisant le SDK Adaptive Payments de Paypal. En supposant que vous avez les informations nécessaires. (Nom d'utilisateur/passwd API, etc.) pour faire des demandes à l'API, il peut se faire comme suit:

<?php 

//First we need to include the class file of the Adaptive Payments 
include 'AdaptivePayments.php'; 

// Create an instance, you'll make all the necessary requests through this 
// object, if you digged through the code, you'll notice an AdaptivePaymentsProxy class 
// wich has in it all of the classes corresponding to every object mentioned on the 
// documentation of the API 
$ap = new AdaptivePayments(); 

// Our request envelope 
$requestEnvelope = new RequestEnvelope(); 
$requestEnvelope->detailLevel = 0; 
$requestEnvelope->errorLanguage = 'en_US'; 

// Our base amount, in other words the currency we want to convert to 
// other currency type. It's very straighforward, just have a public 
// prop. to hold de amount and the current code. 
$baseAmountList = new CurrencyList(); 
$baseAmountList->currency = array('amount' => 15, 'code' => 'USD'); 

// Our target currency type. Given that I'm from Mexico I would like to 
// see it in mexican pesos. Again, just need to provide the code of the 
// currency. On the docs you'll have access to the complete list of codes 
$convertToCurrencyList = new CurrencyCodeList(); 
$convertToCurrencyList->currencyCode = 'MXN'; 

// Now create a instance of the ConvertCurrencyRequest object, which is 
// the one necessary to handle this request. 
// This object takes as parameters the ones we previously created, which 
// are our base currency, our target currency, and the req. envelop 
$ccReq = new ConvertCurrencyRequest(); 
$ccReq->baseAmountList = $baseAmountList; 
$ccReq->convertToCurrencyList = $convertToCurrencyList; 
$ccReq->requestEnvelope = $requestEnvelope; 

// And finally we call the ConvertCurrency method on our AdaptivePayment object, 
// and assign whatever result we get to our variable 
$result = $ap->ConvertCurrency($ccReq); 

// Given that our result should be a ConvertCurrencyResponse object, we can 
// look into its properties for further display/processing purposes 
$resultingCurrencyList = $result->estimatedAmountTable->currencyConversionList; 
$baseAmount = $resultingCurrencyList->baseAmount->amount; 
$baseAmountCode = $resultingCurrencyList->baseAmount->code; 
$convertedAmount = $resultingCurrencyList->currencyList->currency->amount; 
$convertedAmountCode = $resultingCurrencyList->currencyList->currency->code; 

echo '<br /> $' . $baseAmount . ' ' . $baseAmountCode . ' is $' . $convertedAmount . ' ' . $convertedAmountCode; 

// And here just for the sake of knowing how we get the result from Paypal's API 
echo '<pre>'; 
print_r($result); 
echo '</pre>'; 

La sortie devrait être quelque chose comme: Comme vous pouvez le voir

$15 USD is $159.75 MXN 

ConvertCurrencyResponse Object 
(
    [responseEnvelope] => ResponseEnvelope Object 
     (
      [timestamp] => 2010-04-20T13:27:40.278-07:00 
      [ack] => Success 
      [correlationId] => b940006680f6a 
      [build] => 1238639 
     ) 

    [estimatedAmountTable] => stdClass Object 
     (
      [currencyConversionList] => CurrencyConversionList Object 
       (
        [baseAmount] => stdClass Object 
         (
          [code] => USD 
          [amount] => 15 
         ) 

        [currencyList] => CurrencyList Object 
         (
          [currency] => currency Object 
           (
            [code] => MXN 
            [amount] => 159.75 
           ) 

         ) 

       ) 

     ) 

) 

, il est très simple à utiliser l'API ConvertCurrency, il suffit de télécharger le SDK et commencer à jouer avec elle;)

+1

Merci pour la réponse brillante. Je me demandais comment allez-vous obtenir des résultats pour plusieurs devises. J'ai essayé quelque chose comme $ convertToCurrencyList-> currencyCode [] = 'MXN'; $ convertToCurrencyList-> currencyCode [] = 'JPY'; Mais il dit Essayer d'obtenir la propriété de non-objet. Merci. –