It is highly recommended that you test your setup with the PayPal sandbox. You use this by going to http://developer.paypal.com and creating a developer account. Once you have an account, you can login and go to Applications > Sandbox Accounts.
Testing with Sandbox Accounts
Use the merchant for the User ID in the extension’s settings when you are testing with the sandbox. Use the buyer account to “pay” for the subscription when testing the registration process.
The test user should receive a valid transaction and have their expiration date set according to your subscription period. If so, good – you can go live. If not, then you should do additional testing to see why the transaction did not work (See: Troubleshooting with the IPN Simulator)
Troubleshooting with the IPN Simulator
You can also use Applications > IPN Simulator to send a simulated IPN transaction without actually registering a user. This will allow you to determine if PayPal can see your IPN and the IPN is properly functioning.
There are two tests for the IPN Simulator. The first is a quick test to verify that the IPN listener can respond to the system. This is to verify the “handshake.” This will tell you if PayPal can see and connect to your listener.
- Get the IPN handler URL from the extension’s settings tab under IPN Location.
- Paste that into the handler URL.
- Select “Web Accept” for the transaction type.
There will be a large amount of options in the form. You can leave all of these as-is if you are just testing to make sure the IPN handshake can be verified.
Send through this test with just the defaults. You should get an indication of a valid IPN test if it finds the listener and the listener responds. If not, you may need to troubleshoot why it can’t find the listener. (NOTE: your test site MUST be out in the open for this to work and the domain must be valid. If you are testing on localhost or some test system that is not open, PayPal won’t be able to see it and you won’t be able to test it).
If the handshake is verified and things are working, you can send a more detailed test to make sure that user expiration dates can be set appropriately. Use the same settings as 1-3 above, and add the following:
- Under the heading “Payment Information” set “payment_status” to “Completed”.
- Under the heading “Basic Information” set “receiver_email” to the value you have in the extension’s settings for “PayPal User ID”.
- Under the heading “Currency and Currency Information” set “mc_gross” to the value you have in the extension’s settings for “price” (make sure they match exactly). Also, make sure the currency used is the same as what you have set in the extension’s settings. These may default to USD on either side so match them up.
- Choose a specific user ID from your test system. That would be the numeric user_ID of a registered user on your test site. Under the heading “Advanced and Custom Information” set “custom” to this user ID.
If you get a successful IPN transaction, then take a look at the user’s expiration in their profile. You should see the expiration advance by one unit of time.
Once you’ve tested the IPN and it works, you can go live and use your regular PayPal ID (should be an email address – not a numeric merchant account number).