... one year later ... Still a very useful post.
Notice that s2Member's built-in button generator works exceptionally well. The reason I am using
PayPal saved
buttons is to prevent fraud. With
generated buttons, many fields such as price, could be manipulated by the user. Encrypted
buttons are another attempt to thwart fraud, but I have yet to get those to work (in Sandbox).
I've been setting up a
PayPal saved subscription button, and there are a couple differences from what I saw in this thread:
- PayPal appears to (inconsistently) call "Item ID" a "Subscription ID" (I enter the value 1 so s2Member knows I'm upselling to level 1).
- In the Advanced field, I add
- notify_url=http://mydomain.com/?s2member_paypal_notify=1
- custom=mydomain.com
- modify=1
The
modify=1 is because I have pre-registration (free Level 0), which modifies up to Level 1 with paid subscription.
At this point, s2Member will not know who this payment is for when the IPN comes in. I must add additional dynamic fields to the button code on my site. It appears that
PayPal will accept these additional fields along with the pre-configured saved settings of the referenced button:
- Code: Select all
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="WXYZABCDE">
<input type="hidden" name="on0" value="<?php echo S2MEMBER_CURRENT_USER_VALUE_FOR_PP_ON0; ?>" />
<input type="hidden" name="os0" value="<?php echo S2MEMBER_CURRENT_USER_VALUE_FOR_PP_OS0; ?>" />
<input type="hidden" name="on1" value="<?php echo S2MEMBER_CURRENT_USER_VALUE_FOR_PP_ON1; ?>" />
<input type="hidden" name="os1" value="<?php echo S2MEMBER_CURRENT_USER_VALUE_FOR_PP_OS1; ?>" />
<input type="image" src="https://www.sandbox.paypal.com/en_US/i/btn/btn_subscribe_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.sandbox.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
Looking at s2Member-
generated button code, I see a lot of other fields, but they appear to all relate to the pricing and such (things saved at
PayPal for this referenced button).
Can anyone confirm that these four S2MEMBER_ variables are all that s2Member needs to properly track the transaction?