آموزش های عمومیامنیتبخش وردپرسعمومیوردپرس

دریافت محصولات دنلودی و تکمیل سفارش بدون پرداخت مبلغ

دریافت محصولات دنلودی و تکمیل سفارش بدون پرداخت مبلغ
دریافت محصولات دنلودی و تکمیل سفارش بدون پرداخت مبلغ
دریافت محصولات دنلودی و تکمیل سفارش بدون پرداخت مبلغ
دریافت محصولات دنلودی و تکمیل سفارش بدون پرداخت مبلغ
دریافت محصولات دنلودی و تکمیل سفارش بدون پرداخت مبلغ

نوشته : ahmadwp

سلام خدمت شما عزیزان.

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

مشکلی که پیش اومده این هست که کاربری اومده و بدون اینکه احتمالا هیچ پرداختی انجام بده، سفارشش رو دریافت کرده و محصولات رو هم کاملا دانلود کرده!

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

این تراکنش ها به صورت ناموفق در درگاه واسط ثبت شدن، اما چطور وقتی تراکنش موفق نبوده، اون کاربر تونسته برگرده و سفارش رو تکمیل کنه! (بدون پرداخت؟)

به شرکتی که ازش درگاه پرداخت داشتم مطرح کردم و اونها گفتن که هیچ تراکنشی برای ما نیومده و ما افزونه وردپرس رو کاملا بررسی کردیم و هیچ مشکلی امنیتی ای هم در افزونه وجود نداره! (اونها به من این رو نهایتا گفتن که ظاهرا اون کاربر، یه جوری پرداخت سفارش رو دور زده!!)

در ووکامرس گزینه ای برای محصولات دانلودی وجود داره با نام (دسترسی به محصولات دانلود شدنی پس از پرداخت) این گزیه اگر فعال باشه، نیاز نیست که دیگه مدیرِ سایت، هر بار برای هر سفارش یکی یکی بره و وضعیت اونها رو به تکمیل شده تغییر بده تا مشتری بتونه محصول رو دانلود کنه و این احتمالا هیچ مشکلی نداره چون جزو امکانات داخلی ووکامرس هست.

اما من برای اینکه وضعیت سفارش از حالت پرداخت شده به تکمیل شده تغییر داده بشه کمی کد در فایل function.php پوسته سایتم قرار دادم که در زیر برای شما قرار می دم، شاید باگ در همین کد باشه چون احتمالا ووکامرس سیستمی نیست که چنین باگ ضایعی داشته باشه، هرچند که دور از انتظار هم نیست.

کدی که در فاکنشن قرار دادم:

/**
* Auto Complete all WooCommerce orders.
*/
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order' );
function custom_woocommerce_auto_complete_order( $order_id ) {
 global $woocommerce;
 if ( !$order_id )
 return;
 $order = new WC_Order( $order_id );
 $order->update_status( 'completed' );
}
/**
* Auto Complete all WooCommerce orders.
*/

به نظر شما همین کد می تونه مشکل ایجاد کرده باشه و اون کاربر (احتمالا هکر) از همین موضوع استفاده کرده باشه و در فرانت اند کاری کرده باشه که بدون پرداخت، سفارش تبدیل به تکمیل شده بشه؟

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

جالب اینجاست که گفتم شاید مسئولین درگاهِ پِی درست بررسی نکرده باشن و مشکل از افزونه اونها باشه، لذا درگاه رو از پِی، به زرین پال تغییر دادم و اون قبلی رو حذف کردم، اما با زرین پال هم همین مشکل به وجود اومد!

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

بنده درگاه پرداخت پِی و زرین پال رو هم از سایت های اصلی اونها دانلود کردم و برای شما پیوست کردم که در صورت امکان لطف کنین و شما استادان گرامی هم نگاهی بندازین و ببینین که آیا این باگ می تونه از این درگاه ها باشه؟

بسیار از شما سپاسگزارم

Payir-woocommerce.zip

zarinpal-woocommerce-payment-gateway.zip

نوشته : a mogheimi

به نظرم باید چک کنید اگه وضعیت processing بود تغییر بده به complete

نوشته : mehran b

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

البته من زیاد با ووکامرس آشنایی ندارم.

نوشته : Babak T

سلام

من مشکلی تو کد ندیدم

ادرس سایتتون رو قرار بدین تا مشکل رو بررسی کنیم…یا شاید باگ directory listing ای چیزی باشه…

یاعلی

نوشته : HANNANStd

دوست عزیز دقیقا حق با a_mogheimi هست.

داخل برگه ی پس از بازگشت از درگاه یک do_action به شکل زیر اجرا میشه :

<?php do_action( 'woocommerce_thankyou_' . $order->get_payment_method(), $order->get_id() ); ?>
<?php do_action( 'woocommerce_thankyou', $order->get_id() ); ?>

زمانی که کاربر به این برگه دسترسی پیدا کنه این اکشن در صورتی که سفارش (با هر وضعیت پرداختی) وجود داشته باشه براش اجرا میشه و اکشن شما هم اجرا میشه.

اصلا روش خوبی رو استفاده نکردید.

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

نوشته : ahmadwp

سلام.

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

