رفتن به مطلب
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

به اشتراک گذاری این ارسال


لینک به ارسال

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

 

به اشتراک گذاری این ارسال


لینک به ارسال

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

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

به اشتراک گذاری این ارسال


لینک به ارسال

سلام

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

 

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

یاعلی

به اشتراک گذاری این ارسال


لینک به ارسال

دوست عزیز دقیقا حق با 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 استفاده کنید که چک کنید اگر وضعیت جدید به صورت پرداخت شده بود به وضعیت تکمیل شده تغییر پیدا کنه.

به اشتراک گذاری این ارسال


لینک به ارسال

سلام.

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

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

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

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

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

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

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

به اشتراک گذاری این ارسال


لینک به ارسال
https://metorik.com/blog/autocomplete-all-the-orders-in-woocommerce
https://woocommerce.com/products/woocommerce-order-status-control/
https://www.skyverge.com/blog/how-to-set-woocommerce-virtual-order-status-to-complete-after-payment/

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

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

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

به اشتراک گذاری این ارسال


لینک به ارسال

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

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

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

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

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

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

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

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

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

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

به اشتراک گذاری این ارسال


لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


  • مطالب مشابه

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



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

×
×
  • اضافه کردن...