مشکل افزونه بانک ملت با افزونه چند زبانه کردن سایت polylang، قسمت callBackUrl

  • نویسنده موضوع one23
  • تاریخ شروع

one23

تازه وارد
سلام دوستان، یک مشکلی وجود داره با افزونه بانک ملت که توسط تیم ووکامرس فارسی نوشته شده. زمانی که افزونه polylang رو نصب می‌کنیم و دامنه رو به این شکل تغییر می‌دیم:

domain.com/fa



در زمان برگشت از بانک به این آدرس میره:

https://domain.com/wc-api/WC_Gateway_Bankmellat/?wc_order=1111


و به این دلیل صفحه 404 نمایش داده می‌شه.

چون اطلاعات ووکامرس در آدرس:

https://domain.com/fa/wc-api/WC_Gateway_Bankmellat/?wc_order=1111


قرار داره.

یعنی fa فرق بین دو url بالا هستش.

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

این باعث شده پرداختی هم اگر انجام می‌شه به دلیل کار نکردن callBackUrl، هزینه محصول به حساب مشتری برگرده.

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

اضافه کنم که با افزونه درگاه ایران‌کیش این مشکل رو ندارم و خودش بدون هیچ تغییری fa رو اوکی می‌کنه.

 
آخرین ویرایش توسط مدیر:

Mohammad

مدیر انجمن
پرسنل مدیریت
سلام

درگاه ایران کیش رو از کجا تهیه کردید؟

چون ادرس callbackurl بر اساس ادرس پایه فروشگاه هست.

 

one23

تازه وارد
سلام

درگاه ایران کیش رو از کجا تهیه کردید؟

چون ادرس callbackurl بر اساس ادرس پایه فروشگاه هست.
سلام محمد جان، ایران‌کیش رو از irankish.com تهیه کردیم که به بانک سامان متصل هست. اما اینجا مشکل افزونه بانک ملت هستش که موقعه‌ی برگشت از بانک اون داستان پیش میاد. اگر از polylang استفاده نکنیم مشکلی نداریم.. اما وقتی استفاده می‌کنیم زمان برگشت از بانک ملت باید به آدرس زیر بره:

https://domain.com/fa/wc-api/WC_Gateway_Bankmellat/?wc_order=1111


اما به این آدرس می‌ره:

https://domain.com/wc-api/WC_Gateway_Bankmellat/?wc_order=1111


برگه‌ی فروشگاه هم در این آدرس هست:

https://domain.com/fa/shop/


--------------------------------------------------------

در بانک ملت action به آدرس زیر هستش:

/monthly_2018_07/1.png.0409870ac5d43e48da97d0a8c54019b2.png


بعد از انصراف یا هر بازگشتی به این آدرس 404 ما می‌آد:



حالا به آدرس که fa اضافه کنیم کال‌بک اوکی می‌شه و ریداکت می‌شه به چک‌اوت‌مون:


 

پیوست‌ها

  • 1.png
    1.png
    40.4 کیلوبایت · بازدیدها: 1
  • 2.png
    2.png
    24.1 کیلوبایت · بازدیدها: 1
  • 3.png
    3.png
    24 کیلوبایت · بازدیدها: 1
آخرین ویرایش توسط مدیر:

one23

تازه وارد
کسی که پاسخ نداد، اما حل مشکل:

$callBackUrl = add_query_arg( 'wc_order', $order_id , WC()->api_request_url('WC_Gateway_Bankmellat') );


به هر صورتی که دوست‌دارید تغییر بدید. مثل:

$callBackUrl = 'https://domain.com/fa/wc-api/WC_Gateway_Bankmellat/?wc_order=$order_id';


موفق باشید.

 

one23

تازه وارد
کسی که پاسخ نداد، اما حل مشکل:

$callBackUrl = add_query_arg( 'wc_order', $order_id , WC()->api_request_url('WC_Gateway_Bankmellat') );


به هر صورتی که دوست‌دارید تغییر بدید. مثل:

$callBackUrl = 'https://domain.com/fa/wc-api/WC_Gateway_Bankmellat/?wc_order=$order_id';


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

اما کدی که این پایین نوشتم هم پرداخت موفق هست و هم لینک دانلود رو به کاربر می‌ده و نیازی نیست افزونه‌ی اصلی رو دستکاری کنید فقط کد زیر رو در function قرار بدید:

function woocommerce_fix_checkout_url( $request ) {
if (function_exists('pll_current_language'))
if (pll_current_language() == 'fa')
{
$request = 'https://domain.com/fa/wc-api/WC_Gateway_Bankmellat/';
return $request;
}
}

add_filter( 'woocommerce_api_request_url', 'woocommerce_fix_checkout_url', 10, 1 );


فقط بعدش چک کنید درگاه‌های دیگ‌تون به مشکل نخورده باشن.

کد بالا چک می‌کنه اگر زبان وب‌سایت پارسی بود کال‌بک رو به اون صورتی که می‌خوایم تغییر بده.

موفق باشید.

 
بالا