Multiple Items, Multiple Quantities using paypal buttons.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I hope I have found the correct place to ask this question, and from the suggested topics it may not be possible. The topics are kinda' old, so I am verifying that it CAN'T be done with buttons. I am trying to make a paypal button to sell multiple quantities of different priced tickets. Is this possible or do I need a third party cart?
- Labels:
-
Express Checkout
-
PayPal Buttons
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You can do what you have in mind however, it will take some custom scripting as the online button creator can only generate the easy stuff. Below is an example of what can be done outside the box using the "upload" method. If you're into coding your own stuff, you'll find this stuff kind of fun, if not, there are 3rd services that may be able to meet your needs. For example, see this one. There are also specific 3rd party ticket sales services, just Google "selling tickets online".
If you want to tinker with the code below - go for it. In order to test it, you'll need to use your account email address, look for this line of code:
root.xx_id = "youremail_youremail.com"; //live
Replace yourmail_yourmail.com with your PayPal email address and save, then you can try it. No need to change anything else at this point.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Ticket Sales</title> <!-- Start of Script --> <script type = "text/javascript" > var order = new Object(); // object to store order items in var root = new Object(); // selection criteria var on = true; var off = false; var cntr = 0; // items in object var opts = 5; // number of options to allow var shpr = function (wt) {return 0;} // what to charge for shipping; var stxt = ""; // shipping text var spos = -1; // shipping position selector var ttax = 0; // percent for taxes var ttxt = "0"; // tax text var tpos = -1; // tax position selector var tamt=0,tqty=0,twgt=0,wgt=0,thnd=0; // totals root.hamt = 0; // amount, below which, handling charge applies root.hand = 0; // handling charge for orders less than hamt root.shp = off; // shipping selection line root.tax = off; // tax selection line // place for user-specific options root.xx_can = ""; // place for PayPal cancel return path root.xx_cur = "USD";// enter default currency code (or null) root.xx_id = "youremail_youremail.com"; //live root.xx_img = ""; // image URL root.xx_lc = "US"; // enter default country code (or null) root.xx_ret = ""; // place for PayPal return path root.xx_sty = ""; // place for PayPal page style root.xx_xtra = "&rm=2"; // place for other PayPal commands function CalcRoot () { // calc root stuff if (root.shp) spos=0; if (root.tax) tpos=0; } function DispTots () { // display totals on the page var tmp,d; tmp = 0; d = document.orderf; d.sub.value = Dollar (tamt); d.tot.value = Dollar (tamt + tmp); } function Dollar (val) { // force to valid dollar amount var str,pos,rnd=0; if (val < .995) rnd = 1; // for old Netscape browsers str = escape (val*1.0 + 0.005001 + rnd); // float, round, escape pos = str.indexOf ("."); // should be one, but OK if not if (pos > 0) str = str.substring (rnd, pos + 3); return str; // return valid string } function GetOrder (id, des, amt) { // get all ordered items var i,nr,val,qty,pos; var op = new Array (); // accumulate options here tamt=0,tqty=0; // zero totals nr = id.substring (2); // get number part of ID qty = document.orderf["qty" + nr].value; // get qty if (isNaN (qty)) { // test entry alert ("That is not a valid number! Try again."); return; } for (i=1; i<=opts; i++) { // see if any options if (document.orderf["op" + i + nr]) { val = document.orderf["op" + i + nr].value; // get option op[i] = val; pos = val.indexOf ("+"); // price increment? if (pos > 0) amt = amt + val.substring (pos + 1)*1.0; pos = val.indexOf ("%"); // percent change? if (pos > 0) amt = amt + (amt * val.substring (pos + 1)/100.0); } else op[i] = ""; } document.orderf["prc" + nr].value = Dollar (qty * amt); if (cntr == 0) order = new Object (); // zap object cntr = cntr + 1; // bump counter so no zap next time order[id] = new Object (); // create new entry for (i=1; i<=opts; i++) // load options if (op[i] != "") des = des + ", OP" + i + "=" + op[i]; order[id].des = des; // load up values order[id].amt = Dollar (amt); order[id].qty = qty; for (i in order) { // calc totals we might use qty = order[i].qty*1.0; tamt = tamt + order[i].amt * qty; // total amount tqty = tqty + qty; // total quantity } DispTots (); // calc totals } function SendCart () { // send the cart to PayPal var frst = true; // 1st pass thru items. var winpar = "width=710,height=390,scrollbars," + "location,resizable,status"; //Change the lines for either testing mode (sandbox) or live mode //var strn = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_cart" + "&upload=1" + "&business=" + root.xx_id + root.xx_xtra; var strn = "https://www.paypal.com/cgi-bin/webscr?cmd=_cart" + "&upload=1" + "&business=" + root.xx_id + root.xx_xtra; var i,j=0,des; if (root.xx_cur.length > 0) strn = strn + "¤cy_code=" + root.xx_cur; if (root.xx_lc.length > 0) strn = strn + "&lc=" + root.xx_lc; if (root.xx_can.length > 0) strn = strn + "&cancel_return=" + root.xx_can; if (root.xx_ret.length > 0) strn = strn + "&return=" + root.xx_ret; if (root.xx_sty.length > 0) strn = strn + "&page_style=" + root.xx_sty; if (root.xx_img.length > 0) strn = strn + "&image_url=" + root.xx_img; if (tpos > 0) strn = strn + "&tax_cart=" + Dollar (tamt*ttax/100); for (i in order) { // send all valid data if (order[i].qty > 0) { j = j + 1; des = order[i].des; strn = strn + "&item_name_" + j + "=" + escape (des) + "&item_number_" + j + "=" + i + "&quantity_" + j + "=" + order[i].qty + "&amount_" + j + "=" + order[i].amt; } } if (j > 0) window.open (strn, "paypal", winpar); } function SetShp (obj) { // set shipping on user selection shpr = function (wt) {return 0;} // zap it spos = obj.selectedIndex; // which option selected stxt = obj.options[spos].text; // set various shipping functions. if (spos == 1) shpr = function (wt) {return 0;} if (spos == 2) shpr = function (wt) {return 4.95;} if (spos == 3) shpr = function (wt) {return 10;} if (spos == 4) shpr = function (wt) {return wt * 2.50;} DispTots (); } function SetTax (obj) { tpos = obj.selectedIndex; // which option selected ttxt = obj.options[tpos].text; ttax = obj.options[tpos].value*1.0; DispTots (); } </script> <!-- End of Script --> </head> <body> <!-- Start of Form --> <form name="orderf" id="orderf" method="post" action="javascript:void 0;"> <table cellspacing = "0" cellpadding = "4" border = "3" frame = "box" rules = "all" summary = "Ticket Reservations"> <caption>Ticket Sales </caption> <tr> <th align="left">Description</th> <th>each</th> <th>Quantity</th> <th>Tot</th> </tr> <tr> <td>Adults</td> <td align="right">$15.00</td> <td> <input type="text" name="qty10" size="2" /> <a href="javascript: GetOrder ('id10', 'Adults', 15.00);">add</a> </td> <td> <input class="nbor" type="text" name="prc10" size="6" value="0.00" /> </td> </tr> <tr> <td>Children</td> <td align="right">$10.00</td> <td> <input type="text" name="qty15" size="2" /> <a href="javascript: GetOrder ('id15', 'Children', 10.00);">add</a> </td> <td> <input class="nbor" type="text" name="prc15" size="6" value="0.00" /> </td> </tr> <tr> <td align="right" colspan="6"> Subtotal = <input class="nbor" type="text" name="sub" size="10" value="0.00" /> </td> </tr> <tr> <td align="right" colspan="6"> <input type = "button" value = "Reset" onclick = "cntr = 0; // zap cart shpr = function (wt) {return 0;} if (root.shp) spos = 0; if (root.tax) tpos = 0; this.form.reset();" /> <input type = "button" value = "Checkout" onclick = "SendCart ();" /> Total <script type="text/javascript"> if (root.xx_cur.length > 0) document.writeln (" (", root.xx_cur, ")"); </script> = <input class="nbor" type="text" name="tot" size="10" value="0.00" /> </td> </tr> </table> </form> <!-- End of Form --> </body> </html>
Post edited by Moderator to comply with Community guidelines.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for posting this. I think this will help achieve the results we are trying to accomplish. One quick question; is there a way to have the transaction not require a PayPal account to complete?
Thank you.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Is there a way to not have the checkout process open a new window? It seems like when this happens the return path doesn't work.
Thank You.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear GreenGear, thank you for your suggestion. My Java skills are poor at best, but I will attempt to muddle through.
1.) I would like to know the 3rd party service you wanted to recommend (I think you forgot to provide the link).
" If you're into coding your own stuff, you'll find this stuff kind of fun, if not, there are 3rd services that may be able to meet your needs. For example, see this one."
2.) Is it appropriate in this forum to ask for help tweaking java code? If it is, here is my attempt: http://medats.org.uk/events/paypalquantitytest/ Password is: Quantity
2.a.) If not can you give me a pointer to a good Java forum?
3.) Correct me if I am wrong but there is a lot more to tweaking the java code you provided right? I couldn't get it to work "as is."
Thanks Saragrace
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sorry you're having issue ... the example I provided will work as is. All you need to do is copy the code as is, open Notepad and paste the code into a blank page. Then save the file with the extension of .htm or .html , i.e., "tests.html". Suggest simply saving the file to an empty directory on your hard drive. I usually work with a directory called Test on my system. Once you have the file saved, just use Notepad to edit the one line where the email address is needed, then save. From there you can open or run the example via your web browser. No other changes are needed to try the example.
Unfortunately learning to tweak scripts is mostly trial and error unless you have developer help or some training. I've done a lot of crash and burn learning but, sometimes that's not a bad thing. Scripts are a bit out of the scope of this community, if you can find someone local to help, that's an option. And there are online ways to learn too - for example, here's one.
As for a 3rd party service, this site may be able provide some options.
Haven't Found your Answer?
It happens. Hit the "Login to Ask the community" button to create a question for the PayPal community.
- How to get a Volunteer Fire Department charity status in Merchant Products and Services Archives
- Multiple stores into one paypal account? in Reporting Archives
- Paypal siding with Blackmailer in Managing Risk and Fraud Archives
- Same buyer opening cases again and again and again in Managing Risk and Fraud Archives
- how to open a closed case and prove to paypal we are not scammers in Managing Risk and Fraud Archives