Thanks for the heads up on this thread.
19 characters is generally used with older PayPal Recurring Profiles. PayPal Profile IDs are now 14 characters in length, and PayPal Transaction IDs are usually 17 characters in length. So it sounds to me like the original transaction recorded by s2Member, and subsequently stored inside wp_s2member_subscr_id, is actually a “Buy Now” transaction ID, and not actually a Recurring Profile ID.
If problems persist, I would go back to your s2Member Shortcode, and check to see if the billing details specify any recurring fees. If it does not, then wp_s2member_subscr_id contains the Transaction ID, and not a Recurring Profile ID (i.e. there were no recurring charges).
See also: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_nvp_r_ManageRecurringPaymentsProfileStatus
I should also note that s2Member Pro makes a utility function available, which makes it easy for site owners to communicate with the PayPal Pro API. I’ve provided a code sample here:
http://www.primothemes.com/forums/viewtopic.php?f=4&t=2062#p7407
The same concept you’ll see in that thread, also applies to almost all PayPal API calls.
<?php
$paypal = array(); // Your input array of data to send to the PayPal API.
if (($paypal = c_ws_plugin__s2member_paypal_utilities::paypal_api_response ($paypal)) && empty($paypal["__error"]))
print_r($paypal); // Output array. See PayPal API docs for response variables that come from PayPal.
?>