Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

پیاده سازی درگاه آسان پرداخت با REST #304

Open
idotnetdev opened this issue Jun 6, 2022 · 30 comments
Open

پیاده سازی درگاه آسان پرداخت با REST #304

idotnetdev opened this issue Jun 6, 2022 · 30 comments
Assignees
Labels
Improvement A feature's improvement is requested needs a developer A deveoper is needed to work on this

Comments

@idotnetdev
Copy link

سلام و عرض ادب
قبل از هر چیز، تشکر میکنم ازتون بخاطر پیاده سازی خوب و تمیز درگاه های بانکی کشور.

با توجه به اینکه درگاه آسان پرداخت به وسیله SOAP پیاده سازی شده، آیا امکان داره که درگاه رو با استفاده از وب سرویس های REST پیاده سازی کنید؟
ممنون

@idotnetdev idotnetdev added the Improvement A feature's improvement is requested label Jun 6, 2022
@Sina-Soltani
Copy link
Owner

درود
خواهش میکنم.

با توجه به اینکه درگاه آسان پرداخت به وسیله SOAP پیاده سازی شده، آیا امکان داره که درگاه رو با استفاده از وب سرویس های REST پیاده سازی کنید؟ ممنون

همونطور که در لیست درخواست‌ها می تونید مشاهده کنید، درخواست‌های زیادی هستن که باید انجام بشن و بنده هم متاسفانه فرصت کافی برای انجام اونها ندارم. به همین دلیل تقاضا شده از توسعه دهنده‌های عزیز که در صورت تمایل این درخواست‌ها رو انجام و توسعه بدن. من در حال حاضر فقط باگ‌هایی که ارسال میشن رو میتونم سریع رسیدگی کنم تا مشکلی برای سایرین به وجود نیاد.
بنابراین این مورد هم باید در لیست انتظار گذاشته بشه.

@Sina-Soltani Sina-Soltani added the needs a developer A deveoper is needed to work on this label Jun 6, 2022
@idotnetdev
Copy link
Author

ممنون.
خودم هم میتونم پیاده سازیشو انجام بدم.

@Sina-Soltani
Copy link
Owner

بسیار عالی.
پس لطفا برنچ مستر رو استفاده کنید و pull request رو ارسال کنید تا بررسی و مرج بشه.

@idotnetdev
Copy link
Author

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

image

بررسی میکنید لطفا؟

@idotnetdev
Copy link
Author

انگار قبلا با REST پیاده شده بوده که با تغییرات آقای افشاری (@mohammad-ashrafi2020 ) تبدیل به SOAP شده.
واقعا دلیلش چی بوده؟ خیلی جالبه که downgrade شده!

@mohammad-ashrafi2020
Copy link
Contributor

