Jump to content

Stripe Plus Gateway


Cherry

Recommended Posts

Blesta: Stripe (plus) Gateway
Forked version of the original Stripe gateway which includes updated offsite storage and ACH payments.

 

Some of the feature/bug requests this updated gateway resolves are listed below:

Installation
Download the latest release version from https://github.com/nodecraft/stripe_plus_gateway/releases and then simply upload the stripe_plus_gateway folder to ~/components/gateways/merchant directory on your Blesta installation.
 

Feature changes from Original Gateway
This gateway has been rewritten from the original version which was distributed with Blesta. The major changes are as follows:

  • Only creates one Stripe Customer per Client Contact, rather than one Stripe Customer per Credit Card
  • Only supports offsite card storage, onsite storage is removed
  • Supports ACH payments*
  • Updated Stripe API PHP SDK to version 3.14.2
  • Utilizes Stripe API Version 2016-06-15
  • Adds API key environment selection (test vs live)
  • Updated Currency list to Stripe Documentation
  • Does not utilize Blesta's $client_reference_id lookup to Stripe customer ID. This can cause multiple customer accounts if the user deletes all payment methods. Uses added MySQL table stripe_plus_meta

Pros:

  • Prevents your Stripe account from having "dead" data by attaching one customer per payment source. This enhances your ability to fight fraud.
  • Added security by preventing payment source information from being stored locally

Cons:

  • *ACH Payments by Stripe require "verification" before payments are accepted. Blesta does not provide any methods for this process to take place. You will need to manually verify the bank account with your customer until this is improved or a plugin created.

Roadmap:

  • Add ACH verification if Blesta implements methods on Gateway

Download: https://github.com/nodecraft/stripe_plus_gateway

Issues/feature requests: https://github.com/nodecraft/stripe_plus_gateway/issues
 

Link to comment
Share on other sites

Perfect and nice sharing ...

Things should be in the core gateways .

Why not blesta make all thier plugins , gateways and modules in github , that way other dev can help in improuve/fix/addition .... then blesta team need just to review and merge .

This sounds like a great idea to me! I think this could help speed up a lot of the development and would eliminate the issues with main Blesta upgrades. I personally don't like to try too many 3rd party extensions because they're a bit harder to maintain or switch back to the core configurations.

Link to comment
Share on other sites

Why not blesta make all thier plugins , gateways and modules in github , that way other dev can help in improuve/fix/addition .... then blesta team need just to review and merge .

 

We are considering just that :)

 

Think we would get many pull requests for improvements, added features, etc? The primary challenge is rights based, in that we ship these extensions with Blesta so we cannot merge changes if the author wants to keep the rights to their contribution.

Link to comment
Share on other sites

We are considering just that :)

 

Think we would get many pull requests for improvements, added features, etc? The primary challenge is rights based, in that we ship these extensions with Blesta so we cannot merge changes if the author wants to keep the rights to their contribution.

Is there any sort of disclaimer / agreement that could be made saying that if they contribute, they lose the rights to it and it's Blesta? I would only guess that they could either contribute or just keep making their own version of a given module if they wanted.

Link to comment
Share on other sites

Is there any sort of disclaimer / agreement that could be made saying that if they contribute, they lose the rights to it and it's Blesta? I would only guess that they could either contribute or just keep making their own version of a given module if they wanted.

 

We could make a disclaimer, but I think we may need a signature from the author assigning rights to us for the contribution.

Link to comment
Share on other sites

We could make a disclaimer, but I think we may need a signature from the author assigning rights to us for the contribution.

How others do that ? ...

Normally plugins in github are open source . Then they are mit or apache licence . Or any other licence .

By the way i m the first one will sign this form . Who import for me the improuve and not my rights .

I reserve my rights for my own plugins . And if blesta can improuve then and want to ship them i offer the right to blesta to do it .

Link to comment
Share on other sites

We could make a disclaimer, but I think we may need a signature from the author assigning rights to us for the contribution.

 

What type of license would you be releasing it under?  If you'd consider releasing the modules under the MIT license, this wouldn't be an issue.  Though you'd also be giving up complete control as well.  But if it's just the modules and not the Blesta core, that might not really be an issue since you would need Blesta for the modules anyway.

