From ad5961a4c5ddb606621bf70c8a48747b62dda5bf Mon Sep 17 00:00:00 2001
From: Rimian Perkins
Date: Sat, 14 Sep 2019 20:54:13 +1000
Subject: [PATCH] show the payment on the thankyou page
---
app/controllers/patrons_controller.rb | 9 ++++++---
.../discourse/routes/patrons-show.js.es6 | 7 +++++++
.../templates/admin/plugins-discourse-patrons.hbs | 6 +++++-
.../discourse/templates/patrons/show.hbs | 15 +++++++++++++++
config/locales/client.en.yml | 2 +-
.../discourse_patrons/patrons_controller_spec.rb | 6 ++++++
6 files changed, 40 insertions(+), 5 deletions(-)
create mode 100644 assets/javascripts/discourse/routes/patrons-show.js.es6
diff --git a/app/controllers/patrons_controller.rb b/app/controllers/patrons_controller.rb
index 0b4d1ba..f1ea435 100644
--- a/app/controllers/patrons_controller.rb
+++ b/app/controllers/patrons_controller.rb
@@ -3,6 +3,7 @@
module DiscoursePatrons
class PatronsController < ::ApplicationController
skip_before_action :verify_authenticity_token, only: [:create]
+ before_action :set_api_key
def index
result = { email: '' }
@@ -15,14 +16,12 @@ module DiscoursePatrons
end
def show
- result = { }
+ result = Stripe::PaymentIntent.retrieve(params[:pid])
render json: result
end
def create
- ::Stripe.api_key = SiteSetting.discourse_patrons_secret_key
-
begin
response = ::Stripe::PaymentIntent.create(
@@ -55,6 +54,10 @@ module DiscoursePatrons
private
+ def set_api_key
+ ::Stripe.api_key = SiteSetting.discourse_patrons_secret_key
+ end
+
def param_currency_to_number
params[:amount].to_s.sub('.', '').to_i
end
diff --git a/assets/javascripts/discourse/routes/patrons-show.js.es6 b/assets/javascripts/discourse/routes/patrons-show.js.es6
new file mode 100644
index 0000000..36794bb
--- /dev/null
+++ b/assets/javascripts/discourse/routes/patrons-show.js.es6
@@ -0,0 +1,7 @@
+import { ajax } from "discourse/lib/ajax";
+
+export default Discourse.Route.extend({
+ model(params) {
+ return ajax(`/patrons/${params.pid}`, { method: "get" });
+ }
+});
diff --git a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons.hbs b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons.hbs
index bd931fe..805b53d 100644
--- a/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons.hbs
+++ b/assets/javascripts/discourse/templates/admin/plugins-discourse-patrons.hbs
@@ -20,7 +20,11 @@
{{payment.username}}
{{/link-to}}
- {{{stripe-payment-link payment}}} |
+
+ {{#link-to "patrons.show" payment.payment_intent_id}}
+ {{{payment.payment_intent_id}}}
+ {{/link-to}}
+ |
{{payment.receipt_email}} |
{{{format-duration payment.created_at_age}}} |
{{payment.amount_currency}} |
diff --git a/assets/javascripts/discourse/templates/patrons/show.hbs b/assets/javascripts/discourse/templates/patrons/show.hbs
index 4d578e4..65bb8df 100644
--- a/assets/javascripts/discourse/templates/patrons/show.hbs
+++ b/assets/javascripts/discourse/templates/patrons/show.hbs
@@ -6,6 +6,21 @@
{{cook-text siteSettings.discourse_patrons_success_page}}
+{{#if model}}
+
+
+ Payment ID |
+ {{model.id}} |
+
+
+ Amount |
+ {{model.amount}} |
+
+
+{{/if}}
+
+
+
{{#d-button action="goBack" class="btn btn-primary"}}
{{i18n 'discourse_patrons.buttons.success'}}
{{/d-button}}
diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml
index 551602e..afd8302 100644
--- a/config/locales/client.en.yml
+++ b/config/locales/client.en.yml
@@ -40,6 +40,6 @@ en:
table:
head:
user: User
- payment_intent: Payment Intent
+ payment_intent: Payment ID
receipt_email: Receipt Email
amount: Amount
diff --git a/spec/controllers/discourse_patrons/patrons_controller_spec.rb b/spec/controllers/discourse_patrons/patrons_controller_spec.rb
index 3843b51..35dcf1c 100644
--- a/spec/controllers/discourse_patrons/patrons_controller_spec.rb
+++ b/spec/controllers/discourse_patrons/patrons_controller_spec.rb
@@ -29,9 +29,15 @@ module DiscoursePatrons
describe 'show' do
it 'responds ok' do
+ ::Stripe::PaymentIntent.expects(:retrieve)
get :show, params: { pid: '123' }, format: :json
expect(response).to have_http_status(200)
end
+
+ it 'requests the payment intent' do
+ ::Stripe::PaymentIntent.expects(:retrieve).with('abc-1234')
+ get :show, params: { pid: 'abc-1234' }, format: :json
+ end
end
describe 'create' do