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:
parent
e7d5cbfb2e
commit
5030f5e1bc
@ -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];
|
||||
};
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user