การส่งมอบ Bitrix บริการจัดส่งอัตโนมัติ Bitrix v14. ข้อจำกัดการชำระเงินเพิ่มเติม

เราได้อธิบายขั้นตอนการติดตั้งส่วนประกอบการชำระเงินใหม่แล้ว เขาทดสอบโครงการเป็นเวลาหลายวัน และถึงเวลาที่จะใช้ประโยชน์จากโอกาสที่คุ้มค่าที่จะเปลี่ยนไปใช้แพลตฟอร์ม 1C-Bitrix ใหม่

การทดแทนเมืองเริ่มต้นโดยอัตโนมัติ

ตัวอย่างนี้จะมีประโยชน์สำหรับทั้งร้านค้าระดับภูมิภาคขนาดเล็กและโครงการขนาดใหญ่

ภูมิภาคการจัดส่งเป็นองค์ประกอบหลักประการแรกของกระบวนการสั่งซื้อ สมมติว่าเราจำเป็นต้องใช้การทดแทนชื่อ "คาลินินกราด" โดยอัตโนมัติเพื่อเพิ่ม Conversion และลดปัญหาในการสั่งซื้อ

ตอนนี้เมื่อคุณเข้าสู่ระบบครั้งแรกจะมีลักษณะดังนี้:

แน่นอนว่าลูกค้าสามารถคลิกที่ปุ่ม "คาลินินกราด" หลังจากนั้นจะต้องกรอกข้อมูลในฟิลด์ แต่หลายคนก็ข้ามขั้นตอนนี้ไปซึ่งส่งผลให้เกิดข้อผิดพลาด:

ปัญหานี้ถูกระบุโดย Metrica Webvisor แน่นอนหลังจากนี้ลูกค้ากรอกทุกอย่างถูกต้อง แต่ยังมีสารตกค้างแม้ว่าในร้านค้าหลายแห่งการรับสินค้าจะเป็นเกณฑ์สำคัญ (มากถึง 80% ของคำสั่งซื้อ) และในกรณีนี้การเติมเมืองที่ถูกต้อง ชื่อไม่สำคัญ

มาตั้งค่าเมืองเริ่มต้นและดูว่าการทดแทนใช้งานได้หรือไม่ ไปที่ส่วนผู้ดูแลระบบของร้านค้าแล้วไปที่การตั้งค่าคุณสมบัติ:

และตั้งค่าตำแหน่งเริ่มต้น:

ตอนนี้เรามาสั่งซื้อเพื่อตรวจสอบ:

เยี่ยมมาก กรอกสถานที่เรียบร้อยแล้วและลูกค้าเพียงแค่คลิก "ถัดไป" ตอนนี้คำสั่งซื้อจะถูกวางโดยไม่สะดวกสำหรับลูกค้า และเราจะเพิ่ม Conversion ให้สูงสุด สำหรับร้านค้าขนาดใหญ่ พวกเขาสามารถรวบรวมสถิติความถี่ของการสั่งซื้อจากบางเมือง และสร้างปุ่มเลือกอย่างรวดเร็วดังในภาพหน้าจอ: "Kaliningrad", "Zelenogradsk", "Svetlogorsk"

คุณสามารถตั้งค่าเมืองที่ได้รับความนิยมสูงสุดเป็นค่าเริ่มต้นได้ เนื่องจากการเปลี่ยนแปลงหรือชี้แจงทางโทรศัพท์จะง่ายกว่าการสูญเสียลูกค้าเสมอ

ข้อจำกัดการชำระเงินเพิ่มเติม

ขั้นตอนต่อไปในการสั่งซื้อคือการบล็อกการชำระเงิน ข้อจำกัดประเภทหนึ่งอาจเป็นการห้ามชำระเงินด้วยเงินสดเมื่อจัดส่งทางไปรษณีย์ สิ่งนี้มีประโยชน์ในกรณีที่ผู้หญิงทำงานในเหมืองหินและไม่ต้องการเสี่ยงต่อสุขภาพเมื่อขนส่งเงินจำนวนมาก

เราจะแนะนำข้อจำกัดที่เกี่ยวข้องกับบริการจัดส่งบางอย่างและจำนวนเช็คสูงสุด หากต้องการทำสิ่งนี้ ให้ไปที่อินเทอร์เฟซผู้ดูแลระบบไปที่แท็บ "ข้อจำกัด" เพื่อดูวิธีการชำระเงินเฉพาะ:

ในกรณีนี้ คุณจะต้องสร้างระบบการชำระเงินด้วยเงินสดสองระบบ:

  • ประการหนึ่งเราจะจำกัดการใช้จุดรับ แต่ไม่มีข้อจำกัดด้านราคา
  • และในวินาทีนี้ เราจะจำกัดตัวเองอยู่เฉพาะบริการจัดส่งและเพิ่มขีดจำกัดจำนวนเงิน
ขั้นแรก เรามากำหนดขีดจำกัดราคากันก่อน:

ขณะนี้ข้อจำกัดในการจัดส่ง:

เป็นผลให้เราได้รับสิ่งต่อไปนี้:

ตรวจสอบการดำเนินการตามคำสั่งซื้อด้วยสินค้ามูลค่าน้อยกว่า 10,000 รูเบิลและจัดส่งทางไปรษณีย์:

ทุกอย่างเรียบร้อยดี มีการชำระเงินที่จำเป็น สามารถสั่งซื้อได้

ตรวจสอบสินค้าที่มีมูลค่ามากกว่า 10,000 รูเบิล:

เยี่ยมมาก ไม่มีการชำระด้วยเงินสด คุณสามารถสั่งซื้อด้วยการชำระเงินด้วยวิธีอื่นโดยไม่ต้องเสี่ยงกับบริการจัดส่งและเงิน

เมื่อมีการบังคับใช้ข้อจำกัด ลูกค้าจะไม่เห็นวิธีการชำระเงินที่ "ต้องห้าม" และจะไม่ทะเลาะกับผู้ให้บริการ ซึ่งจะต้องอธิบายอย่างต่อเนื่องว่าทำไมบริษัทของคุณจึงไม่ส่งคำสั่งซื้อที่วางไว้

บริการจัดส่งเพิ่มเติม

เรามักถูกขอให้มอบโอกาสในการสร้างบริการที่จำเป็นในการจัดส่ง สิ่งนี้ได้ถูกนำไปใช้ในแพลตฟอร์มใหม่ ประโยชน์ของบริการเพิ่มเติมคือการเพิ่มใบสั่งซื้อเฉลี่ย

ไปที่การตั้งค่าการจัดส่ง:

แท็บแยกต่างหากปรากฏในอินเทอร์เฟซพร้อมบริการเพิ่มเติมที่จะแสดงในบล็อกการจัดส่ง รองรับบริการสามประเภท:

  • รายการบริการ ลูกค้าจะถูกขอให้เลือกรายการจากรายการบริการ ตามค่าเริ่มต้น รายการแรกจะถูกเลือก ดังนั้นหากคุณไม่จำเป็นต้องเพิ่มราคา บริการแรกในรายการก็ควรจะมีราคาเป็นศูนย์

บริการเชิงปริมาณ บริการถูกสร้างขึ้นโดยมีราคาต่อหน่วย และลูกค้าสามารถระบุปริมาณที่ต้องการได้

บริการเดี่ยว บริการอิสระ ซึ่งแสดงเป็นช่องทำเครื่องหมาย ไม่ใช้ค่าเริ่มต้น ลูกค้าจะต้องเลือกสิ่งที่ต้องการโดยอิสระ

มาดูกันว่ากฎเหล่านี้ได้รับการกำหนดค่าอย่างไร:

การตั้งค่าสำหรับบริการทุกประเภทจะคล้ายกันมาก: มีสองช่วงตึกที่ควบคุมองค์ประกอบหลัก ก่อนอื่นคุณต้องตั้งชื่อและคำอธิบายของบริการ จากนั้นระบุผู้ที่สามารถใช้บริการได้:

  • ผู้จัดการ - บริการจะแสดงในส่วนต่อประสานผู้ดูแลระบบ
  • ลูกค้า - บริการจะแสดงระหว่างการสั่งซื้อในที่สาธารณะของเว็บไซต์
นี่คือลักษณะการเพิ่มบริการในส่วนต่อประสานผู้ดูแลระบบเมื่อสร้างคำสั่งซื้อหรือทำการแก้ไข:

“การป้อนข้อมูลส่วนบุคคล” แบบไดนามิก

การส่งมอบเสร็จสมบูรณ์ ตอนนี้คุณสามารถไปยังองค์ประกอบที่สำคัญที่สุดประการหนึ่งในการสั่งซื้อได้ - การขอข้อมูลจากผู้ใช้เพื่อการจัดส่งหรือการจัดส่ง ในองค์ประกอบก่อนหน้านี้ ลูกค้าได้รับการร้องขอชุดฟิลด์เดียวกัน เขาต้องเลือกว่าจะกรอกช่องไหนซึ่งค่อนข้างไม่สะดวก

องค์ประกอบการชำระเงินใหม่สามารถขอชุดฟิลด์ที่แตกต่างกันได้ บ่อยกว่านั้น เจ้าของร้านค้าจะลดจำนวนข้อมูลที่จำเป็นต้องป้อนระหว่างการรับสินค้า บางทีในกรณีนี้ก็เพียงพอแล้วสำหรับเราที่จะรู้ว่า:

  • โทรศัพท์.
  • อีเมล. รายการนี้ยังสามารถลบออกได้ แต่บางครั้งคุณต้องการ "ปรนเปรอ" ลูกค้าด้วยจดหมายข่าวเกี่ยวกับผลิตภัณฑ์ใหม่
ไปที่ส่วนการดูแลระบบ "คุณสมบัติการสั่งซื้อ" -> "รายการคุณสมบัติ" และเลือกคุณสมบัติที่อยู่ที่จะเปลี่ยนแปลง:

เราจะเชื่อมโยงเฉพาะ "บริการจัดส่ง" ที่ควรแสดงฟิลด์นี้ จากนั้นเราไปที่ส่วนสาธารณะแล้วลองสั่งซื้อ เราเลือกรับของแล้วพบว่าทางร้านไม่ขอที่อยู่จัดส่งจากเรา

นี่เป็นฟังก์ชันที่มีประโยชน์และน่ายินดี ท้ายที่สุด คุณต้องยอมรับว่าการตอบคำถามของลูกค้าไม่ใช่เรื่องน่ายินดีนัก: “ทำไมคุณถึงต้องการที่อยู่ของฉัน ถ้าฉันจะไปรับสินค้าด้วยตัวเอง” ตอนนี้คุณไม่จำเป็นต้องทำเช่นนี้

จุดรับออเดอร์

สุดท้ายนี้ ฉันอยากจะพูดถึงการเปลี่ยนแปลงในบล็อกการเลือก "จุดรับคำสั่งซื้อ" ในเวอร์ชันก่อนหน้านี้ ข้อร้องเรียนหลักคือปัญหาในการแสดงจุดรับจำนวนมาก แผนที่ขนาดเล็ก และการขาดการเลือกจุดรับโดยอัตโนมัติ (หากมีเพียงจุดเดียว เป็นต้น)

ส่วนประกอบเวอร์ชันใหม่ได้เพิ่มการตั้งค่าสำหรับการแสดงจุดรับคำสั่งซื้อ หากเป็นเพียงเมืองเดียวในเมืองใดๆ เราจะแสดงบล็อกที่ยุบทันทีและแสดงข้อมูลทั้งหมดพร้อมรูปภาพ หรือแสดงบล็อกที่ขยาย ในกรณีแรก คุณจะต้องเข้าสู่บล็อกเพื่อแสดงแผนที่ และในกรณีที่สอง แผนที่จะปรากฏขึ้นทันที

การแก้ปัญหาเอาท์พุต บริการจัดส่งอัตโนมัติของร้านค้าออนไลน์ Bitrix v14 เมื่อทำการสั่งซื้อบน Yandex.Market

นี่คือสิ่งที่เรากำลังพูดถึง แต่ปรากฎว่ายังไม่ได้ดำเนินการ มีเพียงบริการที่กำหนดเองเท่านั้นที่ใช้งานได้ เราจะแก้ไขวันนี้
ที่นี่ฉันกำลังทดสอบการวางคำสั่งซื้อในแผง Yandex.Market ผู้ซื้อจะเห็นสิ่งเดียวกันเมื่อเขาสั่งซื้อบน Yandex.Market

การเลือกบริการอัตโนมัติ

ก่อนอื่นเราต้องเพิ่มบริการจัดส่งอัตโนมัติในการตั้งค่าโมดูล ร้านค้าออนไลน์ในส่วน ช้อปปิ้งในตลาด

เพราะ โดยค่าเริ่มต้นจะไม่อยู่ที่นั่นและเราจะไม่สามารถอัปเดตโมดูลร้านค้าออนไลน์ได้อีกต่อไป ฉันแก้ไขในโมดูลโดยตรงเนื่องจาก... ในกรณีของฉัน หากคุณอัปเดตร้านค้า ทุกอย่างจะหยุดทำงานให้กับลูกค้า ซึ่งในกรณีของคุณ ฉันไม่รู้ว่าต้องทำอย่างไร ลองคิดดูในร้านค้า Bitrix v16 ใหม่ บางทีนี่อาจจะไม่ทำงานเช่นกัน

การตั้งค่าระบุไว้ในหน้าการดูแลระบบในไฟล์
/bitrix/modules/sale/admin/ymarket.php

มีบริการที่กำหนดเองถึง หยิบและด้านล่างฉันได้แสดงบริการจัดส่งแบบอัตโนมัติ ซึ่งทั้งหมดมีค่าดังกล่าว จดหมายในกรณีของฉัน ต้องใช้เมลเท่านั้น หากคุณต้องการอย่างอื่น การแก้ไขก็ไม่ยากเพราะ หลักการจะชัดเจนว่าต้องทำอะไรและที่ไหน แต่บริการอัตโนมัติทั้งหมดจะปรากฏขึ้นบางทีอาจจะใช้งานได้ฉันแค่ยังไม่ได้ตรวจสอบ

ดังนั้นเราจึงพบว่าในไฟล์มีอาร์เรย์ของบริการแบบกำหนดเอง $arDeliveryList เกิดขึ้นและเพิ่มบริการอัตโนมัติลงไป

$arDeliveryFilter = อาร์เรย์(
"LID" => $arTab["SITE_ID"],
"ใช้งานอยู่" => "ใช่"
);

//การจัดส่งแบบคงที่
$dbDeliveryList = CSaleDelivery::GetList(
อาร์เรย์("NAME" => "ASC"),
$arDeliveryFilter,
เท็จ,
เท็จ,
อาร์เรย์("ID", "ชื่อ")
);

$arDeliveryList=array();
ในขณะที่ ($arDelivery = $dbDeliveryList->ดึงข้อมูล())
$arDeliveryList[$arDelivery["ID"]] = $arDelivery["NAME"];

//จัดส่งอัตโนมัติ
$dbRes = CSaleDeliveryHandler::GetList(
อาร์เรย์("NAME" => "ASC"),
$arDeliveryFilter
);
ในขณะที่($delivery = $dbRes->Fetch())
{
$deliveryId = ($delivery["ID"] ? $delivery["ID"] : $delivery["SID"]);
$arDeliveryList[ $deliveryId ] = $delivery["NAME"];
}


ต่อไป เราจะค้นหาบล็อกเอาต์พุตการจัดส่งและเพิ่มตัวเลือกสำหรับเมลไปยังรายการ ในกรณีของฉันมีการใส่ความคิดเห็นไว้ คุณน่าจะมีสิ่งเดียวกันมากที่สุด

นี่คือลักษณะการเลือกที่เสร็จสิ้นแล้วซึ่งจะแสดงบริการจัดส่งในแผงผู้ดูแลระบบ

$ชื่อจัดส่ง):
$selected = isset($siteSetts["DELIVERIES"][$deliveryId]) ? $siteSetts["การจัดส่ง"][$deliveryId] : "";
?>


ทุกอย่างเสร็จสิ้นด้วยการตั้งค่า สิ่งที่เหลืออยู่คือการสรุปสคริปต์ที่มาถึง คำขอจาก Yandex.Marketเขาบอกตลาดว่าจะแสดงสินค้าใดให้ผู้ซื้อเห็น เมื่อทำการสั่งซื้อบน Yandex.Market.

คำขอ Yandex.Market

คำขอทั้งหมดจาก Yandex.Market ถึง Bitrix มาที่ไฟล์นี้ก่อน โดยจะมีเฉพาะการเชื่อมต่อของไฟล์อื่นเท่านั้น
/bitrix/services/ymarket/index.php

ในไฟล์นั้น Bitrix API จะเชื่อมต่อเพื่อการโต้ตอบของ Yandex.Market กับร้านค้าออนไลน์ของคุณ
/bitrix/modules/sale/services/ymarket/index.php

ในไฟล์นี้เราสนใจวิธีการที่ไปไกลกว่าไฟล์ที่เราต้องการสำหรับการเปลี่ยนแปลง เราไม่ได้เปลี่ยนแปลงอะไรในนี้
$result = $YMHandler->processRequest($requestObject, $method, $postData);

และนี่คือไฟล์ของเรา ซึ่งตรรกะของการโต้ตอบระหว่าง Bitrix และ Yandex.Market ใช้งานได้
/bitrix/modules/sale/general/ym_handler.php

ฉันไม่ได้เขียนบทความทันที ฟังก์ชันการทำงานได้รับการทดสอบมาระยะหนึ่งแล้วและข้อผิดพลาดได้รับการแก้ไข แม้ว่าฉันจะลืมพูดอะไรก็ตาม ฉันแนบไฟล์มาด้วย คุณก็สามารถเข้าใจได้

โดยทั่วไป หากคุณไม่เคยทำการเปลี่ยนแปลงใดๆ กับไฟล์นี้บนเว็บไซต์ของคุณมาก่อน คุณสามารถลองใช้ไฟล์ทั้งหมดของฉันได้ ยกเว้นการส่งไฟล์ ซึ่งไม่มีอะไรเปลี่ยนแปลงในไฟล์ ทุกอย่างทำงานได้ตามปกติ

แล้วมีการเปลี่ยนแปลงอะไรบ้าง?ในคลาส CSaleYMHandler
1) เพิ่มตัวแปรที่จะจัดเก็บข้อมูลที่ครบถ้วนเกี่ยวกับสินค้าในรถเข็นเพื่อคำนวณการจัดส่งโดยบริการจัดส่งอัตโนมัติ
ป้องกัน $basketItems = array();

2) เปลี่ยนวิธีการฟังรถเข็นในตลาด รับข้อมูลเกี่ยวกับสินค้า (รถเข็น) และบริการส่งสินค้าคืนและวิธีการชำระเงิน
ฟังก์ชั่นที่ได้รับการป้องกัน processCartRequest($arPostData)

3) วิธีการรับข้อมูลเกี่ยวกับสินค้าในรถเข็นในตลาด (รหัส ราคา ปริมาณ น้ำหนัก ขนาด ฯลฯ) มีการเปลี่ยนแปลง
ฟังก์ชั่นที่ได้รับการป้องกัน getItemCartInfo($arItem, $currency)

4) วิธีการมีการเปลี่ยนแปลง ซึ่งได้รับข้อมูลเกี่ยวกับสถานที่ตั้งของผู้ซื้อ บริการจัดส่งที่มีให้กับเขาโดยการกรอง คำนวณการจัดส่ง และแสดงให้ผู้ซื้อเห็นในตลาด
ฟังก์ชั่นที่ได้รับการป้องกัน getDeliveryOptions($delivery, $price, $weight = 0, $arBasketItems = array())

ในวิธีนี้ มีการคำนวณบริการจัดส่ง Bitrix แบบกำหนดเองและอัตโนมัติ.

ให้ความสนใจที่นี่!

ในกรณีของฉัน ร้านค้าตั้งอยู่ในมอสโก และสำหรับมอสโก บริการจัดส่งอัตโนมัติทั้งหมดถูกปิดใช้งาน ไม่ควรแสดงสำหรับผู้ซื้อจากมอสโก งานรับและจัดส่งทางไปรษณีย์ที่นั่น เงื่อนไขนี้อยู่ในรหัส (หน้า 432):
ถ้า($locationTo == 2691) ดำเนินการต่อ;

5) วิธีการที่เพิ่มคำสั่งซื้อบนเว็บไซต์ของคุณ บอกตลาดว่า "ทุกอย่างเรียบร้อยดี" และส่งคืนหมายเลขให้กับ Yandex.Market มีการเปลี่ยนแปลง
ฟังก์ชั่นที่ได้รับการป้องกัน processOrderAcceptRequest($arPostData)

โดยเฉพาะบรรทัด 911 ที่เราได้รับ หมายเลขคำสั่งซื้อก็เป็นอย่างใดอย่างหนึ่ง รหัสคำสั่งซื้อ, หรือ รหัสสั่งซื้อเมื่อเปิดใช้งานการกำหนดหมายเลขคำสั่งซื้อตามเทมเพลต
$arResult["order"]["id"] = $this->getOrderNumber($orderID);

6) เพิ่มวิธีการส่งคืนหมายเลขคำสั่งซื้อบนเว็บไซต์ของคุณไปที่ Yandex.Market (รหัสคำสั่งซื้อหรือรหัสคำสั่งซื้อ)
ฟังก์ชั่นที่ได้รับการป้องกัน getOrderNumber($orderId)

นอกจากนี้

เพิ่มเติมเกี่ยวกับเว็บไซต์ที่อัปโหลด สถานที่ 2.0ฉันทำสิ่งนี้เมื่อปี 2558 ฉันจำได้ว่ามีปัญหากับ Yandex.Market, Bitrix กำลังมองหาสถานที่ไม่ถูกต้องและ Yandex.Market รายงานข้อผิดพลาด ฉันจำไม่ได้ว่าฉันทำที่ไหน ฉันเพิ่มไฟล์ ym_location.php ลงใน ที่เก็บถาวรไว้เผื่อหากพบโปรดแจ้งให้เราทราบฉันจะเพิ่มประเด็นนี้ในบทความ

บทสรุป

เมื่อทำการสั่งซื้อบน Yandex.Market ผู้ซื้อจะเห็นรายการการจัดส่งในแบบฟอร์มนี้ ร้านค้าของคุณจะส่งคืนสินค้าเหล่านั้น

ไฟล์ที่ใช้ในบทความจะแบ่งออกเป็นโฟลเดอร์ทั้งหมดซึ่งจะง่ายต่อการค้นหาไฟล์ใด

ผู้ประมวลผลบริการจัดส่งอัตโนมัติช่วยให้คุณสามารถใช้ตรรกะที่กำหนดเองโดยทางโปรแกรมเพื่อคำนวณต้นทุนการจัดส่งตามพารามิเตอร์คำสั่งซื้อและการตั้งค่าของคุณเอง อัลกอริธึมการคำนวณสามารถกำหนดเองได้ - ต้นทุนคงที่, การร้องขอบริการเว็บระยะไกล, การคำนวณตามตารางข้อมูลของตัวเอง ฯลฯ

ตัวจัดการคือคลาสหรือชุดของฟังก์ชันที่มีโครงสร้างดังต่อไปนี้:

วิธี คำอธิบาย
คำอธิบายตัวจัดการ ฟังก์ชันที่ส่งคืนคำอธิบายตัวจัดการ ชื่อเมธอด รายการโปรไฟล์ตัวจัดการ ฯลฯ
การตั้งค่าตัวจัดการ ฟังก์ชันที่ส่งคืนอาร์เรย์ของการตั้งค่าตัวจัดการ
การตั้งค่าการประมวลผล ชุดฟังก์ชันที่รับผิดชอบในการเตรียมการตั้งค่าสำหรับการเข้าสู่ฐานข้อมูลและการแปลงกลับ
การตรวจสอบความเข้ากันได้ วิธีการตรวจสอบความเข้ากันได้ของโปรไฟล์ของโปรเซสเซอร์ที่กำหนดกับคำสั่งซื้อ
ฟังก์ชั่นการคำนวณ วิธีการคำนวณต้นทุนการจัดส่งตามการตั้งค่าโปรเซสเซอร์และพารามิเตอร์การสั่งซื้อ

เนื่องจากการทำงานกับชุดของฟังก์ชันแต่ละชุดนั้นไม่สะดวก ขอแนะนำให้รวมฟังก์ชันเหล่านั้นไว้ในคลาส (เนมสเปซ) ตามคำแนะนำนี้ คำอธิบายเพิ่มเติมจะตามมา รวมถึงตัวอย่างที่ให้มาจะถูกนำไปใช้ ในตัวอย่าง ตัวจัดการ "จัดส่งจัดส่ง" ถูกนำมาใช้เป็นคลาCDeliveryMySimple

คำอธิบายตัวจัดการ

คำอธิบายตัวจัดการเป็นวิธีการที่ส่งกลับอาร์เรย์ที่เชื่อมโยงของโครงสร้างต่อไปนี้:

พารามิเตอร์ คำอธิบาย
เอสไอดี ตัวระบุสตริงเฉพาะของตัวจัดการ
ชื่อ ชื่อผู้ดำเนินการ
คำอธิบาย คำอธิบายข้อความของตัวจัดการ
DESCRIPTION_INNER คำอธิบายภายในของตัวจัดการ ซึ่งแสดงขึ้นเมื่อกำหนดค่าตัวจัดการในแผงควบคุม
BASE_CURRENCY รหัสสกุลเงินพื้นฐานของตัวจัดการ
ตัวจัดการ พาธไปยังไฟล์ตัวจัดการ จำเป็นสำหรับการคัดลอกตัวจัดการอัตโนมัติที่ถูกต้อง (ยังไม่ได้ใช้งาน) ในกรณีส่วนใหญ่ ค่า __FILE__ ก็เพียงพอแล้ว
รับการกำหนดค่า ชื่อของวิธีการที่ส่งกลับอาร์เรย์ของการตั้งค่าเครื่องมือตรวจสอบ หากตัวจัดการถูกนำมาใช้เป็นคลาส ค่าจะเป็นอาร์เรย์ ("class_name", "method_name")
การตั้งค่าฐานข้อมูล ชื่อของวิธีการที่รับผิดชอบในการตรวจสอบการตั้งค่าตัวจัดการและการแปลงอาร์เรย์การตั้งค่าเป็นสตริงสำหรับการบันทึก หากตัวจัดการถูกนำมาใช้เป็นคลาส ค่าจะเป็นอาร์เรย์ ("class_name", "method_name") หากไม่มีวิธีนี้ อาเรย์การตั้งค่าจะถูกบันทึกลงในฐานข้อมูลในรูปแบบซีเรียลไลซ์
DBGETSETTINGS ชื่อของวิธีการที่รับผิดชอบในการแปลงสตริงการตั้งค่าตัวจัดการกลับเป็นอาร์เรย์ หากตัวจัดการถูกนำมาใช้เป็นคลาส ค่าจะเป็นอาร์เรย์ ("class_name", "method_name")
ความเข้ากันได้ ชื่อของวิธีการที่รับผิดชอบในการตรวจสอบเพิ่มเติมความเข้ากันได้ของโปรไฟล์การประมวลผลด้วยพารามิเตอร์การสั่งซื้อ หากไม่มีวิธีการดังกล่าว จะไม่มีการตรวจสอบเพิ่มเติม หากตัวจัดการถูกนำมาใช้เป็นคลาส ค่าจะเป็นอาร์เรย์ ("class_name", "method_name")
เครื่องคิดเลข ชื่อของวิธีการคำนวณค่าจัดส่ง หากตัวจัดการถูกนำมาใช้เป็นคลาส ค่าจะเป็นอาร์เรย์ ("class_name", "method_name")
โปรไฟล์ อาร์เรย์ของโปรไฟล์การประมวลผล ต้องมีอย่างน้อยหนึ่งโปรไฟล์

สำหรับรูปแบบคำอธิบายดูด้านล่าง

"คำอธิบายโปรไฟล์เป็นอาร์เรย์ของรูปแบบต่อไปนี้: string_profile_identifier " => อาร์เรย์("TITLE" => "โปรไฟล์_ชื่อ , "คำอธิบาย" => "โปรไฟล์_คำอธิบาย ", // น้ำหนักระบุเป็นกรัม "RESTRICTIONS_WEIGHT" => array(, ขั้นต่ำ_น้ำหนักจำกัดน้ำหนัก ), // จำนวนเงินจะแสดงเป็นสกุลเงินหลักของตัวจัดการ "RESTRICTIONS_SUM" => array(, ขั้นต่ำ_สั่งซื้อ_จำนวน));

maximum_order_amount

หากอาร์เรย์ RESTRICTIONS_WEIGHT หรือ RESTRICTIONS_SUM มีองค์ประกอบเดียว จะถือว่าเป็นค่าต่ำสุด หากไม่มีข้อจำกัดใดๆ จะต้องระบุอาร์เรย์(0)
" .", "BASE_CURRENCY" => COption::GetOptionString("sale", "default_currency", "RUB"), "HANDLER" => __FILE__, /* วิธีการจัดการ */ "DBGETSETTINGS" => array(" CDeliveryMySimple" , "GetSettings"), "DBSETSETTINGS" => array("CDeliveryMySimple", "SetSettings"), "GETCONFIG" => array("CDeliveryMySimple", "GetConfig"), "ความเข้ากันได้" => array("CDeliveryMySimple" , " ความเข้ากันได้"), "CALCULATOR" => array("CDeliveryMySimple", "คำนวณ"), /* รายการโปรไฟล์การจัดส่ง */ "PROFILES" => array("simple" => array("TITLE" => " delivery" , "DESCRIPTION" => "ระยะเวลาจัดส่งสูงสุด 3 วัน", "RESTRICTIONS_WEIGHT" => array(0), "RESTRICTIONS_SUM" => array(0),),));

พารามิเตอร์ตัวตรวจสอบ

วิธีการที่ระบุโดยองค์ประกอบ GETCONFIG จะต้องส่งคืนอาร์เรย์ขององค์ประกอบของแบบฟอร์ม:

อาร์เรย์("CONFIG_GROUPS" => อาร์เรย์(" group_id1" => "group_name1", "group_id2" => "group_name2", /* ..................... */), "CONFIG" => array(" parameter_identifier1" => อาร์เรย์("TITLE" => " พารามิเตอร์_ชื่อ1, "ประเภท" => " พารามิเตอร์_type1, "ค่าเริ่มต้น" => " default_value ของพารามิเตอร์ 1, "กลุ่ม" => " parameter_group_identifier1"," "ค่า" => อาร์เรย์ (" พารามิเตอร์_ค่า1" => "name_value1_parameter1", "ค่า2_พารามิเตอร์1" => "name_value2_parameter1", /* ....................... */)), /* ........................ */))

กลุ่มของพารามิเตอร์ที่อธิบายไว้ในองค์ประกอบอาร์เรย์ที่มีคีย์ "CONFIG_GROUPS" จะแสดงเป็นแท็บแยกกันในรูปแบบสำหรับการแก้ไขพารามิเตอร์ตัวจัดการที่มีพารามิเตอร์ที่กำหนดให้กับกลุ่มนี้ องค์ประกอบอาร์เรย์ที่มีคีย์ "CONFIG" ระบุรายการพารามิเตอร์ ประเภทพารามิเตอร์สามารถรับค่าใดค่าหนึ่งต่อไปนี้:

  • STRING- ช่องป้อนข้อความ
  • รหัสผ่าน- ช่องป้อนรหัสผ่าน
  • กล่องกาเครื่องหมาย- องค์ประกอบของประเภท "ช่องทำเครื่องหมาย" ที่มีค่า "Y"
  • วิทยุ
  • ดรอปดาวน์- ชุดตัวเลือกในรูปแบบของรายการแบบเลื่อนลง
  • เลือกได้หลายรายการ- ชุดตัวเลือกในรูปแบบของรายการที่มีหลายตัวเลือก
  • วิทยุ- ชุดตัวเลือกในรูปแบบของปุ่มตัวเลือก

