| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | 
							- <?php
 
- namespace App\Services;
 
- use App\Models\Payment;
 
- use App\Models\PaymentCallback;
 
- use App\Notifications\PaymentReceived;
 
- use Str;
 
- class PaymentService
 
- {
 
-     final public function createPayment(int $uid, int $oid, float|int $amount): Payment
 
-     {
 
-         $payment = new Payment();
 
-         $payment->trade_no = Str::random(8);
 
-         $payment->user_id = $uid;
 
-         $payment->order_id = $oid;
 
-         $payment->amount = $amount;
 
-         $payment->save();
 
-         return $payment;
 
-     }
 
-     /**
 
-      * @param  string  $trade_no  本地订单号
 
-      * @param  string  $out_trade_no  外部订单号
 
-      * @param  float|int  $amount  交易金额
 
-      */
 
-     final protected function createPaymentCallback(string $trade_no, string $out_trade_no, float|int $amount): int
 
-     {
 
-         $log = new PaymentCallback();
 
-         $log->trade_no = $trade_no;
 
-         $log->out_trade_no = $out_trade_no;
 
-         $log->amount = $amount;
 
-         return $log->save();
 
-     }
 
-     protected function paymentReceived(string $tradeNo): bool
 
-     {
 
-         $payment = Payment::whereTradeNo($tradeNo)->with('order')->first();
 
-         if ($payment) {
 
-             $ret = $payment->order->complete();
 
-             if ($ret) {
 
-                 $payment->user->notify(new PaymentReceived($payment->order->sn, $payment->amount_tag));
 
-             }
 
-             return $ret;
 
-         }
 
-         return false;
 
-     }
 
- }
 
 
  |