أقوم بربح الأرباح من منتدياتي باستخدام إضافة 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؟
يبدو أنك ستحتاج إلى طلب التبرعات لتحديث إضافة التبرعات الخاصة بك.
أنا أعمل بنفسي على إضافة Stripe. وأرى أنها v1.
تعديل: أوه!، لكن ربما أكون على الإصدار v3: (في plugin.rb):
register_html_builder('server:before-head-close') do
"<script src='https://js.stripe.com/v3/'></script>"
end
أنا متأكد تمامًا أنه بالنسبة لشخص مثل @angus أو @joebuhlig، فإن الاستعلام واستخدام الويب-هوك ليسا أمرًا كبيرًا، لكنني أخشى أنني في نفس الموقف الذي أنت فيه.
لقد حاولت تحديث مكتبة Stripe إلى أحدث إصدار على النحو التالي:
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 يسعدني مساعدتك. إذا أمكنك إنشاء فرع في الإضافة والبدء في إخبارنا بما يمكنك استنتاجه، فسأعمل معك وأقدم لك بعض التوجيهات المحددة للتأكد من إكمال المهمة قبل الموعد النهائي.