สำหรับประเภทพารามิเตอร์ หมายถึงตัวเลือกจากตัวเลือกค่าหลายค่า ( ดรอปดาวน์, เลือกได้หลายรายการและ วิทยุ) รายการค่าจะถูกระบุโดยองค์ประกอบของอาร์เรย์ที่สื่อความหมายด้วยคีย์ "VALUES" สำหรับพารามิเตอร์ประเภทอื่น องค์ประกอบนี้จะถูกละเว้น

ฟังก์ชัน GetConfig() ( $arConfig = array("CONFIG_GROUPS" => array("all" => "Delivery cost"),), "CONFIG" => array(),); // พารามิเตอร์ตัวจัดการในกรณีนี้คือค่าต้นทุน จัดส่งไปยังกลุ่มตำแหน่งต่างๆ // สำหรับสิ่งนี้ เราจะสร้างรายการพารามิเตอร์ตามรายการของกลุ่ม $dbLocationGroups = CSaleLocationGroup::GetList(); ในขณะที่ ($arLocationGroup = $dbLocationGroups->Fetch()) ( $arConfig[ "CONFIG"][" price_".$arLocationGroup["ID"]] = array("TYPE" => "STRING", "DEFAULT" => "", "TITLE" => "ค่าจัดส่งไปยังกลุ่ม "\" " .$arLocationGroup[" NAME"]."\" " .(".COption::GetOptionString("sale", "default_currency", "RUB").")", "GROUP" => "all",) ; ) ส่งคืน $arConfig;

พารามิเตอร์การประมวลผล

การจัดการพารามิเตอร์ตัวจัดการต้องใช้สองวิธี ซึ่งระบุไว้ในคำอธิบายโดยพารามิเตอร์ DBSETSETTINGS และ DBGETSETTINGS อันแรกได้รับเป็นอินพุตอาร์เรย์ของค่าพารามิเตอร์ของแบบฟอร์ม " parameter_identifier" => "พารามิเตอร์_ค่า" และควรส่งคืนการแสดงสตริง วิธีที่สองคือทำการแปลงแบบย้อนกลับ ทั้งสองวิธียังสามารถดำเนินการจัดการค่าพารามิเตอร์โดยพลการได้

