I have a custom store where I'm selling a single product (as a gift), I need to be able to store the recipients address (different from paypal users), a message for the gift and the name they want their gift to be from (if any).
I'd really like to capture the data on this page:
http://sendvalentinesflowers.co.uk/responsive-buy-rose.html
It appears that the standard buttons don't allow this much data to be passed/stored along side a transaction. I'm just wondering how this HAS to be done with IPN? I'm looking for the simplest way to do it.
I would save all of the information in your local database as "pending" prior to sending the user over to PayPal for payment. You can include the invoice parameter in your PayPal code and set the value to the record ID of your local record.
This invoice value will be returned in IPN so you can pull the data back out and process it as necessary, and also update the existing record's payment status according to the current IPN.
Related
i want to create a custom but now (or another pay now paymnet... ) so i read the documetation at paypal.com (Paypal API). and i read about HTML variables.
so far i understand that for create a buy now with dynamic price i need to set the amount variable to my price.
seconds i have the item_name and item_id variables for information about the productd.
but my que's are, where do i set the acount that my client pay for?
i mean where i set to where the money will transfer?
seconds, is there anyway to add an another data that will send back to my server after the payment complete?
If you created a hosted button (saved at PayPal) then it knows which account to send the money to based on that.
If you're working with an non-hosted button then you would use the "business" parameter to pass the email address or merchant account ID of the account you want the money to go to.
You can use the "custom" parameter to pass your own custom data. It's actually called "custom" and you can pass up to 256 characters into it. It will then come back in PDT or IPN if you're using those, and it would also show up in the GetTransactionDetails API response.
I need to make a modification to our custom cart. Basically as it currently stands when we get a payment we use IPN to post back to our site and display the details of the purchase, we then get an email from PayPal with all the details in.
I have an excel spreadsheet that then accesses Outlook and prints an Invoice based on this email and adjusts the stock database etc, at this point the order is given an Invoice number.
However, I want to make it that the invoice number is given at the checkout stage, now I know you can set the 'invoice' variable as a pass thru variable, however, what I am unable to determine from the online literature is whether or not this 'invoice' value is returned in the the PayPal instant Payment Notification email, so my excel spreadsheet can use it?
If the invoice number is not sent in the email, is there any field you know of that is?
All the best and thank you in advance.
First, it sounds like you're confusing IPN and PDT. They're very similar, but if the data is getting sent to your return URL then that would be PDT. IPN gets POSTed to a separate script outside of your checkout altogether.
IPN is the recommended method of updating things and sending out emails, etc. because even with Auto-Return enabled there is no guarantee your buyers will make it back to your return URL (when using Payments Standard.) IPN will always be triggered regardless.
So, back to your question, yes, the invoice number will be sent with IPN notifications if you pass it to PayPal with the payment request. The parameter is called "invoice". You can see all the available parameters that IPN works with in the PayPal documentation.
I've set up my IPN on PayPal and I get the transaction id, product name and all that but my question is how can I set up custom fields that I can retrieve after payment using the IPN?
Thanks in advance
There is a parameter called CUSTOM that you include in your button code or API calls. Anything you pass here will come back in IPN as $_POST['custom']. If you need multiple parameters you could store them there as an NVP string or however you want to pass them and then parse them back out within your IPN script.
Alternatively, you could save all your order data to your database prior to sending the user over to PayPal. Then you can include your db record ID in the PayPal payment using the INVOICE parameter, which again, would come back in IPN as $_POST['invoice']. With that you could pull the data back out of your DB based on the record ID and process it accordingly.
I'm trying to write an IPN that, upon successful transaction, modifies a database entry (like as to increment a currency (like Envato does for their prepaid deposits)).
I've looked over the IPN variables a few times and I can't figure out how to track a user transaction, except for the payer's email (but this relies on the fact that the registered account's email is the same as the payer email (which is not always true).
I'd like to track it using an account ID, but while the IPN will reply with a custom variable, I can't transmit a dynamic variable (using the Buy Now button) for it to send back (like an account ID).
My question is, how can I send a dynamic variable with these buttons or track it an already established way?
You can transmit custom data via Paypal. Look at the custom variable.
So the scenario is this:
user logs in;
in the page which is before payment page, you either have hidden input having custom field set to user id or form it dynamically with Javascript;
custom field is not even shown to the payer when he/she confirms the payment;
when transaction happens, custom field is stored (so you can always look it up in Paypal website);
IPN notification sends you the custom field value (amongst other ones) which you can use for identifying the user.
I have got similar scenario working on a production system.
I have successfully posted my custom shopping cart to PayPal -- it processes the order just beautifully, and when the payment is received, it posts data back to the URL I specified in the config. The code is based on the library found here: http://www.phpfour.com/blog/2009/02/php-payment-gateway-library-for-paypal-authorizenet-and-2checkout/
So I'm successfully verifying the IPN by posting data back to PayPal -- that is all great. Here's my dilemma -- how do I know what order the IPN is confirming?
I am not making use of PayPals shopping cart, I have my own. It has it's own cart ID in my database, and when I receive an IPN for that cart, I'd like to "close" the cart and save it as an order to be looked up at a later date.
I've tried passing an additional custom field along with the redirect to PayPal that populates the cart, but that value isn't returned back to me in the IPN. The documentation on x.com is just plain lacking so I've found no help there.
Does anyone have any experience with PayPal and IPN? Doesn't necessarily have to be with PHP -- I can interpret code -- but if you have a way to send a value to PayPal with an order and then have that value returned with the IPN, that is AWESOME!
If this isn't possible with PayPal's API (which I would find hard to believe) -- any other suggestions on how to handle this?
I do not know if this is a good idea or not, but here are a couple different options:
A: Use the first set of on1 / os1 for the item 1 and add the order id to that.
B: In the custom field, I am not sure what you have in there, but you can make it something like orderidhere41|otheritems here and then just parse this out by exploding at the | to get them separated.
Paypal does limit this, and I do not know why, but both of those should work. Doing it as an on / os will put it on the paypal receipt for the user, so that is my preferred method.
If someone else has a better solution, I would be interested in it as well!
EDIT:
Clarifying on1 os1. These are "options" generally used for Size / color etc. See IPN PDT Paypal variables under option_name1 option_selection(sp) for more information on them. The name of course is the title which would be "Order ID" the os would be the actual id.
EDIT:
Looking through that documentation $my2CO->addField('cart_order_id', rand(1, 100)); is where I would put my own cart order id. That should be the correct field. Sorry for the confusion :)
EDIT:
In the end there is a custom field for the paypal IPN, called "custom" adding data to this will pass through, this will transfer the orderid for you to and from. It must be called custom on both sides.
(this may be different for the other API's).
My experience has been with the Express checkout via C#, but the process should be the same even in PHP. If you're using the Name-Value Pair (NVP) interface right before you redirect the user to PayPal you hit the PayPal site to retrieve the redirection URL. As part of their response they pass back a token to you. You save this token along with your order. When the IPN postback occurs you get this same token back which lets you look up the original order.
The process flow looks like this ("You" being your site):
User fills cart, clicks button/link to check out
Request is sent to your site
Your site receives request, sends data to PayPal
You get an initial response from PayPal which contains a token
You save this token along with this user's shopping cart.
You redirect the user to the link returned by PayPal
User is redirected to PayPal and enters payment info
Payment info is validated by PayPal
User is redirected back to your site
PayPal sends IPN response back to your site
You grab the token included in the response
You look up the token you previously saved to find the shopping cart (they are the same value)
You close out the initial order/shopping cart.
You might want to try out the PHP SDK - scroll down to the Name-Value Pair Interface.
I very much doubt this will help the original poster, but PayPal have either added, or finally documented the option "invoice" which allows you to post the OrderID, and have it posted back via the IPN.
I am currently using this and it seems to work as expected.
For further info see the Website Payments Standard Integration Guide (PDF): Appendix A, Table A.4
You can create and post a custom pass-through variable that's 255 characters long that could hold any data. More info on page 44 in the official Paypal IPN Guide.