آقا حنان عزیز (HANNANStd)، یعنی اصلا نباید نگران امنیت سایتم باشم و فکر کنم که سایتم هک شده؟ چون در سایتم هیچ آثاری از هک شدن وجود نداره و تنها اتفاق غیرطبیعی که توسط من مشاهده شده همین مورد خرید بدون پرداخت هست.

اون هم همه کاربران قادر به این کار نیستن (چون این روش این شخص رو بلد نیستن)، این شخصی که این کارها رو انجام داده از روش خاصی استفاده می کنه، من خودم به عنوان کاربر، هر جور امتحان می کنم و از صفحه پرداخت بانک بر می گردم، یا اینکه پرداخت رو نیمه تمام می ذارم، به هیچ وجه سفارش خود به خود، به پرداخت شده یا تکمیل شده تغییر داده نمیشه، نمی دونم این شخص دقیقا از چه روشی برای این کار استفاده می کنه که پرداخت رو دور می زنه و بدون پرداخت، سفارش رو تبدیل به تکمیل شده می کنه و محصولات رو دانلود می کنه!؟

با توجه به گفته های شما (آقا حنان) فکر می کنم جای نگرانی نیست و مشکلی مانند هک شدن برای سایتم وجود نداره و فقط باید همین کدی که در فانکشن قرار دادم که مرتبط با تغییر وضعیت سفارش هست رو جایگزین کنم، آیا درست متوجه شدم؟

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

تنها چیزی که این وسط توسط خودم دستکاری شده، این هست که این کد رو در فانکشن قرار دادم، البته خیلی وقته قرار دادم و تاکنون این مشکل برام پیش نیومده بود، اما اینبار ظاهرا شخصی اومده و روشی رو برای دور زدن پرداخت پیدا کرده!

من فقط می خوام از این موضوع مطمئن بشم که دقیقا این مشکل به خاطر چه چیزی به وجود اومده و عامل اصلی اون چیه؟ تا اون رو به طور کامل رفع کنم، باز هم از صمیم قلب از همه شما متشکرم.

نوشته : مهدی

metorik.com/blog/autocomplete-all-the-orders-in-woocommerce
WooCommerce Order Status Control
www.skyverge.com/blog/how-to-set-woocommerce-virtual-order-status-to-complete-after-payment/

در لینک اول قسمت سوم‌ش مناسب کار شماست

دومی هم افزونه رسمی ووکامرس هست

لینک سوم هم کار شما رو انجام میده اما برای نسخه‌ی جدید به گفته طرف احتمال داره کار نکنه

نوشته : ahmadwp

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

خواستم از این طریق هم اعلام کنم تا این تاپیک، به یک نتیجه نهایی برسه و بحثش تمام بشه.

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

آقای مقیمی عزیز، لینکی رو هم برای بنده ارسال کردن که در اون شرطِ بهتر و امن تری نوشته شده بود، لینک زیر:

https://stackoverflow.com/questions/36969532/how-to-check-order-status-after-payment-in-woocommerce

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

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

دلیل نمیشه که حتی اگر از معتبرترین سایت در زمینه آموزش وردپرس در دنیا هم کدی رو بخواین برداشت کنین و در قالب سایت تون کار بذارین، اون کد امن و صحیح باشه و نیاز به بررسی شخصی و دقیق نداشته باشه.

مورد بعدی اینه که گاهی اوقات کدها هم مشکل ندارن، اما وقتی قالب، افزونه ها و خود وردپرس آپدیت می شه، اون کدهای قدیمی دیگه با نسخه های جدید سازگار نیستن، البته به این موضوع واقف بودم اما فراموش کرده بودم بررسی کنم، به هر حال، لازمه هر بار که به روز رسانی ای انجام می دین، دوباره کدهای کاستومی که قرار دادین رو بررسی کنین و مطمئن بشین که با نسخه های جدید مشکلی نداره (از لحاظ امنیت و کارآیی)

موفق باشید، متشکرم، خدا نگهدار


(1) نحوه واریز مبلغ برندگان فروش فوقالعاده
نحوه واریز مبلغ برندگان فروش فوقالعاده خودرو چگونه است - تجارتنیوز


(2) مدیریت سفارش ووکامرس بدون نیاز به نصب
مدیریت سفارش ووکامرس بدون نیاز به نصب افزونه اضافی


(3) افزونه فروش اقساطی محصولات ووکامرس In stock
افزونه فروش اقساطی محصولات ووکامرس - ووکامرس فارسی - فروشگاه ساز رایگان


(4) افزونه پرداخت پس از تایید سفارش ووکامرس In stock
افزونه پرداخت پس از تایید سفارش ووکامرس - ووکامرس فارسی - فروشگاه ساز رایگان


(5) مدیریت هوشمندانه سفارش ها در ووکامرس از
مدیریت هوشمندانه سفارش ها در ووکامرس از صفر تا صد - مدیر وردپرس


(6) افزونه پیش پرداخت ووکامرس - ووکامرس In stock
افزونه پیش پرداخت ووکامرس - ووکامرس فارسی - فروشگاه ساز رایگان


(7) شرط پیش پرداخت مبلغ خودرو دوباره حذف شد
شرط پیش پرداخت مبلغ خودرو دوباره حذف شد - جهان نیوز

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نوزده − هجده =

دکمه بازگشت به بالا