2016-03-01 66 views
4

我在我的wordpress網站上使用ccavenue支付網關。
插件網址是https://wordpress.org/plugins/ccavenue-payment-gateway-woocommerce/
但我有一個問題,我的基礎貨幣inr和ccavenue接受支付inr只,所以當用戶切換到美元的貨幣,然後ccavenue以$ 40作爲inr40。
我想在將貨幣轉換爲ccavenue頁面之前進行轉換。
同樣的代碼片段。在wocoommerce中過濾貨幣,並將其從usd轉換爲inr以獲得ccavenue

public function generate_ccavenue_form($order_id){ 

     global $woocommerce; 
     $order = new WC_Order($order_id); 
     $redirect_url = ($this -> redirect_page_id=="" || $this -> redirect_page_id==0)?get_site_url() . "/":get_permalink($this -> redirect_page_id); 
     //For wooCoomerce 2.0 

     $redirect_url = add_query_arg('wc-api', get_class($this), $redirect_url); 
     $order_id = $order_id.'_'.date("ymds"); 
     $checksum = $this -> getCheckSum($this -> merchant_id, $order->order_total, $order_id, $redirect_url, $this -> working_key); 


     $ccavenue_args = array(
      'Merchant_Id' => $this -> merchant_id, 

      'Amount' => $order->order_total, 
      'Order_Id' => $order_id, 
      'Redirect_Url' => $redirect_url, 
      'Checksum' => $checksum, 
      'currency_code' => get_woocommerce_currency(), 

      'billing_cust_name' => $order -> billing_first_name .' '. $order -> billing_last_name, 
      'billing_cust_address' => $order -> billing_address_1, 
      'billing_cust_country' => $order -> billing_country, 
      'billing_cust_state' => $order -> billing_state, 
      'billing_cust_city' => $order -> billing_city, 
      'billing_zip' => $order -> shipping_postcode, 
      'billing_cust_tel' => $order -> billing_phone, 
      'billing_cust_email' => $order -> billing_email, 
      'delivery_cust_name' => $order -> shipping_first_name .' '. $order -> shipping_last_name, 
      'delivery_cust_address' => $order -> shipping_address_1, 
      'delivery_cust_country' => $order -> shipping_country, 
      'delivery_cust_state' => $order -> shipping_state, 
      'delivery_cust_tel' => $order -> shipping_phone, 
      'delivery_cust_notes' => '', 
      'Merchant_Param' => '', 
      'billing_zip_code' => $order -> billing_postcode, 
      'delivery_cust_city' => $order -> shipping_city, 
      'delivery_zip_code' => $order -> shipping_postcode 
      ); 

     $ccavenue_args_array = array(); 
     foreach($ccavenue_args as $key => $value){ 
      $ccavenue_args_array[] = "<input type='hidden' name='$key' value='$value'/>"; 
     } 

我想我必須在function.php中添加一個過濾器鉤子。 但我無法爲此製作和添加過濾器。

回答

0

您可以使用Google API進行貨幣轉換。

你必須把一些自定義的功能,以您的貨幣實時轉換成woocommcerce,作爲CCavenue有INR沒有支持,所以你必須先轉換成美元,然後這個變量量發送到CCavenue形式。

將以下代碼添加到functions.php中並添加適當的操作。

<?php 
$from_currency = 'USD'; 
$to_currency = 'INR'; 
$amount   = 1; 
$results = converCurrency($from_currency,$to_currency,$amount); 
$regularExpression  = '#\<span class=bld\>(.+?)\<\/span\>#s'; 
preg_match($regularExpression, $results, $finalData); 
echo $finalData[0]; 

function converCurrency($from,$to,$amount){ 
    $url = "http://www.google.com/finance/converter?a=$amount&from=$from&to=$to"; 
    $request = curl_init(); 
    $timeOut = 0; 
    curl_setopt ($request, CURLOPT_URL, $url); 
    curl_setopt ($request, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt ($request, CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)"); 
    curl_setopt ($request, CURLOPT_CONNECTTIMEOUT, $timeOut); 
    $response = curl_exec($request); 
    curl_close($request); 
    return $response; 
} 
?> 

希望這可以幫助你。如果它有效,請投票。預先感謝您的投票。