Link to comment
Share on other sites

(prefix: I am one of the dev members which worked on this module). I'd be much more interested in helping with more 3rd party module implementations such as this one if I could provide it via MIT rather than supplementing the Blesta license directly. We didn't have a problem maintaining the license for this release as we really needed the functionality provided. It's difficult to be enthusiastic about contributing when you lose all claim to the work or license attributed.

Link to comment
Share on other sites

(prefix: I am one of the dev members which worked on this module). I'd be much more interested in helping with more 3rd party module implementations such as this one if I could provide it via MIT rather than supplementing the Blesta license directly. We didn't have a problem maintaining the license for this release as we really needed the functionality provided. It's difficult to be enthusiastic about contributing when you lose all claim to the work or license attributed.

 

Thanks for the feedback, MIT is a possibility for extensions and as suggested should alleviate any issues with us including open source extensions with Blesta. We are looking into this.

Link to comment
Share on other sites

  • 2 weeks later...

@blazedd -

You rock man! Definitely a valuable upgrade and works well! Having to manually verify accounts via the Stripe dashboard is rather drab but it will due for now. I just hope I don't get a lot of requests for ACH accounts ;)

Thanks for putting this together!

Link to comment
Share on other sites

  • 2 weeks later...

We have released version 1.0.2 of this gateway today, which patches a small bug that prevented users from making "credit payments", and depositing funds not applicable to any invoice. We also took the opportunity to update the Stripe PHP SDK version, which patches a few issues. Full changelog: https://github.com/nodecraft/stripe_plus_gateway/blob/master/CHANGELOG.md

 

Download the latest version at https://github.com/nodecraft/stripe_plus_gateway/releases

Link to comment
Share on other sites

  • 1 month later...

A customer reports that the Invoice ID, rather than the Invoice Number is passed along to Stripe. This number is then included on client's credit card statements. It's possible that this issue exists in the official Stripe gateway as well, but I thought I would mention it here in case @Cherry doesn't mind taking a peek. :blesta:

 

Link to comment
Share on other sites

On 6/21/2016 at 0:15 AM, evolvewh said:

Is there any sort of disclaimer / agreement that could be made saying that if they contribute, they lose the rights to it and it's Blesta?

 

That may work for small code modifications to core modules, but doubt many professional developers would do so for modules they created themselves.

It is more common for developers to retain their rights, and even if the client paid to have something custom developed to only grant them a license.

Why?

Well, it prevents the developer getting sued, if he ever does a similar looking project for another customer.

 

Would personally rather see that Blesta stopped using their own propitiatory modules for things like handling payments, and switched to using something more standard like the Omnipay library.

There is no way Blesta or any other billing system can properly test modules for gateways they are not using themselves. So using something used by more projects makes sense.

And yes, that would mean the competition could use the exact same set of modules. But so what, find something else to compete on...

Link to comment
Share on other sites

3 hours ago, Max said:

 

That may work for small code modifications to core modules, but doubt many professional developers would do so for modules they created themselves.

It is more common for developers to retain their rights, and even if the client paid to have something custom developed to only grant them a license.

Why?

Well, it prevents the developer getting sued, if he ever does a similar looking project for another customer.

 

Would personally rather see that Blesta stopped using their own propitiatory modules for things like handling payments, and switched to using something more standard like the Omnipay library.

There is no way Blesta or any other billing system can properly test modules for gateways they are not using themselves. So using something used by more projects makes sense.

And yes, that would mean the competition could use the exact same set of modules. But so what, find something else to compete on...

Agreed about the developer but not with the Omnipay library as that means you have to relay on them and not Blesta who make the software they develop. Even if it is open-source it can get screwed look at that control panel forgot what it's called since the developer took his life when there were some security issues. and zPanel insecure but open-source.

Link to comment
Share on other sites

3 hours ago, Licensecart said:

Agreed about the developer but not with the Omnipay library as that means you have to relay on them and not Blesta who make the software they develop. 

 

Well, Blesta did not write the third-party libraries they are currently using to communicate with say Stripe, Braintree, PagSeguro and Converge either...

And the implementations they did do are kinda minimal.

E.g. the HTML form "buy" buttons for non-merchant gateways like Paypal that Blesta currently spits out, and that the customer has to click on, may technically work.

