paypal add to cart button // multilanguage support - paypal

Good day everyone,
need to code the following fucntionality on my multilanguage site.
If my customer javascript selects to view the site in e.g. german, the "add to cart" button must change to german and when pressed, open a german version of the cart.
I am having a hard time in finding info on how to javascript the flow described above. Anyone knows any link i could dig in?
Thanks in advance!

There are a few things you would need to do to make this work. When you change the language you need to set a few things in the button:
You need to update the lc value to that of the country you are selecting eg:
<input type="hidden" name="lc" value="US" />
to
<input type="hidden" name="lc" value="DE" />
and you would also want to update the button image:
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_cart_SM.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" />
to
<input type="image" src="https://www.paypalobjects.com/de_DE/i/btn/btn_cart_SM.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" />
Which will update the button image.
You can find the country codes and their "locale" at https://developer.paypal.com/docs/classic/express-checkout/integration-guide/ECButtonIntegration/
I have created a simple example of this in action at: http://jsfiddle.net/F5VM2/14/

Related

Unable to test sandbox accounts on paypal

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_donations">
<input type="hidden" name="business" value="6DHWKYCKBGXFS">
<input type="hidden" name="lc" value="US">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="bn" value="PP-DonationsBF:btn_donateCC_LG.gif:NonHosted">
<input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.sandbox.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
I have been trying it for weeks but no luck. what i have done so far is created two accounts on developer site then with business account i created donate button whose code is above.I pasted it on plain html page and it directed me to
https://www.paypal.com/us/cgi-bin/webscr?cmd=_flow&SESSION=bnXFinACSxCb1ODnXhGUvOIt9PAh_P89ZBULZpUJW...
where i entered my buyer account but i dont know why its keep sayiing "Please check your emai and password" . i have checked it hundred of times but i dont know why its not accepting this.Please help me , I am in big trouble.
Finaly after trying for weeks I found the solutuion.The four point in this https://developer.paypal.com/docs/classic/paypal-payments-standard/ht_test-pps-buttons/ tutorial is wrong. You dont create a button like that for testing purpose but rather go to profile>selling tools>create new button . Probably it will be helpful for someone..
If you are trying to tested this with your test buyer accounts, your seller accounts also needs to be set up in the sandbox. The above code is pointing to the live site "www.paypal.com", if you are trying to use your test seller and buyer accounts, the URL needs to be "www.sandbox.paypal.com"

Amount is not displaying in paypal form

I am using the following paypal code but still the amount is not displayed in paypal form once the website redirect the page to paypal.
`<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="XXXX">
<input type="hidden" name="amount_1" value="200">
<input type="image" style="width: 70px !important; padding: 0px !important;" src="http://www.merlioncricket.com/Login/static/images/payment.png" border="0" name="submit" alt="PayPal – The safer, easier way to pay online.">
<img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
</form>`
Please let me know, why the amount is not displaying.
Thanks,
Gladiator
Finally I found the answer, & maybe it is useful to others, whenever you create the paypal button make sure in step 2 "Save Button At PayPal" is not clicked & second once you create the button, remove code protection & then select the code & copy the paypal generated code.
It will solve the problem.
Thanks....
When using a hosted button, you can not pass over an amount. The hosted buttons, prevents someone from directly modifying the code and passing over a different amount. If you are wanting a different amount, you would need to log into your account and edit the hosted button. If you want to dynamically populate the amount, then you would need to create a non hosted clear text button.

PayPal: Simple button getting 'contains an incorrectly formatted item amount'

