Paypal Multiple subscriptions Sample code - php

i have a website which sells several digital subscriptions (monthly, yearly).
Users may subscribe to many subscriptions and add them to his basket.
i am trying to implement payments of this basket using Paypal.
i succeded making things work for a single subscription but not for multiple subcriptions.
does anyone has a working sample code for multiple subscriptions ?
thanks a lot.
Dan

You can create your own code from this site:
PayPal Developer Standard Subscription Guide
If you would prefer you can get code example for Express Checkout as well from the PayPal Wizard. PayPal Wizard Code Examples
Here is another option for you. Here is a basic code example for a PayPal Subscription Button with drop down menus:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_xclick-subscriptions">
<input type="hidden" name="business" value="youremail#email.com">
<input type="hidden" name="lc" value="US">
<input type="hidden" name="item_name" value="Sample Subscription Button">
<input type="hidden" name="no_note" value="1">
<input type="hidden" name="no_shipping" value="2">
<input type="hidden" name="src" value="1">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="bn" value="PP-SubscriptionsBF:btn_subscribeCC_LG.gif:NonHosted">
<table>
<tr><td><input type="hidden" name="on0" value="Multiple Options">Multiple Options</td> </tr><tr><td><select name="os0">
<option value="Example Monthly">Example Monthly : $20.00 USD - monthly</option>
<option value="Example Daily">Example Daily : $5.00 USD - daily</option>
<option value="Example Annual">Example Annual : $125.00 USD - yearly</option>
</select> </td></tr>
</table>
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="option_select0" value="Example Monthly">
<input type="hidden" name="option_amount0" value="20.00">
<input type="hidden" name="option_period0" value="M">
<input type="hidden" name="option_frequency0" value="1">
<input type="hidden" name="option_select1" value="Example Daily">
<input type="hidden" name="option_amount1" value="5.00">
<input type="hidden" name="option_period1" value="D">
<input type="hidden" name="option_frequency1" value="1">
<input type="hidden" name="option_select2" value="Example Annual">
<input type="hidden" name="option_amount2" value="125.00">
<input type="hidden" name="option_period2" value="Y">
<input type="hidden" name="option_frequency2" value="1">
<input type="hidden" name="option_index" value="0">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btnbtn_subscribeCC_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>
This is an example of an open source code button.

Related

PayPal html button for digital goods

I'm having a problem with a PayPal button that I made. Yesterday I got my first sale of a digital good on my website, everything worked well except at the end when PayPal blocked the payment.
I called them to know why and they explained me that it was because the order was made for physical products and the shipping information was missing.
They unblocked the payment but I can't find how to set that the payment is for digital goods.
My code below:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="my email">
<input type="hidden" name="lc" value="IT">
<input type="hidden" name="item_name" value="product">
<input type="hidden" name="amount" value="00.00">
<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="button_subtype" value="services">
<input type="hidden" name="no_note" value="1">
<input type="hidden" name="no_shipping" value="1">
<input type="hidden" name="rm" value="2">
<input type="hidden" name="return" value="mysite">
<input type="hidden" name="cancel_return" value="mysite">
<input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynow_SM.gif:NonHosted">
<input type="hidden" name="custom" value="userid" />
<input type="hidden" name="notify_url" value="IPN ">
<input type="image" src="img/paypal1.png" style="width: 100%; height: 100%;" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
</form>
Your code is correct to not collect shipping for a digital good, no_shipping=1. Ref: https://developer.paypal.com/docs/paypal-payments-standard/integration-guide/Appx-websitestandard-htmlvariables/#paypal-checkout-page-variables
Perhaps you were misinformed as to why the payment was on hold.
One thing you can do is to ensure the item name makes clear that it is something digital.

How to make sure the paypal notify_url being called from paypal server?

