Impossible d'ajouter une formule d'abonnement

Après une install toute fraîche de Fabmanager sur un environnement docker-compose sous debian 9 je n’arrive pas à créer de formule d’abonnement. L’erreur retournée est

L’abonnement n’a pas pu être créé. Veuillez réessayer

Dans config/env STRIPE_API_KEY et STRIPE_PUBLISHABLE_KEY semblent bien configurées car au niveau des logs de mon dashboard stripe je vois bien les customers créés avec un status 200 OK.

Par contre j’ai des 400 ERR POST /v1/plans avec comme détail de réponse :

{

« error »: {

« type »: « invalid_request_error »,

« message »: « Received unknown parameter: name »,

« param »: « name »

}

}

L’API stripe utilisée est en version 2018-02-06 et d’après le changelog https://stripe.com/docs/upgrades?since=2018-02-06#api-changelog , depuis la version 2018-02-05 :

Each plan object is now linked to a product object with type=service. The plan object fields statement_descriptor and name attributes have been moved to product objects. Creating a plan now requires passing a product attribute to POST /v1/plans.

N’ayant aucune expérience avec Fabmanager avant aujourd’hui, et avant de faire un rapport de bug sur le github, peut être que vous pouvez me confirmer que tout cela a un lien direct et que ça ne peut provenir d’une erreur de config de l’application ?

Merci par avance

@lolivz Seems that due to changes in the Stripe API, you need to update the product field in the file
app/models/plan.rb:

From:

  def create_stripe_plan
    stripe_plan = Stripe::Plan.create(
      amount: amount,
      interval: interval,
      interval_count: interval_count,
      name: "#{base_name} - #{group.name} - #{interval}",
      currency: Rails.application.secrets.stripe_currency,
      id: "#{base_name.parameterize}-#{group.slug}-#{interval}-#{DateTime.now.to_s(:number)}"
    )
    update_columns(stp_plan_id: stripe_plan.id, name: stripe_plan.name)
    stripe_plan
  end

To:

  def create_stripe_plan
    stripe_plan = Stripe::Plan.create(
      amount: amount,
      interval: interval,
      interval_count: interval_count,
      product: { name: "#{base_name} - #{group.name} - #{interval}" },
      currency: Rails.application.secrets.stripe_currency,
      id: "#{base_name.parameterize}-#{group.slug}-#{interval}-#{DateTime.now.to_s(:number)}"
    )
    update_columns(stp_plan_id: stripe_plan.id, name: stripe_plan.product)
    stripe_plan
  end

Do you want a PR for this, @Sylvain ?

Thank you @akaiiro you confirm my thoughts.

I have no experience with docker, it’s the first time I manage with, I have to learn now how I can edit and save modifications to this file.

I made a first try by running this command :

docker exec -it fabmanager_fabmanager_1 bash

then, after installing vim I can edit app/models/plan.rb but it seems the modification is not applied after restart…

I will search in docker documentation how to do this by the best method but If someone can explain me… :wink:

Hi both,

Thanks for noticing this. When we develop fab-manager, we were using stripe API version 2015-10-16 and we’ve never updated from this date. I’ve started to look around in stripe but it does not seems possible to create an API account with a previous version, so this is getting weird that nothing has ever break from now.
I will consider the issue with the rest of the team but maybe we need a larger upgrading task that just a workaround for this specific issue.
I’ll keep you updated.

Bonjour

N’ayant aucun expérience avec docker jusque là je ne suis pas sûr de que ma manip soit la meilleure mais il me semble avoir bien modifié le fichier app/models/plan.rb comme indiqué par akaiiro, dans le conteneur.
Par contre j’obtiens toujours la même erreur dans fabmanager et les logs stripe…
A 15 jours près ça passait :slight_smile:

@lolivz It may be possible to use the API version that @Sylvain mentions if you set it in the Stripe initializer (which resides in config/initializers/stripe.rb )

require "stripe"

Stripe.api_key = Rails.application.secrets.stripe_api_key
Stripe.api_version = "2015-10-16"

I used the public Stripe keys to test the behavior but there was no error with those. Maybe it is because API new accounts are being set to the latest Stripe API version.

I’ll check it now with my Stripe test keys, that should be bound to API v 2018-02-05, to see if setting the version in the initializer alleviates the problem.

I was able to create a new plan with a recent Stripe account by defining the Stripe API version as explained in the post above.

cc @lolivz

1 « J'aime »

Until now the way I modified my files was not right, now it works !
Thank you very much @akaiiro, it works perfectly !!!

1 « J'aime »