Function SetSettings($arSettings) ( // ตรวจสอบรายการค่า ลบค่าว่างออกจากรายการ foreach ($arSettings as $key => $value) ( ​​​​if (strlen($value) > 0) $arSettings[$key] = doubleval($value); else unset($arSettings[$key]); // ส่งคืนค่าเป็นอาร์เรย์ที่ต่อเนื่องกัน สามารถใช้ฟังก์ชัน GetSettings($strSettings) ( // ส่งคืนอาร์เรย์การตั้งค่าที่ยกเลิกการซีเรียลไลซ์ return unserialize($strSettings); )

การตรวจสอบความเข้ากันได้

ความเข้ากันได้ของโปรไฟล์โปรเซสเซอร์กับลำดับจะถูกตรวจสอบโดยใช้วิธีการที่ระบุในคำอธิบายโดยพารามิเตอร์ "COMPABILITY" วิธีการนี้รับพารามิเตอร์ 2 ตัวเป็นอินพุต - อาร์เรย์เชิงพรรณนาของลำดับและอาร์เรย์ของการตั้งค่าตัวจัดการ การตอบสนองของเมธอดคาดว่าอาร์เรย์จะมีตัวระบุโปรไฟล์การจัดส่งที่เหมาะสมสำหรับคำสั่งซื้อที่กำหนด การตรวจสอบที่ระบุโดยค่า "RESTRICTIONS_WEIGHT" และ "RESTRICTIONS_SUM" ในการตั้งค่าโปรไฟล์จะดำเนินการนอกตัวจัดการและไม่จำเป็นที่นี่ รูปแบบของข้อมูลที่ยอมรับเป็นอินพุตมีดังนี้:

พารามิเตอร์แรก - ข้อมูลการสั่งซื้อ - เป็นอาร์เรย์ที่มีคีย์ต่อไปนี้:

พารามิเตอร์ตัวที่สองคือค่าของอาร์เรย์ที่ระบุโดยองค์ประกอบที่มีคีย์ "CONFIG" ในตัวจัดการ ให้กับแต่ละองค์ประกอบซึ่งมีการเพิ่มค่าของพารามิเตอร์ด้วยคีย์ "VALUE" .

ในตัวอย่างที่เรากำลังพิจารณา เงื่อนไขความเข้ากันได้เพียงอย่างเดียวคือการมีอยู่ในการตั้งค่าตัวจัดการของมูลค่าต้นทุนการจัดส่งสำหรับกลุ่มสถานที่ตั้งอย่างน้อยหนึ่งกลุ่มที่มีสถานที่ที่ส่งผ่านในคำสั่งซื้อ

// แนะนำวิธีการอรรถประโยชน์ที่กำหนดกลุ่มสถานที่ตั้งและส่งกลับต้นทุนสำหรับกลุ่มนั้น function __GetLocationPrice($LOCATION_ID, $arConfig) ( // รับรายชื่อกลุ่มสำหรับตำแหน่งที่ส่งผ่าน $dbLocationGroups = CSaleLocationGroup::GetLocationList(array("LOCATION_ID" => $LOCATION_ID)); while ($arLocationGroup = $dbLocationGroups->Fetch()) { if (array_key_exists("price_".$arLocationGroup["LOCATION_GROUP_ID"], $arConfig) && strlen($arConfig["price_".$arLocationGroup["LOCATION_GROUP_ID"]]["VALUE"] > 0)) { // если есть непустая запись в массиве настроек для данной группы, вернем ее значение return $arConfig["price_".$arLocationGroup["LOCATION_GROUP_ID"]]["VALUE"]; } } // если не найдено подходящих записей, вернем false return false; } // метод проверки совместимости в данном случае практически аналогичен рассчету стоимости function Compability($arOrder, $arConfig) { // проверим наличие стоимости доставки $price = CDeliveryMySimple::__GetLocationPrice($arOrder["LOCATION_TO"], $arConfig); if ($price === false) return array(); // если стоимость не найдено, вернем пустой массив - не подходит ни один профиль else return array("simple"); // в противном случае вернем массив, содержащий идентфиикатор единственного профиля доставки } !}

ตัวจัดการ

วิธีการหลักในการคำนวณต้นทุนการจัดส่งจะได้รับพารามิเตอร์อินพุตต่อไปนี้:

  • ตัวระบุโปรไฟล์การจัดส่ง
  • อาร์เรย์การตั้งค่าตัวจัดการการจัดส่ง
  • ลำดับอาร์เรย์คำอธิบาย
  • ขั้นตอนการคำนวณปัจจุบัน
  • ข้อมูลชั่วคราวที่ถ่ายโอนจากขั้นตอนการคำนวณก่อนหน้า

ผลลัพธ์ของตัวจัดการควรเป็นค่าจัดส่งในสกุลเงินที่ระบุในพารามิเตอร์ หรืออาร์เรย์ของโครงสร้างต่อไปนี้:

สำคัญ คำอธิบาย
ผลลัพธ์ รหัสการตอบกลับ ค่าที่เป็นไปได้:
  • "ตกลง" - คำนวณค่าจัดส่งเรียบร้อยแล้ว
  • "ข้อผิดพลาด" - เกิดข้อผิดพลาดระหว่างกระบวนการคำนวณ
  • "ถัดไป_ขั้นตอน" - คุณต้องไปที่ขั้นตอนถัดไปเพื่อคำนวณต่อ
ค่า มูลค่าของค่าจัดส่งในสกุลเงินที่ระบุในพารามิเตอร์
(ผลลัพธ์ = "ตกลง") การขนส่งสาธารณะ
ระยะเวลาการส่งเป็นวัน (RESULT = "OK") หากไม่มี ระยะเวลาจะไม่แสดง ระยะเวลาตั้งแต่
สายการส่งมอบบริการจัดส่งอัตโนมัติ จากจำนวนวันที่กำหนด จำเป็นสำหรับการส่งข้อมูลเวลาจัดส่งไปยัง Yandex.market ใช้เมื่อพัฒนาบริการจัดส่งของคุณเอง ระยะเวลาถึง
สายการส่งมอบบริการจัดส่งอัตโนมัติ จนกว่าจะครบตามจำนวนวันที่กำหนด จำเป็นสำหรับการส่งข้อมูลเวลาจัดส่งไปยัง Yandex.market ใช้เมื่อพัฒนาบริการจัดส่งของคุณเอง ข้อความ
ข้อความแสดงข้อผิดพลาดหรือข้อความที่มาพร้อมกับการเปลี่ยนไปยังขั้นตอนถัดไป (RESULT = ("ERROR"|"NEXT_STEP")) อุณหภูมิ

สตริงที่มีข้อมูลระดับกลางที่ส่งผ่านไปยังขั้นตอนถัดไป (RESULT = "NEXT_STEP")

Function Calculate($profile, $arConfig, $arOrder, $STEP, $TEMP = false) ( // วิธีการคำนวณยูทิลิตี้ถูกกำหนดไว้ข้างต้น เราเพียงแค่ต้องเปลี่ยนเส้นทางค่าที่ส่งคืนไปยังเอาต์พุต return array("RESULT" => "ตกลง", "VALUE" => CDeliveryMySimple::__GetLocationPrice($arOrder["LOCATION_TO"], $arConfig) )

บูรณาการตัวจัดการ

เส้นทางไปยังไฟล์ตัวจัดการที่เชื่อมต่อโดยอัตโนมัติได้รับการตั้งค่าในการตั้งค่าของโมดูล "ร้านค้าออนไลน์" เส้นทางเริ่มต้นคือ /bitrix/php_interface/include/sale_delivery/ ไฟล์ดังกล่าวต้องมีคำนำหน้า จัดส่ง_มิฉะนั้นจะถูกเพิกเฉย หากระบบตรวจพบไฟล์ที่มีชื่อเดียวกับระบบ ไฟล์นั้นจะเชื่อมต่อแทนระบบหนึ่ง การเปิดใช้งานการจัดส่งอัตโนมัติในไฟล์ทำได้โดยการตั้งค่าวิธีการอธิบายเป็นตัวจัดการสำหรับเหตุการณ์ onSaleDeliveryHandlersBuildList

ตัวอย่าง

เพื่อสรุปทั้งหมดที่กล่าวมาข้างต้น เรามาสร้างตัวจัดการการจัดส่งแบบง่ายๆ กันดีกว่า คลาสตัวจัดการจะอยู่ในไฟล์ /bitrix/php_interface/include/sale_delivery/delivery_mysimple.php

"simple", "NAME" => "จัดส่งโดยผู้จัดส่ง", "DESCRIPTION" => "", "DESCRIPTION_INNER" => "ตัวจัดการอย่างง่ายสำหรับการจัดส่งทางไปรษณีย์ เพื่อให้สามารถทำงานได้ " " ต้องมีกลุ่มสถานที่ตั้งอย่างน้อยหนึ่งกลุ่ม เมื่อตั้งค่าตัวจัดการ คุณต้องระบุ " .ต้นทุนการจัดส่งคงที่สำหรับกลุ่มสถานที่ตั้งแต่ละกลุ่ม หากต้องการป้องกันไม่ให้ " .group เข้าร่วมในการประมวลผล ให้เว้นช่องต้นทุนสำหรับกลุ่มนี้ว่างไว้" -
" ."" .แก้ไขกลุ่มสถานที่ตั้ง" .", "BASE_CURRENCY" => COption::GetOptionString("sale", "default_currency", "RUB"), "HANDLER" => __FILE__, /* วิธีการจัดการ */ "DBGETSETTINGS" => array("CDeliveryMySimple", "GetSettings"), "DBSETTINGS" => array("CDeliveryMySimple", "SetSettings"), "GETCONFIG" => array("CDeliveryMySimple", "GetConfig"), "ความเข้ากันได้" => array("CDeliveryMySimple", "ความเข้ากันได้ "), "CALCULATOR" => array("CDeliveryMySimple", "คำนวณ"), /* รายการโปรไฟล์การจัดส่ง */ "PROFILES" => array("simple" => array("TITLE" => "delivery", " DESCRIPTION" => "ระยะเวลาจัดส่งสูงสุด 3 วัน", "RESTRICTIONS_WEIGHT" => array(0), // ไม่มีข้อจำกัด "RESTRICTIONS_SUM" => array(0), // ไม่มีข้อจำกัด),)); ฟังก์ชันการตั้งค่าตัวจัดการ GetConfig() ( $arConfig = array("CONFIG_GROUPS" => array("all" => "Delivery cost"),), "CONFIG" => array(),); // การตั้งค่าตัวจัดการในกรณีนี้คือ การจัดส่งมูลค่าต้นทุนไปยังกลุ่มสถานที่ตั้งต่างๆ // สำหรับสิ่งนี้ เราจะสร้างรายการการตั้งค่าตามรายการของกลุ่ม $dbLocationGroups = CSaleLocationGroup::GetList(); $arLocationGroup["LOCATION_GROUP_ID"], $arConfig) && strlen($arConfig["price_".$arLocationGroup["LOCATION_GROUP_ID"]]["VALUE"] > 0)) ( // หากมีรายการที่ไม่ว่างเปล่าใน อาร์เรย์การตั้งค่าสำหรับกลุ่มนี้ ให้ส่งคืนค่า return $arConfig["price_".$arLocationGroup["LOCATION_GROUP_ID"]]["VALUE"]; ) // หากไม่พบบันทึกที่ตรงกัน ให้คืนค่า false return false;

โพสต์ข้อเท็จจริง

เคล็ดลับสุดท้ายบางประการ:

  • หากโปรเซสเซอร์ของคุณใช้การคำนวณที่ต้องใช้ทรัพยากรมาก การเรียกฐานข้อมูล คำขอไปยังเซิร์ฟเวอร์ระยะไกล ฯลฯ อย่างเด็ดขาดขอแนะนำให้ใช้ตัวเลือกการแคชผลลัพธ์หนึ่งหรือตัวเลือกอื่น ซึ่งนำไปใช้ในลักษณะที่จดจำผลลัพธ์อย่างน้อยสำหรับลำดับที่มีพารามิเตอร์เหล่านี้ นี่เป็นสิ่งจำเป็นเนื่องจากในระหว่างกระบวนการวางและประมวลผลคำสั่งซื้อการร้องขอไปยังผู้ประมวลผลเพื่อคำนวณต้นทุนของคำสั่งซื้ออาจเกิดขึ้นหลายครั้ง ตัวจัดการที่ให้มาจะใช้กลไกแคชที่ได้รับการจัดการ ซึ่งกำหนดค่าโดยคำนึงถึงลักษณะเฉพาะของอัลกอริธึมการคำนวณต้นทุนของบริการจัดส่งเฉพาะ
  • หากต้องการปรับแต่งตัวจัดการระบบ เพียงคัดลอกไฟล์ (พร้อมกับไฟล์ที่แนบมาด้วย ซึ่งโดยปกติจะอยู่ในไดเร็กทอรีที่มีชื่อเดียวกัน) ไปยังไดเร็กทอรี /bitrix/php_interface/include/sale_deivery/ โดยคงชื่อไว้ ในกรณีนี้มันจะเชื่อมต่อ แทนเป็นระบบ

วิธีโหลดไฟล์คอนฟิกูเรชัน:

วิธีตั้งค่าวิดเจ็ตตะกร้าสินค้า:

    ในบัญชีส่วนตัว Yandex.Delivery ของคุณ ให้ทำตามลิงก์การตั้งค่าที่มุมขวาบนของหน้า จากนั้นไปที่แท็บ บูรณาการ → วิดเจ็ต.

    ในบล็อกวิดเจ็ตรถเข็น ให้คลิกปุ่มติดตั้ง และคัดลอกโค้ดวิดเจ็ต

    กลับไปที่การตั้งค่าโมดูลและวางโค้ดลงในช่อง รหัสวิดเจ็ตรถเข็น.

อย่าลืมเลือกเมืองที่คลังสินค้าของคุณตั้งอยู่ หากคุณต้องการจัดส่งใบสั่งไปยังคลังสินค้าเดียว ให้เปิดใช้งานตัวเลือก ใช้คลังสินค้า Yandex.Delivery.

ค่าเริ่มต้นของผู้ส่ง

ในสนาม รหัสผู้ส่งเริ่มต้นเลือกร้านค้าที่มีการจัดส่งคำสั่งซื้อบ่อยที่สุด

ขนาดสินค้า

กำหนดขนาดและน้ำหนักของสินค้า มิติข้อมูลที่ระบุจะถูกส่งไปยัง Yandex.Delivery และค่าจัดส่งจะคำนวณตามขนาดเหล่านั้น

หากคุณไม่ทราบว่าจะเลือกค่าใดในบล็อกนี้ โปรดติดต่อผู้ดูแลไซต์ของคุณ

สั่งซื้อคุณสมบัติ

รายการทางด้านซ้ายแสดงรายการฟิลด์ที่ผู้ใช้กรอกเมื่อทำการสั่งซื้อ ในรายการทางด้านขวา ให้เลือกคุณสมบัติใบสั่งที่เหมาะสม รายการคุณสมบัติทั้งหมดอยู่ในหน้า ร้านค้า → สั่งซื้อคุณสมบัติ- คุณสมบัติที่เลือกจะถูกใช้ในบัตรคำสั่งซื้อ

หากคุณไม่ทราบว่าจะเลือกอะไรในบล็อกนี้ โปรดติดต่อผู้ดูแลไซต์ของคุณ

ความสนใจ. หากคุณตั้งค่าที่อยู่โดยอัตโนมัติ อย่าลืมตรวจสอบการตั้งค่าที่อยู่ เทมเพลตใหม่ใช้ในโมดูล "ร้านค้า" เวอร์ชันล่าสุด"))\"> เทมเพลตการสั่งซื้อ ใช้บนเว็บไซต์ของคุณ หากคุณใช้เทมเพลตเก่า ให้ตรวจสอบตัวเลือกที่เหมาะสม

สถานะการสั่งซื้อ

รายการทางด้านซ้ายแสดงสถานะของคำสั่งซื้อในระบบ Yandex.Delivery ในช่องด้านขวา ให้เลือกค่าที่เหมาะสมในระบบของคุณ

หากไม่มีสถานะในระบบของคุณสำหรับสถานะ Yandex.Delivery ให้เว้นช่องนี้ว่างไว้

คุณสมบัติของผลิตภัณฑ์

เลือกคุณสมบัติที่ตรงกับ SKU ของคำสั่งซื้อ หากคุณไม่แน่ใจว่าควรเลือกคุณสมบัติใด โปรดติดต่อผู้ดูแลไซต์ของคุณ

การตั้งค่าส่วนประกอบ

เปิดใช้งานตัวเลือกนี้เพื่อให้เมื่อทำการสั่งซื้อ ผู้ซื้อจะเห็นวิดเจ็ตตะกร้าสินค้าทันทีเมื่อเขาเลือก Yandex.Delivery ผู้ซื้อไม่จำเป็นต้องดำเนินการเพิ่มเติมเมื่อทำการสั่งซื้อ

ตัวอย่าง

วิธีส่งคำสั่งซื้อไปที่ Yandex.Delivery

วิธีส่งคำสั่งซื้อไปที่ Yandex.Delivery:

    ไปที่หน้าบนเว็บไซต์ของคุณ การบริหาร→ ร้านค้า → คำสั่งซื้อ.

    คลิก ID ของคำสั่งซื้อที่ต้องการ จากนั้นคลิกปุ่ม Yandex.Delivery

อาจมีข้อความในหน้าต่างส่งคำสั่งซื้อ “รายละเอียดการสั่งซื้อมีการเปลี่ยนแปลง ต้องคำนวณค่าจัดส่งใหม่”- คลิกปุ่ม เปลี่ยนตัวเลือกการจัดส่งและเลือกตัวเลือกใหม่

บันทึก. โมดูลไม่มีความสามารถในการจัดการการจัดส่ง - ซึ่งสามารถทำได้ในบัญชีส่วนตัว Yandex.Delivery ของคุณ

การติดตั้งวิดเจ็ต

คุณสามารถติดตั้งวิดเจ็ตทางภูมิศาสตร์หรือวิดเจ็ตตะกร้าสินค้าบนเว็บไซต์ของคุณได้

ขั้นตอนที่ 1 สร้างหน้าทดสอบบนเว็บไซต์

    ไปที่แท็บเว็บไซต์และที่แผงด้านบนให้คลิกปุ่ม สร้างเพจ.

    ในหน้าต่างที่เปิดขึ้น ให้เลือกตัวเลือก ไปที่การแก้ไขหน้าและ จำกัดการเข้าถึงเพจ- เปิดใช้งานการเข้าถึงสำหรับผู้ดูแลระบบเท่านั้น

    ไม่จำเป็นต้องกรอกอะไรอีก - คลิกปุ่มเสร็จสิ้น

ขั้นตอนที่ 2: ตั้งค่าวิดเจ็ต

    ขยายเมนู ร้านค้า → ส่วนประกอบยานเดกซ์มาร์เก็ตแล็บและลาก วิดเจ็ต Yandex.Deliveryลงในช่องว่างด้านซ้าย

    กลับไปที่การตั้งค่าโมดูลและวางโค้ดลงในฟิลด์ที่เหมาะสม

    ตั้งค่าส่วนที่เหลือแล้วคลิกปุ่มบันทึก หากคุณไม่แน่ใจว่าควรเลือกค่าใด โปรดติดต่อผู้ดูแลไซต์ของคุณ

ขั้นตอนที่ 3 เพิ่มวิดเจ็ตในเว็บไซต์ของคุณ

การแก้ปัญหา

โมดูลไม่ทำงาน

ก่อนอื่น ตรวจสอบให้แน่ใจว่าไซต์ของคุณตรงตามข้อกำหนดของระบบ ซึ่งสามารถทำได้บนหน้า การบริหาร→ การตั้งค่า → เครื่องมือ → การวินิจฉัย → การตั้งค่า PHP- ควรแสดงค่าต่อไปนี้:

    ในบล็อกบนสุด - PHP เวอร์ชัน 5.3–7.0

    ในตารางแรก ในบรรทัด Server API - Apache 2.0 หรือสูงกว่า

    ในตาราง MySQL ในบรรทัดเวอร์ชัน Client API - เวอร์ชัน 5.0 หรือสูงกว่า

    ในตาราง cURL ในบรรทัดสนับสนุน cURL - "เปิดใช้งาน"

หากไซต์ไม่ตรงตามข้อกำหนดใด ๆ โปรดติดต่อโฮสต์ของไซต์

นอกจากนี้ คุณยังสามารถเรียกใช้การสแกนไซต์บนเพจได้ การบริหาร→ การตั้งค่า → เครื่องมือ → การตรวจสอบระบบบนแท็บ การทดสอบการกำหนดค่าและ การตรวจสอบการเข้าถึง.

เมื่อติดตั้งโมดูล ข้อผิดพลาด “Yandex.Delivery service not found” จะปรากฏขึ้น

เพิ่มบริการด้วยตนเอง เมื่อต้องการทำสิ่งนี้:

    ไปที่หน้า การบริหาร→ ร้านค้า → การตั้งค่า → บริการจัดส่ง.

    คลิกปุ่มเพิ่มแล้วเลือกตัวเลือก บริการจัดส่งอัตโนมัติ.

    บนแท็บ การตั้งค่าตัวจัดการขยายรายการดรอปดาวน์บริการจัดส่งแล้วเลือก Yandex.Delivery

คำแนะนำ. หากคุณไม่สามารถแก้ไขปัญหาได้ โปรดติดต่อฝ่ายสนับสนุนในบัญชี Yandex.Delivery ของคุณ

ในวิธีการจัดส่ง ผู้ซื้อจะไม่เห็นลิงก์ Yandex.Delivery หรือลิงก์ "เลือกตัวเลือกการจัดส่ง"

ขั้นตอนที่ 1: ตรวจสอบบริการจัดส่ง

    ไปที่หน้า การบริหาร→ ร้านค้า → บริการจัดส่งและตรวจสอบว่าเพจมี Yandex.Delivery และเปิดใช้งานอยู่

    คลิกที่ Yandex.Delivery และตรวจสอบให้แน่ใจว่าแท็บข้อจำกัดในหน้าต่างที่เปิดขึ้นมานั้นว่างเปล่า

ขั้นตอนที่ 2: ตรวจสอบการตั้งค่าโมดูล

ไปที่หน้า การบริหารการตั้งค่าผลิตภัณฑ์การตั้งค่าโมดูล→ Yandex.Deliveryและตรวจสอบให้แน่ใจว่า:

    การตั้งค่าทั้งหมดในบล็อก การตั้งค่าการแลกเปลี่ยนได้รับการตั้งค่าอย่างถูกต้อง

    ในบล็อก ขนาดสินค้าได้รับค่าทั้งหมด

ขั้นตอนที่ 3: ตรวจสอบเมืองเริ่มต้นของคุณ

ตรวจสอบว่าตั้งค่าเมืองร้านค้าไว้ในการตั้งค่า:

    ไปที่หน้า การบริหาร→ คุณสมบัติการสั่งซื้อ → รายการคุณสมบัติ.

    สำหรับทรัพย์สินแต่ละแห่งที่มีประเภท "สถานที่ตั้ง" ให้คลิกหมายเลขทรัพย์สิน และในหน้าต่างที่เปิดขึ้น ให้ระบุเมืองที่ร้านค้าหลักหรือคลังสินค้าของคุณตั้งอยู่

ขั้นตอนที่ 4: เปิดใช้งานโหมดความเข้ากันได้

หากเว็บไซต์ของคุณใช้ เทมเพลตใหม่ใช้ในโมดูล "ร้านค้า" เวอร์ชันล่าสุด

"}}\">เทมเพลตการชำระเงินใหม่เปิดใช้งานโหมดความเข้ากันได้:

คำแนะนำ. หากคุณไม่สามารถแก้ไขปัญหาได้ โปรดติดต่อฝ่ายสนับสนุนในบัญชี Yandex.Delivery ของคุณ

ผู้ใช้ไม่เห็นค่าจัดส่งเมื่อเลือก Yandex.Delivery

คำแนะนำ. หากคุณไม่สามารถแก้ไขปัญหาได้ โปรดติดต่อฝ่ายสนับสนุนในบัญชี Yandex.Delivery ของคุณ

Yandex.Delivery ไม่รวมข้อมูลผู้ซื้อ

หากบัตรคำสั่งซื้อมีข้อมูลของผู้ซื้อทั้งหมด แต่ไม่มีแบบฟอร์มสำหรับส่งคำสั่งซื้อไปยัง Yandex.Delivery ให้ตรวจสอบการตั้งค่าคุณสมบัติคำสั่งซื้อในหน้า การบริหาร→ ร้านค้า → คุณสมบัติการสั่งซื้อ → รายการคุณสมบัติ.

"}}\">เทมเพลตการชำระเงิน :
  • เทมเพลตใหม่
  • แม่แบบเก่า

ไม่ว่าคุณจะเลี้ยงหมาป่ามากแค่ไหน หมูก็จะได้รสชาติดีขึ้น

Bitrix: การสร้างตัวจัดการบริการจัดส่งอัตโนมัติ

Bitrix มีบริการจัดส่งสองประเภท: กำหนดเองและอัตโนมัติ บทความนี้จะอธิบายวิธีสร้างเครื่องจัดการบริการจัดส่งแบบอัตโนมัติ

ตัวจัดการอัตโนมัตินี้คืออะไร?

ตัวจัดการที่ติดตั้งไว้ล่วงหน้าทั้งหมดอยู่ในโฟลเดอร์ /bitrix/modules/sale/lang/ru/delivery/ ตัวจัดการของคุณควรอยู่ในโฟลเดอร์ /bitrix/php_interface/include/sale_delivery/ (เส้นทางนี้สามารถเปลี่ยนแปลงได้ในคุณสมบัติของโมดูลร้านค้าออนไลน์)

ตัวจัดการคือคลาสของโครงสร้างเฉพาะที่มีสตริงการเชื่อมต่อสำหรับตัวจัดการการนำส่งเหตุการณ์ onSaleDeliveryHandlersBuildList.

คลาสตัวจัดการการจัดส่งต้องมีหลายวิธี ประเภทของการดำเนินการที่อธิบายไว้ในวิธี Init ของคลาส

1. Init - ฟิลด์หลักจะถูกเตรียมใช้งาน

2. DBGETSETTINGS - วิธีการอ่านค่าพารามิเตอร์

3. DBSETSETTINGS - วิธีการตั้งค่าพารามิเตอร์

4. GETCONFIG - กำหนดการกำหนดค่าการตั้งค่า (สามารถแบ่งออกเป็นแท็บได้)

5. ความเข้ากันได้ - ตรวจสอบความเข้ากันได้ของโปรไฟล์โปรเซสเซอร์กับคำสั่งซื้อ

6. CALCULATOR - คำนวณค่าจัดส่ง

1. SID - ตัวระบุสตริงเฉพาะของตัวจัดการ
2. NAME — ชื่อของผู้จัดการ
3. คำอธิบาย - คำอธิบายข้อความของตัวจัดการ
4. DESCRIPTION_INNER — คำอธิบายภายในของตัวจัดการ ซึ่งแสดงขึ้นเมื่อกำหนดค่าตัวจัดการในแผงควบคุม
5. BASE_CURRENCY — ตัวระบุสกุลเงินหลักของตัวจัดการ
6. HANDLER — พาธไปยังไฟล์ตัวจัดการ จำเป็นสำหรับการคัดลอกตัวจัดการอัตโนมัติที่ถูกต้อง (ยังไม่ได้ใช้งาน) ในกรณีส่วนใหญ่ ค่า __FILE__ ก็เพียงพอแล้ว

ต้องระบุอย่างน้อยหนึ่งรายการด้วย โปรไฟล์การจัดส่ง

"ธรรมดา", // ตัวระบุบริการจัดส่ง "NAME" => "Courier Krasnaya Presnya", "DESCRIPTION" => "คำอธิบายสำหรับลูกค้าไซต์", "DESCRIPTION_INNER" => "คำอธิบายสำหรับผู้ดูแลไซต์", "BASE_CURRENCY" = > "RUR", "HANDLER" => __FILE__, /* การกำหนดวิธีการ */ "DBGETSETTINGS" => array("CDeliveryPlain", "GetSettings"), "DBSETSETTINGS" => array("CDeliveryPlain", "SetSettings"), " GETCONFIG" => array("CDeliveryPlain", "GetConfig"), "COMPABILITY" => array("CDeliveryPlain", "ความเข้ากันได้"), "CALCULATOR" => array("CDeliveryPlain", "คำนวณ"), /* รายการโปรไฟล์ */ "PROFILES" => array("all" => array("TITLE" => "ไม่มีข้อจำกัด", "DESCRIPTION" => "โปรไฟล์การจัดส่งโดยไม่มีข้อจำกัดใดๆ", "RESTRICTIONS_WEIGHT" => array(0 ) , "RESTRICTIONS_SUM" => อาร์เรย์(0),),));<= 5000) $DeliveryCost = 750; elseif($TotalSum >= 5,000) $ค่าจัดส่ง = 0; return array("RESULT" => "OK", "VALUE" => $_SESSION["ORDER_DELIVERY_PRICE"], "VALUE" => $DeliveryCost);

) ) AddEventHandler("ขาย", "onSaleDeliveryHandlersBuildList", array("CDeliveryPlain", "Init")); -