Jump to content

How to charge different prices for different currencies and languages?


paperweight

Recommended Posts

My WHMCS front-end user interface is in French, English, and Chinese. For French and English I will use PayPal. For Chinese I will use AsiaPay or Alipay.

 

I need to set definite immovable charges for each currency. For example, I do not want to charge US$10.00 for a product, but then in Euros and Renminbi have the price converted. Instead, I want to charge a set US$10.00 for English, EUR7.00 for French, and CNY88 for Chinese. Is there a way to set it to this method?

Link to comment
Share on other sites

this is one of those questions that, the more you read it, the more complicated it looks - as there all sorts of implied issues that may popup depending on exactly what paperweight wants to do. :?:

 

to permanently set the prices in the three currencies, you could just enter the price in each currency for your products and then ensure that the Auto Currency update is disabled in the automation settings (at least the product pricing part).

 

http://docs.whmcs.com/Automation_Settings#Currency_Auto_Update_Settings

 

that should deal with fixing the prices for the three currencies.

 

sentq is right and existing clients can't change their currencies, so you don't have to worry too much about them.

Link to comment
Share on other sites

this is one of those questions that, the more you read it, the more complicated it looks - as there all sorts of implied issues that may popup depending on exactly what paperweight wants to do. :?:

 

to permanently set the prices in the three currencies, you could just enter the price in each currency for your products and then ensure that the Auto Currency update is disabled in the automation settings (at least the product pricing part).

 

http://docs.whmcs.com/Automation_Settings#Currency_Auto_Update_Settings

 

that should deal with fixing the prices for the three currencies.

 

sentq is right and existing clients can't change their currencies, so you don't have to worry too much about them.

 

Hello, yes I agree it can be complicated and I've been trying to find a solution for many months. With Chinese Renminbi, though, this is a controlled currency, so traditional payment processors like PayPal and others can not denominate in it directly (unless you setup a company and bank account in mainland China, but even then the currency controls are different). Therefore, for Renminbi, you must use a local provider like 99bill or Alipay. AsiaPay, which has a WHMCS module, does not even directly deal in Renminbi but instead works with Alipay and others.

 

So changing languages will have little impact because even if someone from mainland China switched to English, they would still need to pay via Alipay and therefore go through the Chinese site. So this solves the difficult part of the situation.

 

But... then my follow-up question is how to limit certain payment processors to certain languages? I bought a ModulesGarden plugin that does things similar but not exactly like that. Does anyone know of any addon or module that can limit certain payment processors to only certain languages in WHMCS?

Link to comment
Share on other sites

But... then my follow-up question is how to limit certain payment processors to certain languages? I bought a ModulesGarden plugin that does things similar but not exactly like that. Does anyone know of any addon or module that can limit certain payment processors to only certain languages in WHMCS?

that was one of the implied issues I was thinking of... :)

 

I once answered a question about preventing new customers ordering a domain (with no hosting) and using paypal...

 

http://forum.whmcs.com/showthread.php?89535-Disallow-ordering-domains-via-PayPal

 

that Smarty code could be modified for your situation - I don't know which order form you're using on your site, but i'll use the one in the above thread - verticalsteps viewcart.tpl - though the principle should work in any order-form template as it should just be a case of adding the {if} statements at the appropriate point(s).

 

the default code for showing payment gateways in verticalsteps/viewcart is...

 

<h2>{$LANG.orderpaymentmethod}</h2>
<p align="center">{foreach key=num item=gateway from=$gateways}<input type="radio" name="paymentmethod" value="{$gateway.sysname}" id="pgbtn{$num}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} /><label for="pgbtn{$num}">{$gateway.name}</label> {/foreach}</p>

this can be tweaked so that, and assuming they're not an existing client already logged in, if they are using English or French as their language, the only payment option shown is PayPal - if using any other language, Paypal is not shown as an option, but your other payment options are (in your case that will be Asiapay).

 

<h2>{$LANG.orderpaymentmethod}</h2>
<p align="center">{foreach key=num item=gateway from=$gateways}{if !$loggedin and ($language eq "english" or $language eq "french") and $gateway.sysname neq "paypal"}{elseif !$loggedin and ($language neq "english" and $language neq "french") and $gateway.sysname eq "paypal"}{else}<input type="radio" name="paymentmethod" value="{$gateway.sysname}" id="pgbtn{$num}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} /><label for="pgbtn{$num}">{$gateway.name}</label> {/if}{/foreach}</p>

or if you wanted this to apply to existing clients too, you can just remove the !loggedin parts...

 

<h2>{$LANG.orderpaymentmethod}</h2>
<p align="center">{foreach key=num item=gateway from=$gateways}{if ($language eq "english" or $language eq "french") and $gateway.sysname neq "paypal"}{elseif ($language neq "english" and $language neq "french") and $gateway.sysname eq "paypal"}{else}<input type="radio" name="paymentmethod" value="{$gateway.sysname}" id="pgbtn{$num}" onclick="{if $gateway.type eq "CC"}showCCForm(){else}hideCCForm(){/if}"{if $selectedgateway eq $gateway.sysname} checked{/if} /><label for="pgbtn{$num}">{$gateway.name}</label> {/if}{/foreach}</p>

this would be one way to determine which gateways are shown based on language.

Link to comment
Share on other sites

that was one of the implied issues I was thinking of... :)

 

I once answered a question about preventing new customers ordering a domain (with no hosting) and using paypal...

 

this would be one way to determine which gateways are shown based on language.

 

Ahhh, yes :) this makes sense and is a pretty graceful solution. I really appreciate your input. In the next week I will do some testing and let you know if I run into any issues. I was hoping for a module since I use multiple templates for different languages plus mobile and desktop different templates, so was hoping for a "1 stone many birds" solution. But adding code to templates is easy enough -- just need to test to see if there are any holes in which a user can break it. Again many thanks! :lol:

Link to comment
Share on other sites

switching templates was the main way I thought a user could get around these gateway settings, but if you have that covered by already using multiple templates, and can modify them all, then that should be pretty much safe on that front.

 

one other thing to look at might be your setup in general settings -> invoices and ensure that "Clients Choose Gateway" is unticked - otherwise, they might be able to bypass these gateway restrictions by going to the invoice and paying from there.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use & Guidelines and understand your posts will initially be pre-moderated