drastik / com.drastikbydesign.stripe

CMS Independent Stripe payment processor for CiviCRM 4.x
Other
35 stars 48 forks source link

civicrm_stripe not working with webform_civicrm #42

Open rootwork opened 10 years ago

rootwork commented 10 years ago

Drupal: 7.28 CiviCRM: 4.4.5 civicrm_stripe: 4.4-1.8 webform: 7.x-4.0-rc3 webform_civicrm: 7.x-4.6+4-dev

I've got civicrm_stripe working fine with regular CiviCRM contribution (and membership) pages. However, it doesn't seem to be working with webform_civicrm, which lets you use webforms for CiviCRM forms (including contribution and membership forms).

When I set up a form using Stripe as the only payment option, I arrive on the second page where payment options are selected, but there are no billing fields. Weirdly, I can submit the form, and Civi acts as if the amount has been paid, even though it hasn't.

In this scenario, I get these warnings, though I think they might just be because the server is on PHP 5.4:

Strict warning: Declaration of CRM_Core_Payment_Stripe::singleton() should be compatible with & CRM_Core_Payment::singleton($mode, &$paymentProcessor, &$paymentForm = NULL, $force = false) in CRM_Core_Payment::singleton() (line 112 of /home/members/ivanb/sites/pjsa.rootwork.org/web/sites/all/modules/civicrm/CRM/Core/Payment.php).

Strict warning: Accessing static property CRM_Core_Payment_Stripe::$_mode as non static in CRM_Core_Payment_Stripe->__construct() (line 32 of /home/members/ivanb/sites/pjsa.rootwork.org/web/sites/default/files/civicrm/civicrm_extensions/com.drastikbydesign.stripe/CRM/Core/Payment/Stripe.php).

When I set up a form using Stripe as one of multiple options, the billing fields are successfully displayed when Stripe is chosen. But when I fill them out and submit, I get both the warnings above as well as this cryptic message:

Transaction failed. Please verify all billing fields are correct.

It does not indicate any specific fields in error (as it does if I just leave them blank) and as transactions succeed when I use the same billing information on a regular CiviCRM page, I think the reason for the transaction failure lies elsewhere.

So perhaps this is a known issue: Does civicrm_stripe work with webform_civicrm? If not, is there information I can provide to help troubleshoot it? I'm happy to kick this over to webform_civicrm if the issue is actually on that side of things.

drastik commented 10 years ago

Are you using the github version, not the one available from Civi built-in extension installer?

The singleton issue was fixed in the last commit on here. Not a 5.4 issue, but a change to Civi's payment classes.

rootwork commented 10 years ago

The github version. But after some investigation of the webform_civicrm side of things, it sounds like the problem is on that end:

https://drupal.org/node/2225627

So I think that's probably the source of the problem. Hoping to work with that project to get it working in the near future. Unless you've worked on any implementations with webform_civicrm already? (It really does make for drastically better contribution/membership/events forms.)

drastik commented 9 years ago

Might give this a shot again with latest (4.5-dev) branch, even if your Civi is still 4.4.x.

I'm still hammering on other features, would be awesome if you were able to test webform_civicrm again! :+1:

Upperholme commented 9 years ago

Using the 4.5-dev version of this extension (as of Feb 4 2015), and the dev version of Coleman's webform_civicrm integration on D7 and CiviCRM 4.5.5 no billing fields are getting displayed on my webform. In the CiviCRM tab of the webform I have Stripe selected as my payment processor, and 'Test mode' is selected. On the webform my JS console reports : "You are using Stripe.js in live mode over an insecure connection. This is considered unsafe. Please conduct live requests only on sites served over https. For more info, see https://stripe.com/help/ssl" which suggests that it is not respecting the 'test mode' setting. On the same test site everything appears to work perfectly when using a Civi contribution page. Are there any config issues that I'm missing in order to get this working? Or am i just jumping the gun?

Upperholme commented 9 years ago

Update on this: Looking at the HTML code, the div id="billing-payment-block" is set to display:none which clearly isn't helping. It's at the element level. Where is that CSS being set, and why?

Upperholme commented 9 years ago

Further update: I've spotted the problem. User error (again). The table - table#wf-crm-billing-items had been hidden via CSS. If the table is displayed, the billing payment block appears.