سلام ، اشرافی هستم
دلیلش این بود که توی Encrypt کردن اطلاعات مشکل وجود داشت و درگاه بهمون خطا میداد ( کتابخونه ای که باهاش این کار رو انجام میدادیم توی Dotnet Core کار نمیکنه و خوده آسان پرداخت هم توی Rest APi چیزی برای Encrype و Decrypt کردن اطلاعات قرار ندادن فقط توی Soap وجود داره

@idotnetdev
Copy link
Author

ممنون از شما.
بله چیزی برای Encrypt و Decrypt نداره چون توی REST اصلا ازش استفاده نمیشه و تنها چیزهایی که نیازه اینا هستن
MerchantConfigurationId
Usr => Username
Pwd => Password
بنده خودم با پشتیبانی آسان پرداخت هم صحبت کردم و گفتن که احتمال خیلی زیاد سرویس SOAP بزودی از کار خواهد افتاد و باید از REST استفاده بشه.
نمیدونم میتونیم کدها رو به قبل برگردونیم یا نه.

@mohammad-ashrafi2020
Copy link
Contributor

آخرین مشکلی که توی Rest داشتیم این بود که شناسه تراکنش رو تشخیص نمیداد ، وارد درگاه میشد و می گفت : "خطا، شناسه تراکنش معتبر نمی‌باشد"

@idotnetdev
Copy link
Author

idotnetdev commented Jun 8, 2022

منظور از شناسه تراکنش localInvoiceId هست؟

@mohammad-ashrafi2020
Copy link
Contributor

مشخص نبود مشکل از کجاست ( این خطا رو توی صفحه درگاه آسان پرداخت میداد ، 1 هفته باهاش سرو کله زدیم ، دیدیم به جواب نرسیدیم ، اومدیم سمت همون Soap )

@idotnetdev
Copy link
Author

حالا به نظرم باید آقای سلطانی نظر بدن که آیا میتونیم کدهای قبلی رو داشته باشیم که بتونیم روش کار کنیم و تست کنم مجددا و ببریمش روی REST یا نه باید از اول کار بشه.
@Sina-Soltani

@Sina-Soltani
Copy link
Owner

@idotnetdev
@mohammad-ashrafi2020

درود
مشکلی که وجود داشت همون عدم امکان استفاده از الگوریتم رمزنگاری در دات نت کور بود.
بعد ما کدها رو تغییر دادیم تا از REST استفاده کنیم.
اما ظاهرا با خطا مواجه میشدن @mohammad-ashrafi2020
بنده هم که امکان تست رو نداشتم چون آی پی خارج از ایران هستم
خود درگاه آسان پرداخت هم که به قدری افتضاح بوده که حتی امکان تست رو برای توسعه دهنده‌ها محیا نکرده، دیگه چه برسه به پیاده‌سازی‌ هایی که انجام دادن.
در نتیجه ما دوباره از همون SOAP استفاده کردیم

جزئیات مربوط به این بحث رو در این تیکت می تونید ببینید:
#259

در نهایت قبل از اینکه تصمیمی گرفته بشه،‌باید اول مشخص بشه که آیا این درگاه با REST کار میکنه یا خیر. چون طبق بحث‌های اون تیکت، ما کدها رو دقیقا اونطوری که انتظار میرفت پیاده‌سازی کردیم،‌ اما کار نکرد.
شما می تونید یک نمونه پروژه کاملا جدید بسازید و بدون استفاده از پکیج پَرباد، این درگاه رو با REST پیاده‌سازی کنید و تست کنید.
در صورتی که به درستی کار کنه،‌ پروژه رو اینجا آپلود کنید تا من هم یک بررسی جزئی بکنم.
اگر همه چیز به خوبی پیش بره، شما می تونید کد‌ها رو در Pull Request پیاده‌سازی و ارسال کنید

@idotnetdev
Copy link
Author

خود آسان پرداخت یه پروژه تستی داره که به همراه اطلاعات درگاه ارسال کرده.
با REST پیاده سازی شده ولی برای تست نیاز هست که آی پی شما ثبت بشه روی درگاه که بتونید تستش کنید.

@Sina-Soltani
Copy link
Owner

@idotnetdev
آیا شما امکان تست رو دارید؟ یعنی در واقع حساب بانکی و درگاه رو دارید که تست کنید؟

@idotnetdev
Copy link
Author

بله میتونم تست کنم. هم اطلاعات حساب دارم و هم IP Valid خودم رو به آسان پرداخت اعلام کردم.
میتونم از اول و صفر بشینم بنویسم ولی میگم وقتی قبلا نوشتیم دوباره کاری هست انگار و الا موردی نداره بخواین به این SOAP هم کاری ندارم یه پروژه درست میکنم روی پرباد Parbad.Gateway.AsanPardakhtRest یا هرچی اونجا کدهاشو مینویسم.

@Sina-Soltani
Copy link
Owner

Sina-Soltani commented Jun 8, 2022

پس لطفا داخل خود پَرباد، این درگاه رو با REST انجام بدید (اگر هنوز انجام نشده)
نیازی به تغییر نام یا ایجاد پروژه جدیدی نیست. داخل پروژه فعلی کدها رو به rest تغییر بدید
Parbad.Gateway.AsanPardakht

بعد نوگت رو تولید کنید و نصب کنید روی یک پروژه وب و ازش استفاده کنید و تست کنید.
همونطور که گفتم، هدف نهایی این هست که تغییرات جواب بده و روی درگاه واقعی شرکت آسان پرداخت کار کنه.
اگر همه چیز با موفقیت انجام شد و نتیجه داد، Pull Request رو ارسال کنید بعدش لطفا

@idotnetdev
Copy link
Author

باشه ممنون.

@idotnetdev
Copy link
Author

سلام وقت بخیر
درگاه آسان پرداخت رو با REST مجددا پیاده سازی کردم و سعی کردم از کدهای قبلی هم استفاده کنم.
به درگاه پرداخت وصل میشم و اطلاعات پرداخت رو میزنم و مشکل نداره.
وقتی که میخواد برگرده به سایت و متد FetchAsync رو فراخوانی میکنم، موقع فراخوانی متد httpClient.GetAsync(...) به ددلاک میخوره و هیچ جوره حل نمیشه نمیدونم واقعا چرا.
جاهای دیگه ای هم استفاده شده ازش مثلا توی ایجاد Request. جالبه که هیچ Exception ی هم صادر نمیشه حتی چند ساعت هم بگذره توی همون حالت میمونه و هیچ بازگشتی نداره.
تا بحال با این مشکل مواجه شدید؟

image

@Sina-Soltani
Copy link
Owner

درود
خیر به چنین مشکلی برنخوردم من.
اما دلیلی که می تونه وجود داشته باشه اینه پاسخ دهنده (آسان پرداخت) دچار مشکلاتی هست.
Pull Request رو ارسال کنید تا من هم نگاهی بندازم

@idotnetdev
Copy link
Author

به خاطر استفاده از Task هست GetAsync.
با این کدها به راحتی میتونه نتیجه رو بگیره.
`HttpWebRequest request = (HttpWebRequest)WebRequest.Create(apiUrl);
request.Headers.Add("usr", account.UserName);
request.Headers.Add("pwd", account.Password);

            request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            using (Stream stream = response.GetResponseStream())
            using (StreamReader reader = new StreamReader(stream))
            {
                var res = await reader.ReadToEndAsync();
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    var errorModel = JsonConvert.DeserializeObject<AsanPardakhtApiErrorModel>(res);

                    var failedMessage = errorModel.Title ?? messagesOptions.PaymentFailed;

                    return (false, null, failedMessage);
                }

                var transModel = JsonConvert.DeserializeObject<AsanPardakhtPaymentResultModel>(res);
                // return await reader.ReadToEndAsync();
                return (true, transModel, null);
            }`

موضوع دیگه اینه که گفته بودید که برنچ مستر رو استفاده کنم و روی همون تغییرات دادم.
Pull request بزنم؟

@Sina-Soltani
Copy link
Owner

ارتباطی به task نمیتونه داشته باشه.

شما pull request رو لطفا ارسال کنید
من علاوه بر بررسی کلی، یک نگاهی هم به این قسمت میندازم ببینم مشکل چیه

@idotnetdev
Copy link
Author

من pull request زدم ولی ریفکتور کدها نیاز هست که هنوز انجام ندادم تا کامل تست کنم و جواب بگیرم.

@idotnetdev
Copy link
Author

@Sina-Soltani
آقای سلطانی تونستید بررسی کنید مشکلش رو؟

@Sina-Soltani
Copy link
Owner

Sina-Soltani commented Jun 16, 2022

خیر متاسفانه فرصت نداشتم.
امروز بررسی میکنم
pull request شما آماده هست؟ چون مثل اینکه گفتید باید ریفکتور و تست کنید

@idotnetdev
Copy link
Author

بله من دیشب pull request زدم که شما مشکل رو بتونید بررسی کنید.
اگه مشکلش حل بشه میتونم تست کنم و در نهایت ریفکتور میکنم و کدها و کامنت های اضافه رو هم حذف میکنم.

@Sina-Soltani
Copy link
Owner

بله من دیشب pull request زدم که شما مشکل رو بتونید بررسی کنید. اگه مشکلش حل بشه میتونم تست کنم و در نهایت ریفکتور میکنم و کدها و کامنت های اضافه رو هم حذف میکنم.

شما pull request رو به هر روشی که در نظر دارید تکمیل و آماده کنید.
در صورت نیاز من پس از بررسی و تست تغییرات رو انجام میدم

@idotnetdev
Copy link
Author

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

@Sina-Soltani
Copy link
Owner

درود
سپاس از شما
سعی میکنم به زودی نگاه کنم

@idotnetdev
Copy link
Author

سلام و عرض ادب
آقای سلطانی منتظرم که تایید کنید و پکیجش ایجاد بشه که بتونم نصبش کنم. خودم نمیخوام تولید کنم پکیجش رو.
لطفا یه بررسی بفرمایید.

@Sina-Soltani
Copy link
Owner

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Improvement A feature's improvement is requested needs a developer A deveoper is needed to work on this
Projects
None yet
Development

No branches or pull requests

3 participants