But properly using the payment provider's API to create a transaction and redirecting the customer automatically would be a lot nicer...

Link to comment
Share on other sites

18 minutes ago, Max said:

 

Well, Blesta did not write the third-party libraries they are currently using to communicate with say Stripe, Braintree, PagSeguro and Converge either...

And the implementations they did do are kinda minimal.

E.g. the HTML form "buy" buttons for non-merchant gateways like Paypal that Blesta currently spits out, and that the customer has to click on, may technically work.

But properly using the payment provider's API to create a transaction and redirecting the customer automatically would be a lot nicer...

True they use the api library provided by the providers but they do everything Blesta needs and callbacks themselves so they know it works fully and it would also be harder to use a third-party library like omnipay, and try and get every payment gateway to tell Blesta what's it's doing. But if people do want omnipay you did a module for it :P But I'm bias as a few know and try and keep third party modules to ones I need and know they maintain it and donate if needed or pay a monthly or one-time price.

Eg: if I sold vps: SolusVM extended would be the only one I'd need. If I sold cPanel shared hosting I have a choice, free cPanel Extended, the paid one or (maybe) ModulesGarden's one if they decided to make their own one again.

Link to comment
Share on other sites

14 minutes ago, Licensecart said:

True they use the api library provided by the providers but they do everything Blesta needs and callbacks themselves so they know it works fully and it would also be harder to use a third-party library like omnipay, and try and get every payment gateway to tell Blesta what's it's doing. But if people do want omnipay you did a module for it :P But I'm bias as a few know and try and keep third party modules to ones I need and know they maintain it and donate if needed or pay a monthly or one-time price.

The libraries provided by providers often leave to be desired, and are not used by other projects.

E.g. they fail to include unit tests that simulate requests and responses.

 

As far as my module goes, it only implemented a small subset of the gateways as a proof of concept.

For things like merchant gateway support, tokenization (think stripe.js), securecode/3dsecure, and recurring payments changes to Blesta core code would be necessary.

Link to comment
Share on other sites

  • 2 weeks later...
On 9/8/2016 at 0:36 PM, Paul said:

A customer reports that the Invoice ID, rather than the Invoice Number is passed along to Stripe. This number is then included on client's credit card statements. It's possible that this issue exists in the official Stripe gateway as well, but I thought I would mention it here in case @Cherry doesn't mind taking a peek. :blesta:

 


Hello @Cherry -

I was the one experiencing this issue with the Stripe Plus plugin and am curious if this could be examined. Or do you prefer that I submit the issue on the repo on Git?

In addition to this, since I had updated to the latest version of this plugin and updated the Stripe SDK, it seems that it caused a disassociation between the gateway and the plugin. Any client of mine who had made previous payments with existing payment accounts have been emailing saying they aren't able to make payments. From the Client Portal, they are seeing this message:

The gateway does not support payments in this manner.

If I try to make the payment from the administration panel in the client's account, I receive this message:

The gateway does not exist or is not enabled.

Now, I had another client remove their credit card information and re-enter it and they were then able to make a payment. Also, a brand new client after the update was able to make a payment as well. My gravest concern here is as more and more clients get added and this happens again it would be extremely bad for business.

Any help or insight into this issue would be much appreciated!

Link to comment
Share on other sites

6 minutes ago, blazedd said:

@viablethought How did you perform the upgrade? For example did you use the upgrade function or did you uninstall & install again?

@blazedd -

I uninstalled and reinstalled the plugin. I wasn't aware there was an "upgrade" function from within the panel since it was third party code being hosted on Git.

Link to comment
Share on other sites

4 minutes ago, viablethought said:

@blazedd -

I uninstalled and reinstalled the plugin. I wasn't aware there was an "upgrade" function from within the panel since it was third party code being hosted on Git.

@viablethought So, that's 100% what caused the desync for your users. One of the "problems" with a plugin system for any modular system like Blesta, Wordpress, etc is that there has to be a cleanup function which is run on uninstall. This prevents plugins from modifying your database permanently, even after you uninstall the plugin (long term or short term). In our system if it's the last company on your blesta install to have had the gateway: it will delete the database where its stores the stripe customer connections.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...