کیان
2 سال پیش توسط کیان مطرح شد
5 پاسخ

پرداخت آنلاین از طریق درگاه واسط مثل زرین پال در اندروید استودیو

سلام به همه دوستان و اساتید عزیز
من توی اپ اندرویدی ام نیاز دارم که برخی از امکانات رو بفروشم و با توجه به کارمزد نامتعارف کافه بازار و ... میخوام از درگاه پرداخت اینترنتی استفاده کنم
در زرین پال ثبت نام کردم و درگاه آماده هست و چند تا نمونه کد هم دیدم و تقریبا با روند کلی آشنا شدم

و اما سوال
اگر از برنامه ایرانسل من استفاده کرده باشید مثلا وقتی میخواید شارژ بخرید ابتدا از درون اپلیکیشن درگاه رو انتخاب میکنید بعد هدایت تون میکنه به مرورگر و صفحه پرداخت و بعد از پرداخت چه پرداخت موفق بوده چه نه برتون میگردونه به صفحه callback و یک پیام مبنی بر موفق بودن یا نبودن نشون میده اینجا پایینش یک دکمه گذاشته شده که که وقتی کلیک بشه برمیگرده به صفحه مربوطه به اپلیکیشن

در واقع میخوام بدونم این برگشت به اپلیکیشن چطوری اتفاق میفته از scheme استفاده میشه یا نه اگر آره چطور اگر نه چه راهی براش وجود داره

و در نهایت اینکه این مسیری که گفتم به نظرتون اصولی هست یا خیر و اگر پیشنهادی هست ممنون میشم راهنمایی کنید و در آخر برای کار با زرین پال در لاراول چه پکیجی رو پیشنهاد میدید من از shetabit استفاده کردم خطا دارم اما از pishran/zarinpal استفاده کردم تا حدودی اوکی بود
به نظرتون کدوم پکیچ بهتر عملکرده و بهینه تر هستش
سپاس


ثبت پرسش جدید
محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 2 سال پیش مطرح شد
1

سلام دوست عزیز
برای لاراول پکیج شتابیت هست و عالیه

درگاه پرداختی که میگیری خودت میایی ادرس بازگشت رو به سایت بانک میدی
یعنی در موفق بودن و نبودن برو به فلان مسیر
حالا ایرانسل شمارو میبره به یه صفحه ی ساده
و توی اون صفحه اطلاعات پرداختت رو بهت نشون میده
و دکمه ی رفتن به برنامه رو هم اونجا خودش قرار داده شما میتونی هر شکلی دوس داری رفتار کنی

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


کیان
تخصص : ندارم ...
@kian.myphone 2 سال پیش مطرح شد
0

سپاس از شما دوست عزیز که همیشه به بنده لطف دارید و راهنمایی میکنید @salar.mohammad2013
پوزش تجربه کاربری ام زیاد نیست که بتونم بازخورد مثبت روی پیام تون بدم و اینطوری ازتون تشکر میکنم هر چند کوچک 🙏

چند تا سوال برام پیش اومد اما قبلش بگم تا کجا پیش رفتم
الان من با پیکج pishran/zarinpal صفحه sendPayment رو درست کردم و ارسال میشه به سایت زرین پال و در صورت موفق بودن یا عدم پرداخت و ناموفق بودن callback میکنم به صفحه verifyPayment و اونجا مثل ایرانسل یه پیغام نشون میدم و تا اینجا اوکی هست و از طریق intnet که در اندروید پیاده سازیش رو انجام دادم وقتی دکمه برگشت به اپ رو هم بزنه برگرده به اپ و همه چیز اوکی هست
در خصوص پکیج شتابیت اصلا موافقش نیستم البته ضمن احترام به توسعه دهنده اش
پکیچ ها در واقع درست میشن که حجم کد زنی رو کمتر و کلا اساس کار رو راحتتر کنن این پکیج بیشتر گیج کننده هست و مسائل دیگه

اما سوال وقتی از درون اپلیکیشن میخوام کاربر رو هدایت کنم به صفحه sendPayment دو راه میشه انجامش داد ولی موندم کدومش درست تر هست البته هنوز پیاده سازی اش رو انجام ندادم
1- اول با کتابخونه های اندروید مثل والی یا رتروفیت فرقی نمی کنه یک رکوئست به صفحه sendPayment بزنم چرا که در فانکشن مرتبط با همین صفحه علاوه بر اینکه ادرس ارسال به زرین پال درست میشه میتونم خودم یک رکورد در دیتابیس درست کنم و اطلاعاتی که میخوام رو اونجا ذخیره کنم مثل id منحصر به فرد پرداخت یا ایدی پرداخت کننده و ... و در عین حال اگر همه چیز اوکی بود یک ادرس برگردونم و در اندروید ادرس رو دریافت کنم و حالا از طریق intent اون ادرس رو توی مرورگر باز کنم و ادامه ماجرا و نکته اینکه وقتی callback میشه توی فانکشن مرتبط هر چیزی که برگشته رو هم در دیتابیس ذخیره کنم

2- حالت دوم وقتی از اندروید روی دکمه خرید کلیک میشه توی url که ارسال میکنم به صفحه sendPayment همزمان مقادیری که میخوام توی دیتابیس ذخیره کنم رو هم با url بفرستم و توی لاراول اونا رو دریافت کنم و اینطوری یک مرحله کمتر میشه ولی نمیدونم کار درست و اصولی هست یا نه البته یه باگ داره اون هم به هر دلیلی اگر مشکل از سمت سرور خودم باشه یا زرین پال و عملیاتی که قبل از ارسال به سمت زرین پال میخواد اتفاق بیقته دچار مشکل بشه رو نمیشه به خوبی هندل کرد

ممنون میشم اگر چیزی به ذهن تون میرسه بفرمایید
سپاس


محمد رضا
تخصص : Full Stack Developer
@salar.mohammad2013 2 سال پیش مطرح شد
1

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


کیان
تخصص : ندارم ...
@kian.myphone 2 سال پیش آپدیت شد
1

بعد از مدتی که از تست میگذره گفتم تجربه ام رو اینجا بنویسم شاید به کار کسی بیاد

ابتدا از سمت اندروید یه درخواست فرستادم به لاراول و درون اون اطلاعاتی که خواستم رو ارسال کردم مثل آیدی یوزری که درخواست خرید داره و همچنین کالا یا خدماتی که میخواد خریداری کنه و قیمت و ... سمت لاراول درخواست رو میگیرم و یه رکورد توی دیتابیس ثبت میکنم مثلا توی جدول transaction که بعدا باهاش کار داریم توی این جدول ایدی یوزر و نوع درخواست و همچنین تاریخ و ساعت درخواست ثبت میشه

بعد از طریق هر پکیجی که دوست داشتیم یه درخواست میفرستیم به زرین پال من خودم از پکیج تومان استفاده کردم که خیلی سرراست و راحت بود
بلافاصله بعد از ثبت داده توی دیتابیس و همچنین ارسال درخواست به زرین پال یه url برگشت داده میشه که من اون رو دریافت کردم و برگردوندم به اپ اندرویدی ام و اونجا اون رو از طریق intent اجرا میکنم که در لحظه از کاربر سوال میکنم این url رو میخوای با کدام مرورگر روی گوشی ات باز کنی
خب بعد از باز شدن مرورگر و عملیات پرداخت چه موفق باشه چه ناموفق مرورگر صفحه رو هدایت میکنه به صفحه callback و اونجا ما درخواست برگشتی و داده های همراهش رو دریافت میکنیم و هر چیزی که میخوایم رو چک میکنیم مثلا transaction Id و همچنین amount که همون مبلغ ارسالی هست و اگر همه چیز درست بود همون رکوردی که توی دیتابیس ثبت کرده بودیم رو آپدیت میکنیم و تاریخ و ساعت جدید رو ثبت میکنیم و در نهایت فقط میمونه برگشت به اپ که یک تگ <a> مینویسم به این شکل :

<a href="intent:#Intent;action=return.app;end">جهت بازگشت به اپلیکیشن کلیک نمایید</a>

و تمام ...
فقط یادمون باشه توی تگ اکتیویتی که میخوایم بعد از کلیک روی تگ <a> بالا توی اپ مون باز بشه توی manifest باید این رو اضافه کنیم :

                <action android:name="return.app" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <category android:name="android.intent.category.ALTERNATIVE" />

نکته : عبارت return.app چه توی تگ اکتیویتی توی اپ چه توی تگ <a> باید یکی باشه هر چی اینجا نوشتیم اونجا هم بنویسیم

از دوست عزیزم @salar.mohammad2013 که همیشه بنده رو راهنمایی میکنند ممنون و سپاسگزارم


sepehr asafi
@sepiasafi 2 سال پیش مطرح شد
0

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


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

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