diff --git a/app/controllers/api/payzen_controller.rb b/app/controllers/api/payzen_controller.rb index 14eaf310b..3583ac12a 100644 --- a/app/controllers/api/payzen_controller.rb +++ b/app/controllers/api/payzen_controller.rb @@ -72,7 +72,7 @@ class API::PayzenController < API::PaymentsController cart = shopping_cart - if order['answer']['transactions'].any? { |transaction| transaction['status'] == 'PAID' } + if order['answer']['transactions'].all? { |transaction| transaction['status'] == 'PAID' } render on_payment_success(params[:order_id], cart) else render json: order['answer'], status: :unprocessable_entity @@ -86,10 +86,11 @@ class API::PayzenController < API::PaymentsController client = PayZen::Transaction.new transaction = client.get(params[:transaction_uuid]) + order = PayZen::Order.new.get(params[:order_id]) cart = shopping_cart - if transaction['answer']['status'] == 'PAID' + if transaction['answer']['status'] == 'PAID' && order['answer']['transactions'].all? { |t| t['status'] == 'PAID' } render on_payment_success(params[:order_id], cart) else render json: transaction['answer'], status: :unprocessable_entity diff --git a/app/frontend/src/javascript/components/payment/payzen/payzen-form.tsx b/app/frontend/src/javascript/components/payment/payzen/payzen-form.tsx index 541880808..7f7a6223b 100644 --- a/app/frontend/src/javascript/components/payment/payzen/payzen-form.tsx +++ b/app/frontend/src/javascript/components/payment/payzen/payzen-form.tsx @@ -75,7 +75,7 @@ export const PayzenForm: React.FC = ({ onSubmit, onSuccess, onE if (updateCard) return onSuccess(null); const transaction = event.clientAnswer.transactions[0]; - if (event.clientAnswer.orderStatus === 'PAID') { + if (event.clientAnswer.orderStatus === 'PAID' && transaction?.status === 'PAID') { confirmPayment(event, transaction).then((confirmation) => { PayZenKR.current.removeForms().then(() => { onSuccess(confirmation);