The API we're using to tell CiviCRM to generate this recurring series - is the
ContributionRecur API:
$resultRecur = wf_civicrm_api('ContributionRecur', 'create', $contributionRecurParams);
I don't know how that API connects with PayPal WPS; one of the $contributionRecurParams is the PaymentProcessor, but I don't have any clients on PayPal WPS - so can't test how well it works for IPN payment processors.
Here's what to do: Create a Membership Type with duration: 1day and minimum fee = $1; then do what you describe above (live): purchase 2 terms on your Webform; and pay in 2 installments; That should:
- result in Contact getting the Membership
- result in Contact having a Contribution in his record: $1 receive date today
- result in Contact having a Recurring Series (at the bottom of the Contribution tab) in his record: status: in progress, 2 installments, daily, next scheduled date: tomorrow
Tomorrow:
- hopefully - another $1 contribution is generated and the Recurring Series status is updated to completed;
Update: you told me that the second $1 payment was indeed processed in PayPal WPS - so that's great; your CiviCRM did not receive the IPN so you had to manually reconcile - that's an issue between PayPal WPS and your CiviCRM [unrelated to Webform CiviCRM]
I really don't know how PayPal WPS handles expired/lost/stolen credit cards; and I don't know what business logic/consequences may be attached to a failed recurring payment; For the iATS Extensions we handle different Failed attempts - differently; but what we don't do is add any business logic - as many orgs will have different logic e.g. whether or not memberships should be canceled automatically on a failed recurring contribution.
Conclusion: if you setup Membership recurring with CiviCRM native - the code will do some things differently compared to when (we're on the outside - interacting with CiviCRM via the API) you use Webform CiviCRM; I can really only confirm that this is working fine for 4.6 and 4.7 when using an inline payment processor - like our iATS extension; but we've not coded anything specific to iATS about this. Again, we're using the CiviCRM API to create RecurringSeries - it's possible though that the API needs some improving.