Monetizo mis foros mediante un plugin de Discourse que escribí para aceptar pagos a través de Stripe Checkout (versión 1).
Esto fue sencillo, ya que Stripe gestionaba todo el flujo de pagos en el lado del cliente (JavaScript), con una única devolución de llamada cuando el pago se completaba o fallaba.
Con las nuevas regulaciones de la UE que se avecinan, Stripe ahora exige la implementación de su Checkout versión 2, o “Payment Intents”, con un plazo de transición fijado para septiembre de 2019.
Esto es problemático porque, por lo que puedo ver, ambas APIs utilizan un flujo de trabajo más complejo, que requiere que el consumidor consulte su API para esperar la finalización del pago o utilice webhooks.
Estoy muy nervioso por cambiar mi plugin porque:
No soy un desarrollador muy experimentado en Ruby / Ember (copié la mayor parte del código de un plugin existente para crear el mío).
No sé si la API de plugins de Discourse proporciona un mecanismo adecuado para implementar este tipo de consultas, donde el resultado final es muy importante.
¿Alguien tiene experiencia con a) la integración de Stripe V2 Checkout o Payment Intents con Discourse, o b) la gestión de consultas del servidor mediante un plugin de Discourse?
Traceback (most recent call last):
/home/pfaffman/src/discourse/bin/unicorn: Bootsnap::LoadPathCache::FallbackScan
34: from /home/pfaffman/src/discourse/bin/unicorn:49:in `<main>'
33: from /home/pfaffman/src/discourse/bin/unicorn:49:in `load'
32: from /home/pfaffman/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/unicorn-5.5.1/bin/unicorn:128:in `<top (required)>'
31: from /home/pfaffman/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:141:in `start'
30: from /home/pfaffman/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:794:in `build_app!'
29: from /home/pfaffman/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/unicorn-5.5.1/lib/unicorn.rb:54:in
`block in builder'
28: from /home/pfaffman/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/unicorn-5.5.1/lib/unicorn.rb:54:in
`eval'
27: from config.ru:1:in `<main>'
26: from config.ru:1:in `new'
25: from /home/pfaffman/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/builder.rb:55:in `initialize'
24: from /home/pfaffman/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/rack-2.0.7/lib/rack/builder.rb:55:in `instance_eval'
23: from config.ru:7:in `block in <main>'
22: from config.ru:7:in `require'
21: from /home/pfaffman/src/discourse/config/environment.rb:4:in `<top (required)>'
20: from /home/pfaffman/src/discourse/config/environment.rb:4:in `require'
19: from /home/pfaffman/src/discourse/config/application.rb:57:in `<top (required)>'
18: from /home/pfaffman/src/discourse/config/application.rb:58:in `<module:Discourse>'
17: from /home/pfaffman/src/discourse/config/application.rb:261:in `<class:Application>'
16: from lib/discourse.rb:168:in `activate_plugins!'
15: from lib/discourse.rb:168:in `each'
14: from lib/discourse.rb:171:in `block in activate_plugins!'
13: from /home/pfaffman/src/discourse/lib/plugin/instance.rb:490:in `activate!'
12: from /home/pfaffman/src/discourse/lib/plugin/instance.rb:490:in `instance_eval'
11: from /home/pfaffman/src/discourse/plugins/lc-billing/plugin.rb:8:in `activate!'
10: from /home/pfaffman/src/discourse/lib/plugin/instance.rb:564:in `gem'
9: from /home/pfaffman/src/discourse/lib/plugin_gem.rb:22:in `load'
8: from /home/pfaffman/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
7: from /home/pfaffman/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'
6: from /home/pfaffman/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `block in require'
5: from /home/pfaffman/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:26:in `require'
4: from /home/pfaffman/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:40:in `rescue in require'
3: from /home/pfaffman/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
2: from /home/pfaffman/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/loaded_features_index.rb:89:in `register'
1: from /home/pfaffman/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
/home/pfaffman/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/bootsnap-1.4.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require': cannot load such file -- net-http-persistent (LoadError)
@ChrisBeach encantado de ayudar. Si pudieras crear una rama en el plugin y ponernos en marcha con lo que logres averiguar, yo trabajaré en ello y te daré algunas indicaciones específicas para asegurarnos de que lo terminemos antes de la fecha límite.