วิธีการชำระเงินที่แตกต่างกันสำหรับประเภทผลิตภัณฑ์ที่แตกต่างกัน


11

มีวิธีให้วิธีการชำระเงินที่แตกต่างกันสำหรับผลิตภัณฑ์ประเภทต่างๆหรือไม่?

นี่คือสถานการณ์ของฉันและสิ่งที่ฉันได้คิดไปแล้ว:

ฉันมีสองประเภทผลิตภัณฑ์ในเว็บไซต์ Drupal Commerce ของฉันสำหรับการขายการเดินทางโดยรถบัส ประเภทหนึ่งเป็นเพียงการจองตั๋วรถบัสที่คุณเลือกวันที่และเวลา (รายการโฆษณาที่กำหนดเอง) สำหรับตั๋วบัสของคุณ อีกประเภทหนึ่งสำหรับการชำระเงินจริงซึ่งคุณสามารถเลือก Buss Pass เพิ่มทัวร์เพิ่มเติม (ด้วยรายการโฆษณาที่กำหนดเองด้วย) แล้วชำระเงินด้วย Paypal

ฉันกำลังใช้โมดูลตัวอย่างการชำระเงินแบบกำหนดเองสำหรับประเภทการชำระเงินการจองและการใช้โมดูล Drupal Commerce Paypal สำหรับการชำระเงินจริง

สิ่งที่ฉันต้องการคือมีวิธีชำระเงินการจองที่กำหนดเองสำหรับผลิตภัณฑ์หนึ่งประเภทและวิธีการชำระเงิน paypal สำหรับผลิตภัณฑ์ประเภทอื่น

ฉันพยายามเพิ่มเงื่อนไขสำหรับประเภทผลิตภัณฑ์และไม่สามารถทำได้ เราสามารถเพิ่มเงื่อนไขสำหรับผลิตภัณฑ์เฉพาะ แต่ไม่ใช่สำหรับประเภทผลิตภัณฑ์ นี่จะเป็นอุดมคติ: https://skitch.com/ipwa/eywxa/add-a-new-condition-chasquibus

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

โซลูชันของฉันจะสามารถมีเงื่อนไขสำหรับประเภทผลิตภัณฑ์ในกฎวิธีการชำระเงินหรือสามารถมี SKU ผลิตภัณฑ์การชำระเงินสี่รายการในเงื่อนไข 'คำสั่งซื้อมีผลิตภัณฑ์เฉพาะ'

คำตอบ:


10

ผลิตภัณฑ์typeเป็นคุณสมบัติของcommerce_productเอนทิตีดังนั้นคุณสามารถใช้เงื่อนไข "การเปรียบเทียบข้อมูล" ในตัวเพื่อทดสอบ

เพียงเพิ่มเงื่อนไขใหม่ของประเภท "การเปรียบเทียบข้อมูล" และทำให้ตัวเลือกข้อมูลมีลักษณะดังนี้:

ภาพหน้าจอ 1

เมื่อคุณดำเนินการต่อคุณจะได้รับหน้าจอดังนี้:

ภาพหน้าจอ 2

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

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

function MYMODULE_rules_condition_info() {
  return array(
    'commerce_product_is_type' => array(
      'label' => t('Product is a certain type'), 
      'parameter' => array(
        'product' => array(
          'label' => t('Product'),
          'type' => 'commerce_product',
        ),
        'type' => array(
          'label' => t('Product Type (Machine Name)'),
          'type' => 'text'
        )
      ), 
      'group' => t('Commerce Product'),
      'callbacks' => array(
        'execute' => 'MYMODULE_commerce_product_is_type',
      )
    ),
  );
}


function MYMODULE_commerce_product_is_type($product, $type) {
  return $product->type == $type;
}

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

@ipwa กลายเป็นว่ามันไม่ยุ่งยากเกินไปฉันได้อัปเดตคำตอบแล้ว
Clive

ฉันหวังว่าคุณจะไม่ได้ลบคำตอบก่อนหน้านี้และเพิ่มคำตอบนี้เป็นคำตอบอื่นแทน เมื่อฉันพยายามใช้ commerce-product: พิมพ์เป็นตัวเลือกข้อมูลสำหรับเงื่อนไขการเปรียบเทียบข้อมูลฉันได้รับข้อผิดพลาดนี้: "ตัวเลือก data commerce-product: ประเภทสำหรับข้อมูลพารามิเตอร์ไม่ถูกต้อง"
ipwa

@ipwa คุณหมายถึงอะไร อันที่มีรหัสหรืออันแรกสุด? ฉันใส่รหัสกลับในคำตอบในกรณีที่คุณหมายถึงอย่างนั้น
ไคลฟ์

ฉันหมายถึงคำตอบของคุณเกี่ยวกับการใช้ผลิตภัณฑ์ SKUS กับ OR ซึ่งช่วยให้ฉันเข้าใจมากขึ้นและวิธีใช้งาน กำลังใช้งานอยู่นั้นจะลองใช้โมดูลที่กำหนดเองเพื่อใช้สภาพของฉันเอง ขอบคุณที่เรียนรู้มากมายเกี่ยวกับกฎพร้อมคำตอบของคุณ
ipwa
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.