Mohammad Mirzavand
4 سال پیش توسط Mohammad Mirzavand مطرح شد
11 پاسخ

اتصال به چندین درگاه در Shetabit

سلام وقت بخیر
یه موضوع دیگه این که اگر بخوایم از چند درگاه برای پرداخت استفاده کنیم چجوری میتونیم فراخوانی کنیم؟؟


                                        return Payment::callbackUrl(url('/callback/from/bank/?price='.(intval($ttt)*10).'&order='.$post->id.'&wallet=0&port=MELLAT'))->purchase(
                                        (new Invoice)->amount($amount),
                                        function($driver, $transactionId) use ($amount) {

                                                    $post->transactionId = $transactionId;
                                                    $post->save();

                                        }
                                    )->pay();

@khanzadimahdi


ثبت پرسش جدید
mahdi khanzadi
تخصص : Software engineer
@khanzadimahdi 4 سال پیش مطرح شد
0

https://roocket.ir/series/laravel-projects/episode/113

میتونید اموزش های راکت رو دنبال کنید. اما در کل باید بگم که میتونید یه پارامتری پاس بدید به کنترلر و اونجا از روی اون پارامتر متوجه بشید که کاربر میخواد با کدوم درگاه پرداخت رو انجام بده و با توجه به انتخاب کاربر درگاه رو تغییر بدید.


Mohammad Mirzavand
@m.mirzavand1992 4 سال پیش مطرح شد
0

مهندس میدونم فقط یه نمونه کد بدید که بتونم درگاه های مختلف رو کال کنم چی باید به این کدم اضافه کنم همین رو بگید فقط

@khanzadimahdi


Mohammad Mirzavand
@m.mirzavand1992 4 سال پیش مطرح شد
0

ایا اون مقدار متغییر $driver رو برابر با مقدار درایور مورد نظر بذاریم این کار انجام میشه یا کد دیگری باید به این کد اضافه بشه؟


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 4 سال پیش مطرح شد
0

سلام هر درگاهی که میخواین رو به این شکل بش پاس بدین

اقای خانزادی هم تایید کنن اوکیه

// Create new invoice.
        $invoice = (new Invoice)->amount(1000);
        if ($type == 'zarinpal'){
            $port = new Zarinpal();
            $callbackRoute = route('zarinpal_callback');
        } else if ($type == 'sadad'){
            $port = new Sadad();
            $callbackRoute = route('sadad_callback');
        }
// Purchase the given invoice.
        Payment::via($port)->callbackUrl($callbackRoute)->purchase(
            $invoice,
            function($driver, $transactionId) {
                // We can store $transactionId in database.
            }
        );

Mohammad Mirzavand
@m.mirzavand1992 4 سال پیش مطرح شد
0

مرسی مهندس
@coaradsupp
تست میکنم


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
1

احتیاجی نیست شما دستی کلاس ها رو Instantiate کنی ..
این پکیج یک متد via هم داره که میتونی باهاش driver رو هم مشخص کنی

Payment::via('driverName')->purchase(
    $invoice, 
    function($driver, $transactionId) {
    // We can store $transactionId in database.
    }
);

در مستندات گفته شما باید نام درایور رو پاس بدی
اما شما Instance کلاس رو پاس دادید.. شاید این متد instance رو هم بپذیره.. باید امتحان کنی


Mohammad Mirzavand
@m.mirzavand1992 4 سال پیش مطرح شد
0

@ali.bayat
مهندس موقع برگشت کد verify براساس درگاه رو چجوری باید اضافه کنیم؟؟


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 4 سال پیش مطرح شد
0

مراحل کار بسیار ساده است

  • متد pay
  • متد verify

در حین استفاده از متد pay یه شماره تراکنش به شما داده میشه که میتونید ذخیرش کنید. سپس به درگاه بانک ریدایرکت میشید.
پس از برگشت از درگاه با همون شماره تراکنشی که دریافت کردید میتونید متد verify رو اجرا کنید و صحت پرداخت رو چک کنید.


محسن شرفی
تخصص : برنامه نویس
@laravel 2 2 سال پیش آپدیت شد
0

سلام وقت بخیر خسته نباشید من چندین محصول رو به درگاه پرداخت اضافه میکنم با پکیج شتابیت ولی خطای عدم تطابق مبلغ تراکنش با مبلغ پرداختی رو میده ۱ ماهه منو درگیر کرده لطفا کمکم کنید ممنون. تو دیتابیس هر چند تا محصول ک من میخوام اضافه میشه ولی وقتی dd میگرم آخرین مقدار رو میاره ک طبیعتا خطای عدم تطابق رو میده


محسن شرفی
تخصص : برنامه نویس
@laravel 2 2 سال پیش مطرح شد
0

این هم از کدای پرچیس
public function purchase()
{
try {
$total = 0;
$cartItems = Cart::where('user_id', Auth::id())->get();
$invoice = new Invoice();
foreach ($cartItems as $item) {

            $invoice->amount($total+= $item->course->price);
            $user = Auth::user();
            $paymentId = md5(uniqid());
            $transaction = $user->transactions()->create([
                'course_id' => $item->course_id,
                'paid' => $item->course->price,
                'invoice_details' => $invoice,
                'payment_id' => $paymentId
            ]);
            $callbackUrl = route('purchase.result', ['payment_id' => $paymentId]);
            $payment = \Shetabit\Payment\Facade\Payment::callbackUrl($callbackUrl);
            $payment->purchase($invoice, function ($driver, $transactionId) use ($transaction) {
                $transaction->transaction_id = $transactionId;
                $transaction->save();
            });
        }
        return $payment->pay()->render();

    } catch (PurchaseFailedException|\Exception|\SoapFault $e) {
        $transaction->transaction_result = [
            'message' => $e->getMessage(),
            'code' => $e->getCode(),
        ];

        $transaction->save();
        return view('purchase.result')->with([
            'message' => $e->getMessage(),
            'code' => $e->getCode(),
        ]);
    }
}

reza haj rahimi
@rezahajrahimi 1 سال پیش مطرح شد
0

چون دیدم که خیلی وقته این مسئله حل نشده و ممکن هست که افراد دیگه مثل من دنبال راه حلی بگردند که چطور می شه تنظیمات را بصورت پویا تغییر داد
ابتدا config را بصورت زیر وارد کلاس یا کنترلر کنید:

use Illuminate\Support\Facades\Config;

بعد هر قسمتی را که خواستید تغییر بدید، مثلا من می تونم merchantId زرین پال را بصورت زیر تغییر بدم

        config::set('payment.drivers.zarinpal.merchantId', '0000-00000000-0000000');

در صورتیکه بخوام مقدار set شده را به دست بیارم :

        $value = config('payment.drivers.zarinpal.merchantId');

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام