mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-20 04:59:16 +00:00
Translate Taler payment status to error message
This commit is contained in:
@@ -56,8 +56,9 @@ module Spree
|
||||
taler_order = client.fetch_order(payment.response_code)
|
||||
status = taler_order["order_status"]
|
||||
success = (status == "paid")
|
||||
message = I18n.t(status, default: status, scope: "taler.order_status")
|
||||
|
||||
ActiveMerchant::Billing::Response.new(success, status)
|
||||
ActiveMerchant::Billing::Response.new(success, message)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -288,6 +288,9 @@ en:
|
||||
success_code:
|
||||
disconnected: "Stripe account disconnected."
|
||||
|
||||
taler:
|
||||
order_status:
|
||||
claimed: "The payment request expired. Please try again."
|
||||
activemodel:
|
||||
errors:
|
||||
messages:
|
||||
|
||||
@@ -5,20 +5,48 @@ require 'spec_helper'
|
||||
RSpec.describe Spree::PaymentMethod::Taler do
|
||||
subject(:taler) {
|
||||
Spree::PaymentMethod::Taler.new(
|
||||
preferred_backend_url: "https://backend.demo.taler.net/instances/sandbox",
|
||||
preferred_backend_url: backend_url,
|
||||
preferred_api_key: "sandbox",
|
||||
)
|
||||
}
|
||||
let(:backend_url) { "https://backend.demo.taler.net/instances/sandbox" }
|
||||
|
||||
describe "#external_payment_url", vcr: true do
|
||||
it "retrieves a URL to pay at and stores it on the payment record" do
|
||||
order = create(:order_ready_for_confirmation, payment_method: taler)
|
||||
url = subject.external_payment_url(order:)
|
||||
expect(url).to match %r{\Ahttps://backend.demo.taler.net/instances/sandb}
|
||||
expect(url).to start_with backend_url
|
||||
|
||||
payment = order.payments.last.reload
|
||||
expect(payment.response_code).to match "2026.022-0284X4GE8WKMJ"
|
||||
expect(payment.redirect_auth_url).to eq url
|
||||
end
|
||||
end
|
||||
|
||||
describe "#purchase" do
|
||||
let(:money) { 100 }
|
||||
let(:source) { taler }
|
||||
let(:payment) { build(:payment, response_code: "taler-order-7") }
|
||||
let(:order_url) { "#{backend_url}/private/orders/taler-order-7" }
|
||||
|
||||
it "returns an ActiveMerchant response" do
|
||||
order_status = "paid"
|
||||
stub_request(:get, order_url).to_return(body: { order_status: }.to_json)
|
||||
|
||||
response = taler.purchase(nil, nil, payment:)
|
||||
|
||||
expect(response.success?).to eq true
|
||||
expect(response.message).to eq "paid"
|
||||
end
|
||||
|
||||
it "translates error messages" do
|
||||
order_status = "claimed"
|
||||
stub_request(:get, order_url).to_return(body: { order_status: }.to_json)
|
||||
|
||||
response = taler.purchase(nil, nil, payment:)
|
||||
|
||||
expect(response.success?).to eq false
|
||||
expect(response.message).to eq "The payment request expired. Please try again."
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user