diff --git a/app/Helpers/helpers.php b/app/Helpers/helpers.php index b380075..6dbf5d7 100644 --- a/app/Helpers/helpers.php +++ b/app/Helpers/helpers.php @@ -550,6 +550,16 @@ function syncSberWithAzatAPI(SberPaymentOrderItem $orderItem): array ]; } + if (! isset($response['authRefNum'])) { + warn('missing-authRefNum', $onlinePaymentResource->orderId); + ignoreSberPayment('missing-authRefNum', $orderItem); + + return [ + 'error' => 'authRefNum missing', + 'type' => 'modal', + ]; + } + $systemRawResponse = syncWithBankSystem( online_payment_order_uuid: $onlinePaymentResource->orderId, bank_unique_code: $sberPaymentOrder->branch->unique_code, @@ -665,7 +675,7 @@ function syncVisaWithAzatAPI(VisaMasterPaymentOrderItem $orderItem): array if (! isset($response['authRefNum'])) { warn('missing-authRefNum', $onlinePaymentResource->orderId); - ignorePayment('missing-authRefNum', $orderItem); + ignoreVisaPayment('missing-authRefNum', $orderItem); return [ 'error' => 'authRefNum missing', @@ -729,7 +739,7 @@ function warn($message, $content) { ]); } -function ignorePayment($message, $item) { +function ignoreVisaPayment($message, $item) { DB::table('ignore_visa_payments')->insert([ 'message' => $message, 'payment_id' => $item->id, @@ -737,3 +747,12 @@ function ignorePayment($message, $item) { 'updated_at' => now(), ]); } + +function ignoreSberPayment($message, $item) { + DB::table('ignore_sber_payments')->insert([ + 'message' => $message, + 'payment_id' => $item->id, + 'created_at' => now(), + 'updated_at' => now(), + ]); +} diff --git a/app/Jobs/SendSberToSystem.php b/app/Jobs/SendSberToSystem.php index 56616aa..cdc389d 100644 --- a/app/Jobs/SendSberToSystem.php +++ b/app/Jobs/SendSberToSystem.php @@ -8,6 +8,7 @@ use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; class SendSberToSystem implements ShouldQueue @@ -34,23 +35,28 @@ class SendSberToSystem implements ShouldQueue */ public function handle(): void { - $orderItem = SberPaymentOrderItem::query() + $ignore = DB::table('ignore_sber_payments')->pluck('payment_id'); + + $orderItems = SberPaymentOrderItem::query() ->where('paid', true) ->where('synced_with_system', false) ->whereDate('created_at', '>', '2025-09-05') - ->first(); + ->whereIntegerNotInRaw('id', $ignore) + ->limit(2) + ->get() + ->each(function ($orderItem) { + if (! $orderItem) { + return; + } - if (! $orderItem) { - return; - } + $result = syncSberWithAzatAPI($orderItem); - $result = syncSberWithAzatAPI($orderItem); - - if (isset($result['error'])) { - Log::channel('sber_job')->error(json_encode([ - 'error' => $result['error'], - 'orderItem' => $orderItem, - ])); - } + if (isset($result['error'])) { + Log::channel('sber_job')->error(json_encode([ + 'error' => $result['error'], + 'orderItem' => $orderItem, + ])); + } + }); } } diff --git a/app/Models/IgnoreSberPayment.php b/app/Models/IgnoreSberPayment.php new file mode 100644 index 0000000..f5ab8bf --- /dev/null +++ b/app/Models/IgnoreSberPayment.php @@ -0,0 +1,11 @@ +id(); + $table->string('message')->index(); + $table->unsignedBigInteger('payment_id')->index(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('ignore_sber_payments'); + } +};