php - Forward any PayPal payment in EUR currency using openexchangerates.org

162

I would like to forward any payment transaction to be made in EUR currency. I already modified my responsible php file to do that, but I’m having a hard time to make it use a real time exchange rate. At the moment this is what I send to PayPal and it works:

    if ( $selected != 'EUR' )    {
                          $themex_final_payable_amount = ((3.672538)*($themex_final_payable_amount))/(66.809999);
            } 

          $p->add_field('business', trim($busi));
          $p->add_field('currency_code','EUR');
          $p->add_field('return', $ themex_paypal_success_page);
          $p->add_field('cancel_return', $cancel_url);
          $p->add_field('notify_url', get_bloginfo('siteurl').'/?payment_response=paypal_response');
          $p->add_field('item_name', $page_title);
          $p->add_field('custom', $order_id);
          $p->add_field('amount', ($themex_final_payable_amount));
          $p->submit_paypal_post(); // submit the fields to paypal

I would like instead of 3.672538 and 66.809999 to use a variables from this API answer, which is auto updated once a day.

JSON - latest.json

{
    disclaimer: "https://openexchangerates.org/terms/",
    license: "https://openexchangerates.org/license/",
    timestamp: 1449877801,
    base: "USD",
    rates: {
        AED: 3.672538,
        AFN: 66.809999,
        ALL: 125.716501,
        AMD: 484.902502,
        ANG: 1.788575,
        AOA: 135.295998,
        ARS: 9.750101,
        AUD: 1.390866,
        /* ... */
    }
}

The problem is that I can’t find a way to call them - like use the today values of AED and AFN…Here is the part of the code which is used in the admin page (another PHP file) where I put my API key:

if(isset($_POST['themex_save5']))
  {
    $json = get_option('exchange_rates');
    $exchangeRates = json_decode($json);

    global $themex_currencies_array;
    foreach ($themex_currencies_array as $themex_currency) {
      if ($themex_currency != "USD") {
        $exchangeRates->rates->$ themex_currency = $_POST['themex_' . $themex_currency . '_currency'];
      }
    }

    $json = json_encode($exchangeRates);
    update_option('exchange_rates', $json);

    update_option('openexchangerates_appid', trim($_POST['openexchangerates_appid']));

    echo '<div class="updated fade"><p>'.__('Settings saved!',' themex').'</p></div>';
  } 

Based on the above I thought it should work like this but it does not

if ( $selected != 'EUR' )    {
               $ themex_final_payable_amount = (($themex_AED_currency)*($ themex_final_payable_amount))/($themex_AFN_currency);
            } 
962

Answer

Solution:

So here is the part of code I needed. I've managed to get it working :)

               //
197

Answer

if ( $selected != 'EUR' ) { $json = get_option('exchange_rates'); $exchangeRates = json_decode($json); global $themex_currencies_array; foreach ($themex_currencies_array as $themex_currency) { if ($themex_currency != "USD") { switch($themex_currency) { case "AFN": $myAFN = $exchangeRates->rates->$themex_currency; ; break; case "AED": $myAED = $exchangeRates->rates->$themex_currency; ; break; } } } $themex_final_payable_amount = (($myAED)*($themex_final_payable_amount))/($myAFN); } $p->add_field('business', trim($busi)); $p->add_field('currency_code','EUR'); $p->add_field('return', $ themex_paypal_success_page); $p->add_field('cancel_return', $cancel_url); $p->add_field('notify_url', get_bloginfo('siteurl').'/?payment_response=paypal_response'); $p->add_field('item_name', $page_title); $p->add_field('custom', $order_id); $p->add_field('amount', ($themex_final_payable_amount)); $p->submit_paypal_post(); // submit the fields to paypal

People are also looking for solutions to the problem: php loop breaking down my css look

Source

Didn't find the answer?

Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.

Ask a Question

Write quick answer

Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.

Similar questions

Find the answer in similar questions on our website.