ahmadwp

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

8 پست در این موضوع قرار دارد

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

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

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

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

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

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

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

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

0

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


لینک به پست

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

 

3

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


لینک به پست

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

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

2

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


لینک به پست

سلام

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

 

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

یاعلی

1

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


لینک به پست

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

2

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


لینک به پست

سلام.

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

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

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

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

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

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

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

0

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


لینک به پست
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/

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

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

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

1

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


لینک به پست

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

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

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

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

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

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

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

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

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

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

0

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


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط amiridm
      با سلام.ببخشید من میخوام تعداد ستون محصولاتم رو 4 ستون کنم ولی نمیشه.لطفا راهنمایی کنید


    • توسط ahmadib
      سلام خسته نباشید 
      من یه مشکلی دارم توی اتصال درگاه پرداخت بانک ملت
      وقتی رکویست می فرستم سمت درگاه بانک یه خطایی میده که خوده به پرداخت هم جواب منو نداد 
      خطا :
       
      Error fault:1
      میشه راهنمایی کنید 
    • توسط shayan201680
      با سلام
      بنده یک سایت اصلی وردپرسی دارم و قرار شده که در ساب دامینشم از وردپرس استفاده کنم.
      الان میخوام کاری کنم که کاربران اگر در سایت اصلی ثبت نام کردند بتونند با همون مشخصات در ساب دامین نیز لاگین کنند و برعکس!
      ولی نمیدونم باید چکار کنم! 
      ممنون میشم اگر کسی بلده راهنمایی کنه، با تشکر... 
    • توسط عمارگراف
      سلام دوستان
      وقتتون بخیر
      بنده یک سایت با ووکامرس بالا آوردم و پوسته هم نصب کردم اما فرصت ندارم تک تک صفحات رو طراحی کنم. از طرفی عجله هم دارم.
      این کار رو میخوام:
      من لِی‌اوت(چیدمان) صفحات رو به صورت عکس برای فرد مورد نظر میفرستم.(مثلاً بالا اسلایدر، کنار فیلترها، وسط آخرین محصولات سه ستونه و ...) ایشون هم با ویژوال کامپوزر یا هرجور که خودش راحته صفحات رو بسازه.
      این صفحات رو میخوام:
      صفحه اصلی  (خانه)
      فروشگاه (صفحه اصلی محصولات)
      محصول تکی
      چیدمان سایدبار اصلی (که داخل سبد خرید و ... لود میشه)
      صفحه وبلاگ (اخبار و ...)
      این عکسهای پیوست نمونه چیزی هست که میخوام.
      مثلا این درخواست بنده برای صفحه اصلی سایت (عکس با زمینه مشکی)
      اون بخش بالا (محصولات برگزیده و اسلایدر) یه چیزی شبیه اون تصویر(اسکرین شات)
      کسی فرصت میکنه انجام بده؟
      هزینه و زمان رو لطفاً بفرمایید
      یا پیام خصوصی یا تلگرام ( @ammargraph )
      ممنون
      یاعلی