diff --git a/app/controllers/payments_controller.rb b/app/controllers/payments_controller.rb index 8d47804..d796ba2 100644 --- a/app/controllers/payments_controller.rb +++ b/app/controllers/payments_controller.rb @@ -11,12 +11,22 @@ module DiscourseSubscriptions def create begin + customer = ::Stripe::Customer.create( + email: current_user.email, + ) + + DiscourseSubscriptions::Customer.create( + user_id: current_user.id, + customer_id: customer[:id], + ) + payment = ::Stripe::PaymentIntent.create( payment_method_types: ['card'], payment_method: params[:payment_method], amount: params[:amount], currency: params[:currency], - confirm: true + confirm: true, + customer: customer[:id], ) render_json_dump payment diff --git a/spec/requests/payments_controller_spec.rb b/spec/requests/payments_controller_spec.rb index 5323d14..f4fdc17 100644 --- a/spec/requests/payments_controller_spec.rb +++ b/spec/requests/payments_controller_spec.rb @@ -25,12 +25,17 @@ module DiscourseSubscriptions describe "create" do it "creates a payment intent" do + ::Stripe::Customer.expects(:create).with( + email: user.email + ).returns(id: 'cus_87653') + ::Stripe::PaymentIntent.expects(:create).with( payment_method_types: ['card'], payment_method: 'pm_123', amount: '999', currency: 'gdp', - confirm: true + confirm: true, + customer: 'cus_87653' ) post "/s/payments.json", params: {