هل تقوم بالدمج مع Stripe Checkout الجديد أو إصدار Stripe Payment Intents الجديد؟

أقوم بربح الأرباح من منتدياتي باستخدام إضافة Discourse قمت بكتابتها لقبول المدفوعات عبر Stripe Checkout (الإصدار 1).

كان ذلك مباشرًا لأن Stripe تولت سير عمل الدفع بالكامل على جانب العميل (باستخدام JavaScript)، مع استدعاء واحد عند نجاح أو فشل الدفع.

مع الوائح الأوروبية الجديدة الوشيكة، تفرض Stripe الآن تنفيذ إصدارها الثاني من Checkout، أو ما يُعرف بـ “Payment Intents”، مع موعد نهائي للانتقال في سبتمبر 2019.

هذا يمثل مشكلة لأن (بحسب ما أستطيع رؤيته)، كلا هذين الـ API يستخدمان سير عمل أكثر تعقيدًا، يتطلب من المستهلك استجواب الـ API الخاص بهم لانتظار اكتمال الدفع، أو استخدام web-hooks.

أنا قلق جدًا من تغيير إضافتي لأن:

  • أنا مطور Ruby / Ember غير خبير (لقد استخرجت معظم الكود من إضافة موجودة لإنشاء إضافتي)
  • لا أعرف ما إذا كانت واجهة برمجة تطبيقات إضافة Discourse توفر آلية مناسبة لتنفيذ هذا النوع من الاستجواب (حيث تكون النتيجة النهائية مهمة جدًا)

هل لدى أي شخص خبرة في: أ) دمج Stripe V2 Checkout أو Payment Intents مع Discourse، أو ب) التعامل مع استجواب الخادم عبر إضافة Discourse؟

شكرًا مقدّمًا :+1:

يبدو أنك ستحتاج إلى طلب التبرعات لتحديث إضافة التبرعات الخاصة بك. :slight_smile:

أنا أعمل بنفسي على إضافة Stripe. وأرى أنها v1.

تعديل: أوه!، لكن ربما أكون على الإصدار v3: (في plugin.rb):

register_html_builder('server:before-head-close') do
  "<script src='https://js.stripe.com/v3/'></script>"
end

أنا متأكد تمامًا أنه بالنسبة لشخص مثل @angus أو @joebuhlig، فإن الاستعلام واستخدام الويب-هوك ليسا أمرًا كبيرًا، لكنني أخشى أنني في نفس الموقف الذي أنت فيه. :frowning:

لقد حاولت تحديث مكتبة Stripe إلى أحدث إصدار على النحو التالي:

gem 'net-http-persistent', '3.0.1'
gem 'stripe', '4.21.2'

وفشلت العملية على النحو التالي:

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)

تستخدم procourse memberships الإصدار 3.28.0، لكنها لا تزال تتصل بـ API الإصدار v1.

تعديل: لا أرى API v2. يبدو أن API upgrades | Stripe Documentation لا يزال يعرض v1. لقد قمت بالترقية إلى أحدث إصدار وفقًا لـ Stripe Login | Sign in to the Stripe Dashboard

@ChrisBeach يسعدني مساعدتك. إذا أمكنك إنشاء فرع في الإضافة والبدء في إخبارنا بما يمكنك استنتاجه، فسأعمل معك وأقدم لك بعض التوجيهات المحددة للتأكد من إكمال المهمة قبل الموعد النهائي.

@أنغوس، هذه عرض لطيف أقدره حقاً. سأخبرك عندما أبدأ العمل على التكامل.

تم تحديث صخرة Stripe بنجاح على الجهاز المحلي على النحو التالي:

gem 'net-http-persistent', '3.0.1', {require: false}
gem 'stripe', '4.21.3'

ثم /discourse$ bundle exec rake db:migrate

أخبار جيدة: لقد خفّض الضغط بشأن ترقية تكامل دفع Stripe (على الأقل في المملكة المتحدة):

أنا مهتم بتجربة هذه الإضافة. هل تعمل مع أحدث إصدار من Discourse 2.4؟ شكرًا!

نعم، أنا أستخدمه حاليًا في منتداي https://se23.life