I know there are many questions like this already on SO but none of their answers are working for me.
I am using the simple button form:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input name="cmd" type="hidden" value="_s-xclick" />
<input type="hidden" name="amount" value="500.00">
<input type="hidden" name="currency_code" value="AUD">
<input name="hosted_button_id" type="hidden" value="XXXXX" />
<input alt="PayPal — The safer, easier way to pay online." name="submit" src="https://www.paypalobjects.com/en_AU/i/btn/btn_paynowCC_LG.gif" type="image" />
<img src="https://www.paypalobjects.com/en_AU/i/scr/pixel.gif" border="0" alt="" width="1" height="1" />
</form>
But get the error:
The link you have used to enter the PayPal system contains an incorrectly formatted item amount.
From what I've researched it is because the value needs 2 decimal places and no currency symbol. But as you can see I've tried that. Other versions I have tried are:
value=500.00>
value="$500.00">
value="500">
value="500.00">
value='500.00'>
Would anyone know what's going on? Thanks!
OK I think I have solved it.
The issue seems to be I was using a hosted Buy Now button rather then normal buy now button. The only difference I can tell is the line
<input name="hosted_button_id" type="hidden" value="XXXXX" />
After much struggling and 2 useless calls to PayPal I found the button I was meant to use here:
https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_buynow_buttons#id089UG070BRO
Let me say for the record that the PayPal API documentation is a complete nightmare!

can't POST item price in paypal sandbox

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="YYHZM9FTBZQGW">
<input type="hidden" name="amount" value="20.00">
<input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.sandbox.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
this is a paypal sandbox button. all i want to do is to post the TOTAL price of all the product the user buy in my website.
I created a button with nothing to post because basically i want to post dynamically in the future using a php variable so I think I don't need to set up the item price, name, quantity in the sandbox create button features. how am i suppose to do that.
this is the output. I want the item price to be not editable same as with description and quantity
The reason you can't override the amount dynamically, is because you have a so-called 'PayPal hosted button'.
With a hosted button, the amount is stored on PayPal's side and can't be overwritten with the 'amount' variable.
You'll either want to use a non-hosted button, or use the BMUpdateButton API call to dynamically update the button's amount.
An example request for BMUpdateButton would look as follows:
USER=Your API username
PWD=Your API password
SIGNATURE=Your API signature
VERSION=82.0
HOSTEDUBTTONID=The value of <input type="hidden" name="hosted_button_id" value="">
BUTTONTYPE=The type of button. E.g. BUYNOW
BUTTONCODE=The type of code you want to get back. E.g. HOSTED
L_BUTTONVAR0=amount=The new amount with a period as separator
L_BUTTONVAR1=item_name=Optional: a new item name if you wish
Similary, you could also use the BMCreateButton API to create a new button, or use the BMButtonSearch API to search through a list of all your stored hosted buttons (to find the hosted_button_id of your button automatically, for example)
The reason to use a hosted button is because it's more secure. A non-hosted, unencrypted button would basically leave the amounts open to manipulation. Fraudulent transactions waiting to happen.

How to make paypal button fields 'Required'?

