1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-02-20 14:54:15 +01:00

fix bug: user cant pay order by wallet

This commit is contained in:
Du Peng 2022-08-26 13:37:23 +02:00
parent e7d5cbfb2e
commit 5030f5e1bc
3 changed files with 17 additions and 4 deletions

View File

@ -90,6 +90,7 @@ export const LocalPaymentForm: React.FC<GatewayFormProps> = ({ onSubmit, onSucce
let res;
if (order) {
res = await CheckoutAPI.payment(order.token);
res = res.order;
} else {
res = await LocalPaymentAPI.confirmPayment(cart);
}
@ -120,6 +121,9 @@ export const LocalPaymentForm: React.FC<GatewayFormProps> = ({ onSubmit, onSucce
* Get the type of the main item in the cart compile
*/
const mainItemType = (): string => {
if (order) {
return '';
}
return Object.keys(cart.items[0])[0];
};

View File

@ -4,13 +4,17 @@
class Checkout::PaymentService
require 'pay_zen/helper'
require 'stripe/helper'
include Payments::PaymentConcern
def payment(order, operator, payment_id = '')
raise Cart::OutStockError unless Orders::OrderService.new.in_stock?(order, 'external')
raise Cart::InactiveProductError unless Orders::OrderService.new.all_products_is_active?(order)
if operator.member?
amount = debit_amount(order)
if operator.privileged? || amount.zero?
Payments::LocalService.new.payment(order)
elsif operator.member?
if Stripe::Helper.enabled?
Payments::StripeService.new.payment(order, payment_id)
elsif PayZen::Helper.enabled?
@ -18,8 +22,6 @@ class Checkout::PaymentService
else
raise Error('Bad gateway or online payment is disabled')
end
elsif operator.privileged?
Payments::LocalService.new.payment(order)
end
end

View File

@ -18,10 +18,17 @@ module Payments::PaymentConcern
def payment_success(order, payment_method = '')
ActiveRecord::Base.transaction do
WalletService.debit_user_wallet(order, order.statistic_profile.user)
order.update(state: 'in_progress', payment_state: 'paid', payment_method: payment_method)
order.payment_method = if order.total == order.wallet_amount
'wallet'
else
payment_method
end
order.state = 'in_progress'
order.payment_state = 'paid'
order.order_items.each do |item|
ProductService.update_stock(item.orderable, 'external', 'sold', -item.quantity, item.id)
end
order.save
order.reload
end
end