یلدا ادامه داره... ❤️ ۴۰ درصد تخفیف همه دورهها
استفاده از تخفیفهاسلام
اپلیکیشنی نوشتم که قابلیت افزایش اعتبار داره و برای افزایش اعتبار درگاه بانکی از وب ویو باز میشه و همه چی به درستی کار میکنه.حالا میخوام مثل اسنپ فود وارد مرورگر بشه و از اونجا پرداخت انجام شه.مطلبی پیدا نکردم که کمک کنه.اپلیکیشن اسنپ فود رو که دیدم:
https://newapi.zoodfood.com/_payment/finished/14q64jk
میخوام بدونم 14q64jk کد تراکنشه؟دقیقا چیه؟در واقع هدفم اینه که یه لینک به اپلیکیشن بدم که از مرورگر باز شه اما نمیدونم این مقدار چیه و من باید چه الگوریتمی داخل لاراول بنویسم و چه تغییری ایجاد کنم
کدی که برای اتصال به درگاه بانکی استفاده شده :
public function pay(Request $request, $creditId)
{
try {
$ipg = Ipg::active()->firstOrfail();
\Config::set("gateway." . $ipg->gateway, $ipg->config);
$gateway = \Gateway::make($ipg->gateway);
$credit = Credit::findOrFail($creditId);
$gateway->setCallback(route('api.v1.transaction.credit.verify'));
$gateway->price($credit->amount)->ready();
$refId = $gateway->refId();
$transID = $gateway->transactionId();
$credit->transaction_id = $transID;
$credit->save();
Gateway::where('id', $transID)->update(['ipg_id' => $ipg->id, 'user_id' => \Auth::id()]);
return $gateway->redirect();
} catch (Exception $e) {
echo $e->getMessage();
}
}
شما نیاز دارید تا لاگ پرداخت های خودتون رو نگهداری کنید پس ابتدا یه مدل بسازید برای نگهداری لاگ پرداخت ها
درون این مدل یه فیلد باید باشه که داخل اون شماره تراکنش رو که بانک بهتون میده نگهداری کنید.
شما کاربر رو با استفاده از این شماره تراکنش به صفحه بانک میفرستید و بعد از اینکه پرداخت انجام شد دوباره بانک کاربر رو به یکی از صفحات سایت شما برمیگردونه که این صفحه رو خودتون به بانک معرفی میکنید
مراحل کار به صورت زیر خواهد بود
1- ابتدا یک درخواست به درگاه پرداخت میدیم و یک تراکنش رو ثبت میکنیم و درگاه به ما یه شماره تراکنش میده و ما این شماره تراکنش رو درون دیتابیس خودمون ذخیره میکنیم
# create new invoice
$invoice = (new Invoice)->amount(1000);
# purchase the given invoice
$payment = Payment::purchase($invoice,function($driver, $transactionId) use ($invoice) {
// we can store $transactionId in database
PaymentModel::create([
'amount' => $invoice->amount,
'trans_id' => $transactionId
])
});
2- با توجه به صورتحسابی که توی دیتابیس ایجاد کردیم و یه کنترلر میایم یه روت ایجاد میکنیم و ادرس اون رو به بانک میدیم و کاربر رو میفرستیم به صفحه پرداخت
// redirect user to payment page
$url = route('payment.varify');
return $payment->callbackUrl($url)->pay();
3- وقتی کاربر پرداختش تموم بشه بانک کاربر رو به ادرسی که دادیم میفرسته و ما درون کنترلر خودمون با استفاده از شماره تراکنش که مرحله اول درون دیتابیس ذخیره کردیم یه درخواست به بانک میدیم ببینیم تراکنش با موفقیت انجام شده یا نه
اگه موفق بود که کار تمومه و اگه موفق نبود یه پیام نشون میدیم به کاربر
try {
Payment::amount(1000)->transactionId($transaction_id)->verify();
...
} catch (InvalidPaymentException $exception) {
/**
when payment is not verified , it throw an exception.
we can catch the excetion to handle invalid payments.
getMessage method, returns a suitable message that can be used in user interface.
**/
echo $exception->getMessage();
}
میتونید از پکیج زیر استفاده کنید که درگاه های مخلتفی رو ساپورت میکنه
ممنو از جواب کاملتون . اما من مجبور هستم طبق کدها از پکیج لارابوک استفاده کنم. اتفاقا منم هدفم اینه که یه کد تراکنش رو بذارم کنار لینک بانک و به اپلیکیشن بفرستم. اما اینجا داخل کدهام نمیدونم چیکار کنم .
@khanzadimahdi
از تمام درگاه های بانکی موجود در کشور! پکیج لارابوک رو به صورت کامل برای هر درگاه بانکی کانفیگ کردم و واقعا وقتش نیست که پکیج رو عوض کنم و اطلاعات دیتابیس رو تغییر بدم. البته لارابوک هم لاگ تراکنش ها رو داره . اما این قسمتی که باید بهش کد تراکنش رو بدم و لینک بانک رو بگیرم رو نمیتونم انجام بدم. من همین متد pay رو به اندروید میدم که فک میکنم احتمال باگش زیاده
@khanzadimahdi
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