I was working with paypal recurring payment subscription form and using sandbox account for testing
here is my form:
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick-subscriptions">
<input type="hidden" name="business" value="testacc#email.com">
<input type="hidden" name="lc" value="US">
<input type="hidden" name="item_name" value="Standard Pack">
<input type="hidden" id="item_number" name="item_number" value="1233434-23213">
<input type="hidden" name="no_note" value="1">
<input type="hidden" name="user_id" value="13692">
<input type="hidden" id="package_id" name="package_id" value="<?php echo $package_type; ?>">
<input type="hidden" name="a1" value="0">
<input type="hidden" name="p1" value="1">
<input type="hidden" id="t1" name="t1" value="M">
<input type="hidden" id="a3" name="a3" value="10">
<input type="hidden" name="p3" value="1">
<input type="hidden" name="t3" value="M">
<input type="hidden" name="src" value="1">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="no_shipping" value="1">
<input name="return" type="hidden" value="<?php echo base_url();?>package/new_payment_success" />
<input name="notify_url" type="hidden" value="<?php echo base_url();?>package/new_payment_notify" />
<input name="cancel_return" type="hidden" value="<?php echo base_url();?>package/new_payment_cancel" />
<div class="paypal-btn">
<input type="image" src="pay-with-paypal.png" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" style='width: 125px'>
</div>
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
and it's working totally fine and sends a success information to notify_url url
now for security purpose im checking HTTP_USER_AGENT from $_SERVER variable but this can be modified too.
so how can i make sure that transection is done successfully before i update my database?
I think that you can verify the whole POST content by appending cmd=_notify-validate and sending it to PayPal. They will answer you with a Verified or Not verified response.
Please, check the link below for more information:
https://developer.paypal.com/docs/classic/ipn/gs_IPN/

Custom Variable for Paypal Installment Plan

I have decided to use Paypal's Payment Gateway method that allows my customer to have the option to pay the amount fully or have an installment plan for them to pay for the things they ordered.
I'm aware that you can define variables before the creation of the Installment Plan button. However, the problem with this is that the variables are predefined.
What I'm looking for is if there's a way to change the value of these variables, how do I do so?
Here's my code for my cartbookout the page so far.
<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="YQUKWHZVR23K8">
<table>
<tr><td><input type="hidden" name="on0" value="plan"></td></tr>
<tr><td><input type="hidden" name="os0" value ="option_0"></td><td>
<strong>Installment for Programme</strong></td></tr>
<tr><td></td><td>Number of payments 4</td></tr><tr><td></td><td>Start
payments At checkout</td></tr>
<tr><td></td><td>
<table>
<tr><th align="left">Due*</th><th align="right">Amount</th></tr>
<tr><td>At checkout</td><td align="right"><?php echo ($totalAmount/4) +
"SGD" ; ?></td></tr><tr><td>Every 1 month (x 3)</td><td align="right"><?php
echo ($totalAmount/4);?></td></tr><tr><td COLSPAN="2" ALIGN="right"><?php
echo $totalAmount ?></td></tr></table></td></tr>
<tr><td colspan="3"><i>* We calculate payments from the date of checkout.
</i></td></tr></table>
<table><tr><td align=center><i></i></td></tr><tr><td><input type="image"
src="https://www.paypalobjects.com/en_US/i/btn/btn_installment_plan_LG.gif"
border="0" name="submit" alt="PayPal - The safer, easier way to pay
online!"></td></tr></table>
<img alt="" border="0"
src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1"
height="1">
</form>
I've tried to look up this issue on StackOverflow, but they were asking mostly on Payment in Full but not an Installment Plan method. Also, I've tried their solutions but to no avail.
Any help would be appreciated.
With the installment plan you can choose different amounts and very the time period for repayment. Keep in mind that only 4 installments are allowed.
Providing a screen shot for a hosted button and the code for non hosted. Keep in mind we recommend you protect any non hosted buttons.
Installment plan information on the PayPal Developer site:
https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/installment_step_1/
Non Hosted Button Code below (currently pointing to the sandbox):
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_xclick-payment-plan">
<input type="hidden" name="business" value="youremail#email.com">
<input type="hidden" name="lc" value="US">
<input type="hidden" name="item_name" value="Test Installment Plan">
<input type="hidden" name="no_note" value="0">
<input type="hidden" name="cn" value="Add special instructions to the seller:">
<input type="hidden" name="no_shipping" value="2">
<input type="hidden" name="disp_tot" value="Y">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="bn" value="PP-PaymentPlanBF:btn_installment_plan_LG.gif:NonHosted">
<table>
<tr><td><input type="hidden" name="on0" value="plan"></td></tr>
<tr><td><input type="hidden" name="os0" value ="option_0"></td><td><strong>Variable Installments</strong></td></tr>
<tr><td></td><tr><td></td><td>Number of payments 4</td></tr><tr><td></td><td>
<table>
<tr><th align="left">No.</th><th align="left">Due*</th><th align="right">Amount</th></tr>
<tr><td>1</td><td>At checkout</td>
<td align="right">$50.00 USD</td></tr><tr><td>2</td><td>after 1 week</td>
<td align="right">$75.00 USD</td></tr><tr><td>3</td><td>after 2 weeks</td>
<td align="right">$85.00 USD</td></tr><tr><td>4</td><td>after 3 weeks</td>
<td align="right">$90.00 USD</td></tr><tr><td COLSPAN="3" ALIGN="right">Total $300.00 USD</td></tr></table></td></tr>
<tr><td colspan="3"><i>* We calculate payments from the date of checkout.</i></td></tr></table>
<input type="hidden" name="option_select0" value="option_0">
<input type="hidden" name="option_select0_name" value="Variable Installments">
<input type="hidden" name="option_select0_type" value="V">
<input type="hidden" name="option_select0_a0" value="50.00">
<input type="hidden" name="option_select0_p0" value="0">
<input type="hidden" name="option_select0_t0" value="W">
<input type="hidden" name="option_select0_n0" value="1">
<input type="hidden" name="option_select0_a1" value="75.00">
<input type="hidden" name="option_select0_p1" value="1">
<input type="hidden" name="option_select0_t1" value="W">
<input type="hidden" name="option_select0_n1" value="1">
<input type="hidden" name="option_select0_a2" value="85.00">
<input type="hidden" name="option_select0_p2" value="2">
<input type="hidden" name="option_select0_t2" value="W">
<input type="hidden" name="option_select0_n2" value="1">
<input type="hidden" name="option_select0_a3" value="90.00">
<input type="hidden" name="option_select0_p3" value="3">
<input type="hidden" name="option_select0_t3" value="W">
<input type="hidden" name="option_select0_n3" value="1">
<input type="hidden" name="option_index" value="0">
<table><tr><td align=center><i>Sign up for</i></td></tr><tr><td><input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_installment_plan_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"></td></tr></table>
<img alt="" border="0" src="https://www.sandbox.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
Here is a screen shot for a hosted button:
Thanks,
Jennifer

how to use paypal subscription form for multiple subscriptions?

I am trying to use paypal subscription form for multiple product, but its not working.
Here is my form which i used.
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick-subscriptions">
<input type="hidden" name="business" value="archirayan9#gmail.com">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="no_shipping" value="1">
<input type="image" src="http://www.paypal.com/en_US/i/btn/btn_subscribe_LG.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
<input type="hidden" name="item_name" value="Baseball Hat Monthly - test2 " />
<input type="hidden" name="item_number" value="asd">
<input type="hidden" name="a3" value="10.00">
<input type="hidden" name="p3" value="1">
<input type="hidden" name="t3" value="M">
<input type="hidden" name="src" value="1">
<input type="hidden" name="sra" value="1">
</form>
This form is for 1 product subscription. I want to make it for multiple products with different item_id.
I cant found any thing that help me to setup multiple product subscription using this form.
Anyone have solution how to do?

submitting multiple items to paypal cart at once with php

I have some items for sale that have 2 and 3 levels of customization. Once set the user adds them to my onsite cart. Problem is, how can i send each item to paypal on checkout? The only code ive found for dynamic buttons supports only a single item.
<form method="post" action="https://www.paypal.com/cgi-bin/webscr" target="paypal">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="add" value="1">
<input type="hidden" name="business" value="EMAIL">
<input type="hidden" name="item_name" value="Item #1">
<input type="hidden" name="item_number" value="123456">
<input type="hidden" name="amount" value="7.00">
<input type="hidden" name="shipping" value="0">
<input type="hidden" name="shipping2" value="0">
<input type="hidden" name="handling" value="0">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="return" value="http://www.yoursite.com/thankyou.htm">
<input type="hidden" name="undefined_quantity" value="1">
<input type="image" src="http://images.paypal.com/en_US/i/btn/x-click-but22.gif" border="0" name="submit" width="87" height="23" alt="Make payments with PayPal - it's fast, free and secure!">
</form>
I tried adding
<input type="hidden" name="item_name_2" value="Item #1">
<input type="hidden" name="item_number_2" value="123456">
<input type="hidden" name="amount_2" value="7.00">
But no positive result.
Any ideas?
Here is the solution
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="email#email.com">
<input type="hidden" name="item_name_1" value="Item #1">
<input type="hidden" name="amount_1" value="1.00">
<input type="hidden" name="item_name_2" value="Item #2">
<input type="hidden" name="amount_2" value="2.00">
<input type="submit" value="PayPal">
</form>
Why don't you send the total amount your client has to pay to PayPal?

Categories