I am having an issue with paypal subscription buttons. I have followed paypal doc and have a working paypal button. I'm able to receive the IPN.
The problem is that when I try to check the button ID receive in the IPN, it doesn't match any of my button IDs:
In the HTML form, I send a 13-digit ID composed of numbers and capital letters (the one given by my paypal account).
In the field btn_id of the IPN, I receive a 8-digit ID (numbers only)
I can't find anything in the doc about this 2nd kind of IDs, and so I can't figure out the difference between different subscriptions I receive.
Can anyone explain me about this btn_id field?
Related
I currently have a simple Paypal button on my website where people enter some information which is saved into a database, and the button then takes them to paypal to pay £20 to join. The problem is there is no link between the website and paypal, so I have to manually cross check who has joined on the website against Paypal each time.
I've looked into Paypal IPN which looks ideal, but I can't work out how to match the transactions up.
i.e. IPN sends me a txn_id, but I don't have that at my end. I need a way to send a generate & save a unique ID per transaction, that goes to Paypal with the user, and Paypal then sends back to me via IPN.
I'm quite lost in Paypals shoddy docs, so any help from SO would help!
(Off topic rant: why to Paypal have so many domains: paypal.com, paypal-business.com, x.com, paypal-marketing.com,... Can they not spell phishing?!)
Pass YOUR id (like the DB row id) to Paypal with custom variable, you can cross reference it using the custom variable from IPN.
https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_IPNandPDTVariables
My shopping cart for a ski lessons website works as follows:
A customer selects dates that they want ski lessons on. Some dates have different prices, for example school holidays and weekends. They submit the selected dates, and the event and its details is provisionally logged in an SQL table with a random transaction ID.
The shopping cart has also added up the cost of all the selected dates and creates a Paypal Advanced Buy Now Button with the price.
The customer pays for their selected ski lessons Paypal which sends an IPN back to my IPN listener for verification and to confirm the order.
There's a problem with this though, my IPN script only knows how to verify for a static price, and since every order will have a difference price depending on selection, I need to relate the received IPN to the specific order that was originally placed.
After some poking around I wondered if it is possible to manipulate the txn_id to be the same as the random transaction ID set in the first step above. That way when the IPN report comes back the script will know know exactly which event it is referring to and I can compare the details of that event (e.g. the amount paid compared to the amount calculated_ to the variables returned in the IPN report.
Is it possible to manipulate the txn_id, or otherwise send a different identifier with the Paypal button so that I can identify the payment?
It's possible to send the identifier in the "invoice" field, which PayPal will send back in the IPN.
I am creating a simple online paypal commerce and I have some doubts
on how sending data to seller and buyer when order payment is done. The
scenario looks like this:
Each product (legal documents) has a different form because in order to
deliver the product buyer need to specify different information for each
item. Studying Paypal documentation I have learnt that I can add hidden
fields and send them with transaction when I click the Buy Button or Add
To Cart.
When the payment is done:
buyer will receive the confirmation of payment (ok sent by paypal)
seller will receive all necessary information to fill the documents
for each product in one email.
I have noticed using sandbox that buyyer can add note for seller with payment
but unfortunatlly the textarea allow only a limitated text.
Please let me know if I understand correctly. When the payment is done Paypal
send back all data (IPN) to paypal script (including all information sent via
using the form). In that case I should be able to check if the transaction was
completed and if so doing the parser of the reply and send data via email using
PHP to seller. Is it correct?
Does anyone can show me a simple example?
Thanks a lot.
When transaction is complete (subscription,one time web form payment,express checkout or something else ) , Paypal sends authorization query to your IPN script (link to which is defined in your Paypal profile)
The IPN values are described here
https://www.paypalobjects.com/en_US/ebook/subscriptions/Appx-ipn_subscription_variables.html
or here
https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_IPNandPDTVariables
Im using Website Payments Standard so users can pay for a rating to be shown on their profile. Im also using IPN to check if the payment went through. How do I relate the two? When I get an IPN request to my listener, how do I know which user and rating it relates to?
If users are initiating payment through a buy it now or shopping cart button embedded in your site, you can set some sort of text box where the user enters their user name. this info will be sent with the Ipn. This is set up on the pay pal sure where you create the buttons.
Another method would be get their actual name from the ipn. Check the documentation for a list of variables that are sent with the ipn, there are a lot of possibilities.
I wanted to use Paypal's IPN service to verify payments for a recurring subscription charge for my website. How do you tie the IPN confirmations to a user in your site?
The IPN confirmation message has a name, email, paypal ID, recurring payment ID, but it seems to not give a unique identifier since I don't know where the paypal ID or recurring payment id comes from and it may not be trivial to uniquely match up the name/email that a user has on their paypal account (or entered there) with the name/email I have for them on my site (there may be many John Smith's and the person may choose to use a different email.)
1) When I send the initial payment request to Paypal, I can attach a unique UUID in the URL I ask them to send back to me, so if I save that unique ID for that user I can match that payment confirmation to the user who initiated it. Am I making that harder than it is? Is there an easier way?
2) Also, for a recurring/subscription charge, does paypal always use the URL I specified with the initial payment initiation? Does anyone have practical experience using the recurring Paypal payments with IPN's, does it reuse that unique URL? Or do I have to associate the Paypal ID's with the user after the first recurring payment is received?
Attaching unique data to the payment request is pretty much the accepted way to do it.
I don't have any experience with recurring charges.
I recently also set up some reoccurring payments with Paypal.
I actually wanted people to register as members after paying for the subscription, if they wanted to. As having to sign up as a member could add some friction to the sale process. So I don't send any user info along with the Subscribe button.
What my IPN script does is generate a unique activation code tied to the Paypal subscriptionID in the Activations table, then it sends this code to whoever paid for the subscription, with instructions on how to activate.
At the point of activation, you need to register or login. At this point the userID is added to the relevant row in the Activations table.
When the EndOfTerm IPN notification comes in the IPN script looks up the userID from the Activations table based on the SubscriberID given in the IPN. Then I can do whatever I need to do to that user to disable their subscription.
At all time the URL of the IPN script remains the same.
1) You can send an 'item_number' parameter with the initial subscription setup, which will get passed back to you. I'd suggest embedding an identification token in it.
2) If you mean the 'return' parameter, no, that's for sending the user to at the conclusion of the subscription setup. The renewal is automatic and doesn't 'ping' that page.
1) You want to be using the item_number parameter. Set this in your HTML form shown to the customer, and it will be returned to you by the paypal IPN, so you can put a database row ID in here, and use it to match up to the right person later.