From e39c5638b80bf9b3efb7ec5c8316ec07e698a822 Mon Sep 17 00:00:00 2001 From: Du Peng Date: Tue, 18 Apr 2023 10:07:30 +0200 Subject: [PATCH] (quality) payzen order status --- app/controllers/api/payzen_controller.rb | 5 +++-- .../src/javascript/components/payment/payzen/payzen-form.tsx | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) 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);