HandlesPayments.php 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. <?php
  2. namespace App\Services\Client\Traits;
  3. use App\Models\Order;
  4. use App\Models\WalletPaymentRecord;
  5. trait HandlesPayments
  6. {
  7. private function processBalancePayment(Order $order): void
  8. {
  9. $wallet = $order->user->wallet;
  10. // 扣减钱包余额
  11. $wallet->decrement('total_balance', $order->balance_amount);
  12. $wallet->decrement('available_balance', $order->balance_amount);
  13. // 创建钱包交易记录
  14. $this->createWalletPaymentRecord($order, $wallet);
  15. }
  16. private function createWalletPaymentRecord(Order $order, $wallet): void
  17. {
  18. WalletPaymentRecord::create([
  19. 'order_id' => $order->id,
  20. 'wallet_id' => $wallet->id,
  21. 'payment_no' => 'B_'.$order->id,
  22. 'payment_method' => 'balance',
  23. 'total_amount' => $order->balance_amount,
  24. 'actual_amount' => 0,
  25. 'used_wallet_balance' => $order->balance_amount,
  26. 'used_recharge_balance' => 0,
  27. 'state' => 'success',
  28. ]);
  29. }
  30. }