I would like to test txn_type of 'subscr_payment' using paypal's ipn simulator.
but there is no such option.
while as you can see here there is such txn type
Correct; not all transaction types are currently supported in the IPN simulator.
We are planning to add more scenarios to the simulator, but for this kind of testing (which would require multiple successive IPN messages), I would recommend creating a subscription button in the sandbox environment and having it bill manually.
Unfortunately that's the only way to simulate subscription IPN messages today.
I also wonder if you can simulate subscription in IPN Simulator, but based on the choices, there is no way you can simulate subscription using IPN Simulator.
The best way to simulate subscription is to create Sandbox test accounts: one for the 'buyer' and one for the 'seller'. You can do this by going to Paypal Developer and go to Applications -> Sandbox Accounts.
My Sandbox test accounts: one for the buyer and one for the seller:
Once you have create the two test accounts, go to Paypal Sandbox site, login into your buyer Sandbox test account and create a Subscription Button. Wallah! You are done. Note: make sure to set the billing cycle to 1 day only so that you quickly test your Paypal IPN Listener.
Sandbox Subscription Button image:
Email notifications to your Sandbox test accounts can be seen at the Sandbox account notifications.
From within the PayPal developer site, you can go to the IPN simulator, select Transaction Type as Web Accept, click Show All Fields. You can then edit txn_type to be subscr_payment, subscr_signup, etc.
It's not perfect, as it doesn't give you all of the variables, but you can put info in other entries, and use a logical to determine whether or not the correct entry exists.
Do one test subscription, so that you have the values, and then work from there
Related
I'm integrating a react native app with PayPal's REST API and all has gone quite smoothly. However, when I click through, the buyer does not get the option to complete the purchase as a guest. I'm using a v1/payments integration; The transaction works if I login or create an account, but is it possible to let buyers pay without having to login?
I have researched and done most things people say you should do, like having a business account, enable guest payments, etc.
I tried using this github as an approach to using REST API, it works fine but if it helps: https://github.com/tonynguyenit18/paypal-RN-intergration
This isn't a REST API issue. You are getting the expected behavior of the PayPal Checkout in general. Guest checkout is available on a case-by-case basis. Very many factors -- such as the country of the buyer, IP address, repeated payment attempts, and testing payments to one's own account in the live environment -- are used to determine guest eligibility.
When a checkout is not guest-eligible, the buyer can still enter their card details but will also need to choose a password to create an account in the process.
Again, this is just how the PayPal Checkout works in general.
By the way, the v1/payments API is deprecated. You should use 'Create Order' and 'Capture Order', documented here.
I've used my live PayPal account to login to developer.paypal.com where I created 2 new accounts buyer# (personal) and seller# (business). I've implemented a PayPal plugin for a shop (CubeCart + PayPal Standard Payment Gateway plugin https://www.cubecart.com/extensions/payment-gateways/paypal-standard). When I complete an order (sandbox testing) I sign using buyer# email and password and complete the order. I can then click to view account and it shows "payment to", "unclaimed" and the amount I've paid. When I logout of this account and login as my buyer#, I see no transactions. If I log back into developer.paypal.com and go to transactions under "Sandbox" section and select any of the email addresses I see the same statement for all of them "You don't have any transactions".
If I login to sandbox.paypal.com using james-facilitator# account (business) there are no transactions here either.
If I login to sanbox.paypal.com using james-buyer# account (personal) there is only the one initial transaction here for the initial 9,999 funds
I've obviously missed something but I can't think what, I'm not sure how a sandbox account knows who it's seller should be but I've checked both sandbox seller accounts. I find it strange that the buyer account I used has registered the transaction but it seems like it's orphaned as there isn't any other record of it any where else including the developer.paypal.com sandbox transaction. I've tried this several times to see if I could get it working and I've also allowed for 24 hours just in case there was a delay somewhere.
I just want to be able to test transactions before going live.
Any help/advice?
Much appreciated :)
Cheers
James
Solved - silly really now I know but it was simply the email address I used to test the API. I used my main live account and I should have used the fake email address in my API call. Since my live controls the test accounts I assumed that this should have been used.
I want to test a new in-app purchase on a live app before the IAP goes live. I don't see any way to associate the IAP with the Test Flight version.
Is there anyway to do this?
You should read the "Testing In-App Purchase Products" guide from Apple but the key points are:
To perform testing for In-App Purchase products:
Set up test user accounts within Users and Roles in iTunes Connect, as detailed in Creating Sandbox Tester Accounts in iTunes Connect Developer Guide.
You’ll need a test user for each territory you want to test the app in.
Clear any account information stored on your test device. This prevents an actual user account from automatically being used when testing.
Use your test account credentials to test the purchase.
You can setup your sandbox test users in iTunesConnect. The following has detailed information.
https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/SettingUpUserAccounts.html#//apple_ref/doc/uid/TP40011225-CH25-SW10
The products must be real products ready to go live with your next release however you should be able to test them beforehand.
I am creating a website where user can buy digital stuff. Its not downloadable material or something like, just a sensitive data.
I used paypal payment button and integrated it to my website. I tested it using paypal sandbox. So, i would like to perform a certain action once the user purchase the item and roll back to the site. So please tell me how it is possible?
For any post-transaction processing you want to do you should use Instant Payment Notification (IPN).
Instant Payment Notification (IPN) is a message service that automatically notifies merchants of events related to PayPal transactions. Merchants can use it to automate back-office and administrative functions, like automatically fulfilling orders and providing customers with order status.
For PHP PayPal provides a basic IPN script to get you started. Alternatively, you could take a look at this IPN template solution I put together many years ago. It has an installer that sets up a MySQL database for you, and then it automatically saves all of the IPN into the database and emails you notifications. You could start with that and then easily customize it to suit your needs.
I am developing an application where I have a section only for paid users where they purchase for the section using the in-app purhcase system in iOS. I know that I need to keep track of the purchase history myself, and this is where the problem begins. I have a database and I am capable of storing users in my database, with a web service interface. How can I create a system where a URL is pinged only when a user has made the purchase.
As an example, I have the URL:
http://example.com/registerUserPremium/userid=123456
How can I get this to be called only when a purchase is made? The most elegant way seems like Apple pinging the URL with a special user ID upon purchase, but I can't find a way of doing it. It is obviously not a solution to make the user call that URL within the app, as it can be cracked/pirated. What is a good way of providing such a mechanism that is piracy-proof. My service is web-based, so if I can get this part done, the rest relies on my server-side mechanism (the user will just send a special key that is stored in its keychain, to the server) so I'll be able to finish the project. In short, I need a way to call a URL only when a purchase is made. What are some possible solutions?
Thanks,
Can.
I see two solutions:
"Server product model" (doc): the appstore contact your servers every time a user makes a purchase. In this case you have all of the information right away.
"Builtin product model" (same doc) in which the application gets the receipt from the appstore. In this latter case you can contact your server special URL, providing the receipt information, and the server can verify that the receipt has not been tampered with asking the app store to verify (it's a simple post, see here).