i have created a pay now button using paypal button generator.
The button has 2 fields, and then you press pay now.
However, if you leave these fields empty, you can still pay
I want to make these fields "required", if a user didn't fill these fields, he should not be able to pay. How?
The button is not hosted on paypal, but the button protection is ON. I want the button to be encrypted.
EDIT
i tried javascript form validation, didn't work, any help?
here's the script
<form
action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<table>
<tr><td><input type="hidden" name="on0" value="first form">form 1</td></tr><tr><td><input type="text" name="os0" maxlength="200"></td></tr>
<tr><td><input type="hidden" name="on1" value="2nd form">2nd form</td></tr><tr><td><input type="text" name="os1" maxlength="200"></td></tr>
</table>
<input type="hidden" name="encrypted" value=" encryption here ">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
any help making these field required? I'll give you 3 up votes because i have 3 stackoverflow accounts and an accepted answer - that's the least i can do :)
PS
i couldn't make the form validation work, so i tried to hide the submit button unless the forms are filled, so far, that didn't work as well.
UPDATE - #Last Rose Studios
I tried many validation ways, finally i used my friend's contact form validation lol
validation.js
function has_id(id){try{var tmp=document.getElementById(id).value;}catch(e){return false;}
return true;}
function has_name(nm){try{var tmp=cfrm.nm.type;}catch(e){return false;}
return true;}
function $$(id){if(!has_id(id)&&!has_name(id)){alert("Field "+id+" does not exist!\n Form validation configuration error.");return false;}
if(has_id(id)){return document.getElementById(id).value;}else{return;}}
function $val(id){return document.getElementById(id);}
function trim(id){$val(id).value=$val(id).value.replace(/^\s+/,'').replace(/\s+$/,'');}
var required={field:[],add:function(name,type,mess){this.field[this.field.length]=[name,type,mess];},out:function(){return this.field;},clear:function(){this.field=[];}};var validate={check:function(cform){var error_message='Please fix the following errors:\n\n';var mess_part='';var to_focus='';var tmp=true;for(var i=0;i<required.field.length;i++){if(this.checkit(required.field[i][0],required.field[i][1],cform)){}else{error_message=error_message+required.field[i][2]+' must be supplied\n';if(has_id(required.field[i][0])&&to_focus.length===0){to_focus=required.field[i][0];}
tmp=false;}}
if(!tmp){alert(error_message);}
if(to_focus.length>0){document.getElementById(to_focus).focus();}
return tmp;},checkit:function(cvalue,ctype,cform){if(ctype=="NOT_EMPTY"){if(this.trim($$(cvalue)).length<1){return false;}else{return true;}}else if(ctype=="EMAIL"){exp=/^[a-zA-Z0-9._%-]+#[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;if($$(cvalue).match(exp)==null){return false;}else{return true;}}},trim:function(s){if(s.length>0){return s.replace(/^\s+/,'').replace(/\s+$/,'');}else{return s;}}};
paypal.html
<script src="validation.js"></script>
<script>
required.add('os0','NOT_EMPTY','1st form');
required.add('os1','NOT_EMPTY','2nd form')
</script>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" onsubmit="return validate.check(this)">
<input type="hidden" name="cmd" value="_s-xclick">
<table>
<tr><td><input type="hidden" name="on0" value="1st form">1st form<span class="required_star"> * </span></td></tr><tr><td><input type="text" name="os0" maxlength="200" id="os0" class="required"></td></tr>
<tr><td><input type="hidden" name="on1" value="2nd form">2nd form<span class="required_star"> * </span></td></tr><tr><td><input type="text" id="os1" name="os1" maxlength="200" class="required"></td></tr>
</table>
<input type="hidden" name="encrypted" value=" encryption here
">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
I have used JavaScript, and then i read your answer, but i'm not gonna change because it works now
i still have 2 small questions
1- is it possible to remove the description box from paypal page see this
2- paypal is not redirecting to the thank you page after the payment is done, i created many button, it's just not redirecting (i don't have a cancel page)
you could use the html5 input attribute 'required', and that would take care of some browsers, for the others you would have to use javascript to validate the form.
I'll use jQuery if you don't mind to give you a quick example.
$('form').submit(function(e){
flag = false;
$('[name="os0"], [name="os1"]').css('background','').each(function(){
el=$(this);
if(el.val().length == 0){
flag = true;
el.css('background','red');
}
});
if(flag){
return false;
}
});
this will prevent the form from being submitted unless both fields are filled out. I also added some feedback for the user by turning the background of the input red (optional).
Of course this will only work in modern browsers or older browsers with javascript enabled, there will still be a small percentage where it will pass through. In this case Robert's suggestion that you post to an in between page on your server might be a good idea.
Without modifying the button code, you'd need a client-side solution (like you mentioned), since the POST will go directly to PayPal (https://www.paypal.com/cgi-bin/webscr).
Alternatively, you could submit the POST to an inbetween page on your server, and forward from PayPal there on, in order to include a server-side check as well (only if the fields are absolutely required, in case JavaScript is disabled, for example).