Skip to content

مشکل در تست درگاه لوکال #370

Open

Description

@mohammad79-ch

سلام وقت بخیر
من این کدهارو دارم برای اینکه فقط یک تست ساده پرداخت داشته باشم

Route::get('/pay', function () {
$invoice = (new Invoice)->amount(1000);

return Payment::callbackUrl(url('/callback'))
    ->via('local')
    ->purchase($invoice, function ($driver, $transactionId) {
        // ذخیره transactionId
    })
    ->pay()
    ->render();

});

Route::match(['GET', 'POST'], '/callback', function () {
dd('done');
});

ولی با خطا مواجه میشم و میگه این روتی که استفاده میکنی باید از نوع گت باشه نه پست ... ولی من هیچ روتی به درخواست پست واسش در نظر نگرفتم ... کسی میدونه مشکل کجاس؟؟؟

Activity

  1. khanzadimahdi commented on Oct 6, 2026

    @khanzadimahdi
    Member

    سلام. این خطا معمولا از فرم ریدایرکت میاد، نه از کد شما. اگه ویوهای پکیج رو publish کرده باشید (vendor:publish --tag=payment-views)، فایل resources/views/vendor/payment/redirectForm.blade.php جای فرم درایور local استفاده میشه. اون فرم خودکار با POST به آدرس همون صفحه (/pay) سابمیت میشه و چون /pay فقط GET هست، ارور میگیرید. این فایل رو پاک کنید (یا اسمش رو عوض کنید) و دوباره امتحان کنید.

    یه نکته‌ی دیگه: via() تنظیمات درایور رو ریست می‌کنه، پس callbackUrl رو بعد از via() بذارید.

    مثال کامل:

    use Shetabit\Multipay\Invoice;
    use Shetabit\Multipay\Exceptions\InvalidPaymentException;
    use Shetabit\Payment\Facade\Payment;
    
    Route::get('/pay', function () {
        $invoice = (new Invoice)->amount(1000);
    
        return Payment::via('local')
            ->callbackUrl(url('/callback'))
            ->purchase($invoice, function ($driver, $transactionId) {
                // transactionId رو ذخیره کنید
            })
            ->pay()
            ->render();
    });
    
    // فرم درایور local با POST به این آدرس برمی‌گرده
    Route::post('/callback', function () {
        try {
            $receipt = Payment::via('local')
                ->amount(1000)
                ->transactionId(request('transactionId'))
                ->verify();
    
            return 'پرداخت موفق: '.$receipt->getReferenceId();
        } catch (InvalidPaymentException $e) {
            return 'پرداخت ناموفق: '.$e->getMessage(); // وقتی روی «پرداخت ناموفق» بزنید
        }
    });

    اگه بعد از پاک کردن ویو هم ارور داشتید، متن کامل خطا (که اسم روتش رو میگه) و ورژن پکیج رو بذارید.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions