ตัวอย่างสคริปต์การชำระเงิน
สคริปต์การชำระเงินเชื่อมโยงกับช่องทางการชำระเงินและสามารถเปลี่ยนชื่อช่องทางการแสดงผลและตำแหน่งได้สคริปต์เหล่านี้ทำงานทุกครั้งที่ลูกค้าของคุณเข้าถึงหน้าวิธีชำระเงินในขั้นตอนการชำระเงินสคริปต์การชำระเงินไม่เชื่อมโยงกับการชำระเงินแบบเร่งด่วนเนื่องจากการชำระเงินแบบเร่งด่วนจะแสดงผลแก่ลูกค้าก่อนที่ลูกค้าจะเข้าถึงหน้าการชำระเงิน
หากต้องการใช้เทมเพลตในหน้านี้ให้สร้างสคริปต์ใหม่ด้วยเทมเพลตเปล่า
ขั้นตอน:
- จากส่วนShopify管理员ให้ไปที่แอป>脚本编辑器
- คลิกสร้างสคริปต์
- คลิกช่องทางการชำระเงิน
- เลือกเทมเพลตเปล่าแล้วคลิกสร้างสคริปต์
- ในส่วนซอร์สโค้ดของRubyให้ลบบรรทัดโค้ดเริ่มต้น:
输出。车=输入.车 - คัดลอกสคริปต์จากหน้านี้แล้ววางในส่วนซอร์สโค้ดของRuby
- แก้ไขส่วนการตั้งค่าแบบปรับแต่งเองของสคริปต์เพื่อให้ทำงานในร้านค้าของคุณ
- ทดสอบสคริปต์ของคุณหากต้องการข้อมูลเพิ่มเติมให้ไปที่การทดสอบและแก้จุดบกพร่องShopify脚本
- หลังจากการทดสอบ:
- คลิกบันทึกแบบร่างเพื่อบันทึกแบบร่างที่ยังไม่ได้เผยแพร่ของสคริปต์หรือ
- คลิกบันทึกและเผยแพร่เพื่อสร้างและเผยแพร่สคริปต์
แสดงช่องทางให้กับลูกค้าบางราย
ใช้สคริปต์นี้เพื่อแสดงเฉพาะตัวเลือกช่องทางการเข้าถึงเฉพาะลูกค้าที่มีแท็ก
ตัวอย่างเช่นแสดงเฉพาะช่องทางที่เฉพาะเจาะจงให้แก่ลูกค้าที่มีแท็ก贵宾โดยช่องทางการชำระเงินจะถูกซ่อนไว้สำหรับลูกค้ารายอื่น
# ================================ 可定制的设置 ================================# ================================================================#显示客户标签的网关#如果我们有一个匹配的客户,输入的网关将是#显示,所有其他将被隐藏。否则,输入的# gateway将被隐藏。## - 'customer_tag_match_type'决定我们是否寻找客户#是否使用输入的标签进行标记。可以是:# - ':include'检查客户是否被标记# - ':exclude'以确保客户没有被标记# - 'customer_tags'是一个客户标签列表,用于触发#活动# - 'gateway_match_type'决定下面的字符串是否#应该是完全匹配或部分匹配。可以是:# - ':exact'用于精确匹配# - ':partial'表示部分匹配# - 'gateway_names'是一个用于标识网关的字符串列表# ================================================================SHOW_GATEWAYS_FOR_CUSTOMER_TAG=[{customer_tag_match_type:包括,customer_tags:[“customer_tag”,“another_tag”],gateway_match_type:精确,gateway_names:[“网关”,“其他网关”],},]# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# CustomerTagSelector##查找所提供的客户是否有任何输入的标记。# ================================================================类CustomerTagSelectordef初始化(match_type,标签)@comparator=match_type= =:包括?“什么?”:“没有吗?”@ tags=标签.地图{|标签|标签.downcase.带}结束def比赛吗?(客户)customer_tags=客户.标签.地图{|标签|标签.downcase.带}(@ tags&customer_tags)。发送(@comparator)结束结束# ================================================================# GatewayNameSelector#查找所提供的网关名是否与#输入的名称。# ================================================================类GatewayNameSelectordef初始化(match_type,gateway_names)@comparator=match_type= =:确切?“= =”:“有吗?”@gateway_names=gateway_names.地图{|名字|名字.downcase.带}结束def比赛吗?(payment_gateway)@gateway_names.任何?{|名字|payment_gateway.名字.downcase.带.发送(@comparator,名字)}结束结束# ================================================================# ShowGatewaysForCustomerTagCampaign#如果客户有任何输入的标记,则输入的网关根据输入的设置显示/隐藏# ================================================================类ShowGatewaysForCustomerTagCampaigndef初始化(活动)@campaigns=活动结束def运行(车,payment_gateways)@campaigns.每一个做|运动|customer_tag_selector=CustomerTagSelector.新(运动[: customer_tag_match_type],运动[: customer_tags],)customer_match=车.客户.nil ??假:customer_tag_selector.比赛吗?(车.客户)gateway_name_selector=GatewayNameSelector.新(运动[: gateway_match_type],运动[: gateway_names],)payment_gateways.delete_if做|payment_gateway|gateway_name_selector.比赛吗?(payment_gateway)! =customer_match结束结束结束结束活动=[ShowGatewaysForCustomerTagCampaign.新(SHOW_GATEWAYS_FOR_CUSTOMER_TAG),]活动.每一个做|运动|运动.运行(输入.车,输入.payment_gateways)结束输出.payment_gateways=输入.payment_gateways
ซ่อนช่องทางจากลูกค้าบางราย
ใช้สคริปต์นี้เพื่อซ่อนช่องทางที่เฉพาะเจาะจงสำหรับลูกค้าที่มีแท็กโดยเฉพาะ
ตัวอย่างเช่นซ่อนช่องทางใดช่องทางหนึ่งสำหรับลูกค้าที่มีแท็กHIDE_GATEWAY
# ================================ 可定制的设置 ================================# ================================================================#隐藏客户标签的网关#如果我们有一个匹配的客户,输入的网关将是#隐藏。## - 'customer_tag_match_type'决定我们是否寻找客户#是否使用输入的标签进行标记。可以是:# - ':include'检查客户是否被标记# - ':exclude'以确保客户没有被标记# - 'customer_tags'是一个客户标签列表,用于触发#活动# - 'gateway_match_type'决定下面的字符串是否#应该是完全匹配或部分匹配。可以是:# - ':exact'用于精确匹配# - ':partial'表示部分匹配# - 'gateway_names'是一个用于标识网关的字符串列表# ================================================================HIDE_GATEWAYS_FOR_CUSTOMER_TAG=[{customer_tag_match_type:包括,customer_tags:[“customer_tag”,“another_tag”],gateway_match_type:精确,gateway_names:[“网关”,“其他网关”],},]# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# CustomerTagSelector##查找所提供的客户是否有任何输入的标记。# ================================================================类CustomerTagSelectordef初始化(match_type,标签)@comparator=match_type= =:包括?“什么?”:“没有吗?”@ tags=标签.地图{|标签|标签.downcase.带}结束def比赛吗?(客户)customer_tags=客户.标签.地图{|标签|标签.downcase.带}(@ tags&customer_tags)。发送(@comparator)结束结束# ================================================================# GatewayNameSelector#查找所提供的网关名是否与#输入的名称。# ================================================================类GatewayNameSelectordef初始化(match_type,gateway_names)@comparator=match_type= =:确切?“= =”:“有吗?”@gateway_names=gateway_names.地图{|名字|名字.downcase.带}结束def比赛吗?(payment_gateway)@gateway_names.任何?{|名字|payment_gateway.名字.downcase.带.发送(@comparator,名字)}结束结束# ================================================================# HideGatewaysForCustomerTagCampaign#如果我们有一个匹配的客户,输入的网关将是#隐藏。# ================================================================类HideGatewaysForCustomerTagCampaigndef初始化(活动)@campaigns=活动结束def运行(车,payment_gateways)返回如果车.客户.nil ?@campaigns.每一个做|运动|customer_tag_selector=CustomerTagSelector.新(运动[: customer_tag_match_type],运动[: customer_tags],)下一个除非customer_tag_selector.比赛吗?(车.客户)gateway_name_selector=GatewayNameSelector.新(运动[: gateway_match_type],运动[: gateway_names],)payment_gateways.delete_if做|payment_gateway|gateway_name_selector.比赛吗?(payment_gateway)结束结束结束结束活动=[HideGatewaysForCustomerTagCampaign.新(HIDE_GATEWAYS_FOR_CUSTOMER_TAG),]活动.每一个做|运动|运动.运行(输入.车,输入.payment_gateways)结束输出.payment_gateways=输入.payment_gateways
ซ่อนช่องทางสำหรับสินค้าเฉพาะรายการ
ใช้สคริปต์นี้เพื่อซ่อนช่องทางหนึ่งเมื่อมีการเพิ่มสินค้าที่กำหนดไว้ลงในตะกร้าสินค้า
ตัวอย่างเช่นซ่อนช่องทางใดช่องทางหนึ่งหากลูกค้าสั่งซื้อหมวก
# ================================ 可定制的设置 ================================# ================================================================#隐藏产品的网关##如果购物车中包含任何匹配的物品,则输入的网关#是隐藏的。## - 'product_selector_match_type'决定我们是否寻找#与输入选择器匹配或不匹配的产品。可以号是:# - ':include'检查产品是否匹配# - ':exclude'以确保产品不匹配# - 'product_selector_type'决定产品的合格程度#将被识别。可以是:# - ':tag'按标签查找产品# - ':type'按类型查找产品# - ':vendor'按供应商查找产品# - ':product_id'按ID查找产品# - ':variant_id'通过变量ID查找产品# - ':subscription'查找订阅产品# - 'product_selectors'是一个字符串或数字的列表#通过上述选择器类型识别产品# - 'gateway_match_type'决定下面的字符串是否#应该是完全匹配或部分匹配。可以是:# - ':exact'用于精确匹配# - ':partial'表示部分匹配# - 'gateway_names'是一个用于标识网关的字符串列表# ================================================================HIDE_GATEWAY_FOR_PRODUCT=[{product_selector_match_type:包括,product_selector_type: product_id,product_selectors:[1234567890987,1234567890986],gateway_match_type:精确,gateway_names:[“网关”,“其他网关”],},]# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# ProductSelector##根据输入的标准查找匹配的产品。# ================================================================类ProductSelectordef初始化(match_type,selector_type,选择器)@match_type=match_type@comparator=match_type= =:包括?“什么?”:“没有吗?”@selector_type=selector_type@ selector=选择器结束def比赛吗?(line_item)如果自我.respond_to吗?(@selector_type)自我.发送(@selector_type,line_item)其他的提高RuntimeError.新(“无效的产品选择器类型”)结束结束def标签(line_item)product_tags=line_item.变体.产品.标签.地图{|标签|标签.downcase.带}@ selector=@ selector.地图{|选择器|选择器.downcase.带}(@ selector&product_tags)。发送(@comparator)结束def类型(line_item)@ selector=@ selector.地图{|选择器|选择器.downcase.带}(@match_type= =:包括)= =@ selector.包括什么?(line_item.变体.产品.product_type.downcase.带)结束def供应商(line_item)@ selector=@ selector.地图{|选择器|选择器.downcase.带}(@match_type= =:包括)= =@ selector.包括什么?(line_item.变体.产品.供应商.downcase.带)结束defproduct_id(line_item)(@match_type= =:包括)= =@ selector.包括什么?(line_item.变体.产品.id)结束defvariant_id(line_item)(@match_type= =:包括)= =@ selector.包括什么?(line_item.变体.id)结束def订阅(line_item)!line_item.selling_plan_id.nil ?结束结束# ================================================================# GatewayNameSelector#查找所提供的网关名是否与#输入的名称。# ================================================================类GatewayNameSelectordef初始化(match_type,gateway_names)@comparator=match_type= =:确切?“= =”:“有吗?”@gateway_names=gateway_names.地图{|名字|名字.downcase.带}结束def比赛吗?(payment_gateway)@gateway_names.任何?{|名字|payment_gateway.名字.downcase.带.发送(@comparator,名字)}结束结束# ================================================================# HideGatewayForProductCampaign##如果购物车中包含任何匹配的物品,则输入的网关#是隐藏的。# ================================================================类HideGatewayForProductCampaigndef初始化(活动)@campaigns=活动结束def运行(车,payment_gateways)@campaigns.每一个做|运动|product_selector=ProductSelector.新(运动[: product_selector_match_type],运动[: product_selector_type],运动[: product_selectors],)下一个除非车.line_items.任何?{|line_item|product_selector.比赛吗?(line_item)}gateway_name_selector=GatewayNameSelector.新(运动[: gateway_match_type],运动[: gateway_names],)payment_gateways.delete_if做|payment_gateway|gateway_name_selector.比赛吗?(payment_gateway)结束结束结束结束活动=[HideGatewayForProductCampaign.新(HIDE_GATEWAY_FOR_PRODUCT),]活动.每一个做|运动|运动.运行(输入.车,输入.payment_gateways)结束输出.payment_gateways=输入.payment_gateways
แสดงช่องทางสำหรับบางประเทศ
ใช้สคริปต์นี้เพื่อแสดงเฉพาะช่องทางที่เฉพาะเจาะจงเมื่อลูกค้าสั่งซื้อจากประเทศใดประเทศหนึ่ง
ตัวอย่างเช่นแสดงเฉพาะช่องทางใดช่องทางหนึ่งเท่านั้นหากลูกค้าได้รับการสั่งซื้อจากแคนาดาโดยช่องทางการชำระเงินจะถูกซ่อนไว้สำหรับที่อยู่ในประเทศอื่น
:หมายเหตุการใช้
国家และcountry_codeนั้นจะเป็นไปตามที่กำหนดไว้เฉพาะภูมิภาคเท่านั้นเช่นประเทศ/ภูมิภาค
# ================================ 可定制的设置 ================================# ================================================================#显示国家的网关#如果收货地址国家与输入的任何国家相匹配#国家,输入的网关(s)将显示,以及所有其他#将被隐藏。否则,输入的网关将被隐藏。## - 'country_code_match_type'决定是否查找购物车是否匹配输入的选择器。可以是:# - ':include'在列表中查找一个国家# - ':exclude'以确保该国家不在列表中# - 'country_codes'是一个2个字符的缩写列表#适用国家# - 'gateway_match_type'决定下面的字符串是否#应该是完全匹配或部分匹配。可以是:# - ':exact'用于精确匹配# - ':partial'表示部分匹配# - 'gateway_names'是一个用于标识网关的字符串列表# ================================================================SHOW_GATEWAYS_FOR_COUNTRY=[{country_code_match_type:包括,country_code:[“CA”],gateway_match_type:精确,gateway_names:[“网关”,“其他网关”],},]# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# CountrySelector##查找所提供的国家代码是否与输入的国家代码匹配#字符串。# ================================================================类CountrySelectordef初始化(match_type,国家)@match_type=match_type@countries=国家.地图{|国家|国家.upcase.带}结束def比赛吗?(country_code)(@match_type= =:包括)= =@countries.包括什么?(country_code.upcase.带)结束结束# ================================================================# GatewayNameSelector#查找所提供的网关名是否与#输入的名称。# ================================================================类GatewayNameSelectordef初始化(match_type,gateway_names)@comparator=match_type= =:确切?“= =”:“有吗?”@gateway_names=gateway_names.地图{|名字|名字.downcase.带}结束def比赛吗?(payment_gateway)@gateway_names.任何?{|名字|payment_gateway.名字.downcase.带.发送(@comparator,名字)}结束结束# ================================================================# ShowGatewaysForCountryCampaign#如果收货地址国家与输入的任何国家相匹配#国家,输入的网关(s)将显示,以及所有其他#将被隐藏。否则,输入的网关将被隐藏。# ================================================================类ShowGatewaysForCountryCampaigndef初始化(活动)@campaigns=活动结束def运行(车,payment_gateways)地址=车.shipping_address@campaigns.每一个做|运动|country_selector=CountrySelector.新(运动[: country_code_match_type],运动[: country_code],)country_match=地址.nil ??假:country_selector.比赛吗?(地址.country_code)gateway_name_selector=GatewayNameSelector.新(运动[: gateway_match_type],运动[: gateway_names],)payment_gateways.delete_if做|payment_gateway|gateway_name_selector.比赛吗?(payment_gateway)! =country_match结束结束结束结束活动=[ShowGatewaysForCountryCampaign.新(SHOW_GATEWAYS_FOR_COUNTRY),]活动.每一个做|运动|运动.运行(输入.车,输入.payment_gateways)结束输出.payment_gateways=输入.payment_gateways
ซ่อนช่องทางสำหรับบางประเทศ
ใช้สคริปต์นี้เพื่อซ่อนช่องทางการชำระเงินในประเทศใดประเทศหนึ่ง
ตัวอย่างเช่นซ่อนช่องทางการชำระเงินที่เฉพาะเจาะจงจากลูกค้าในแคนาดา
:หมายเหตุการใช้
国家และcountry_codeนั้นจะเป็นไปตามที่กำหนดไว้เฉพาะภูมิภาคเท่านั้นเช่นประเทศ/ภูมิภาค
# ================================ 可定制的设置 ================================# ================================================================#隐藏国家的入口#如果收货地址国家与输入的任何国家相匹配# countries,输入的网关将被隐藏。## - 'country_code_match_type'决定是否查找购物车是否匹配输入的选择器。可以是:# - ':include'在列表中查找一个国家# - ':exclude'以确保该国家不在列表中# - 'country_codes'是一个2个字符的缩写列表#适用国家# - 'gateway_match_type'决定下面的字符串是否#应该是完全匹配或部分匹配。可以是:# - ':exact'用于精确匹配# - ':partial'表示部分匹配# - 'gateway_names'是一个用于标识网关的字符串列表# ================================================================HIDE_GATEWAYS_FOR_COUNTRY=[{country_code_match_type:包括,country_code:[“CA”],gateway_match_type:精确,gateway_names:[“网关”,“其他网关”],},]# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# CountrySelector##查找所提供的国家代码是否与输入的国家代码匹配#字符串。# ================================================================类CountrySelectordef初始化(match_type,国家)@match_type=match_type@countries=国家.地图{|国家|国家.upcase.带}结束def比赛吗?(country_code)(@match_type= =:包括)= =@countries.包括什么?(country_code.upcase.带)结束结束# ================================================================# GatewayNameSelector#查找所提供的网关名是否与#输入的名称。# ================================================================类GatewayNameSelectordef初始化(match_type,gateway_names)@comparator=match_type= =:确切?“= =”:“有吗?”@gateway_names=gateway_names.地图{|名字|名字.downcase.带}结束def比赛吗?(payment_gateway)@gateway_names.任何?{|名字|payment_gateway.名字.downcase.带.发送(@comparator,名字)}结束结束# ================================================================# HideGatewaysForCountryCampaign#如果收货地址国家与输入的任何国家相匹配# countries,输入的网关将被隐藏。# ================================================================类HideGatewaysForCountryCampaigndef初始化(活动)@campaigns=活动结束def运行(车,payment_gateways)地址=车.shipping_address返回如果地址.nil ?@campaigns.每一个做|运动|country_selector=CountrySelector.新(运动[: country_code_match_type],运动[: country_code],)下一个除非country_selector.比赛吗?(地址.country_code)gateway_name_selector=GatewayNameSelector.新(运动[: gateway_match_type],运动[: gateway_names],)payment_gateways.delete_if做|payment_gateway|gateway_name_selector.比赛吗?(payment_gateway)结束结束结束结束活动=[HideGatewaysForCountryCampaign.新(HIDE_GATEWAYS_FOR_COUNTRY),]活动.每一个做|运动|运动.运行(输入.车,输入.payment_gateways)结束输出.payment_gateways=输入.payment_gateways
แสดงเกตเวย์โดยใช้จ่าย
ใช้สคริปต์นี้เพื่อแสดงช่องทางใดช่องทางหนึ่งหากลูกค้าใช้งานเกินจำนวนที่กำหนด
ตัวอย่างเช่นคุณสามารถแสดงช่องทางหนึ่งได้หากลูกค้าใช้จ่ายไป1000美元หรือมากกว่าแต่ถ้าหากน้อยกว่านั้นก็ให้ซ่อนช่องทางนั้นไว้
# ================================ 可定制的设置 ================================# ================================================================#显示开销阈值的网关##如果购物车总数大于或等于输入的# threshold,则显示输入的网关。## -“threshold”是客户必须消费的金额#命令查看输入的网关# - 'gateway_match_type'决定下面的字符串是否#应该是完全匹配或部分匹配。可以是:# - ':exact'用于精确匹配# - ':partial'表示部分匹配# - 'gateway_names'是一个用于标识网关的字符串列表# ================================================================SHOW_GATEWAYS_FOR_THRESHOLD=[{阈值:500,gateway_match_type:精确,gateway_names:[“网关”,“其他网关”],},]# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# GatewayNameSelector#查找所提供的网关名是否与#输入的名称。# ================================================================类GatewayNameSelectordef初始化(match_type,gateway_names)@comparator=match_type= =:确切?“= =”:“有吗?”@gateway_names=gateway_names.地图{|名字|名字.downcase.带}结束def比赛吗?(payment_gateway)@gateway_names.任何?{|名字|payment_gateway.名字.downcase.带.发送(@comparator,名字)}结束结束# ================================================================# ShowGatewaysForThresholdCampaign##如果购物车总数大于或等于输入的# threshold,则显示输入的网关。# ================================================================类ShowGatewaysForThresholdCampaigndef初始化(活动)@campaigns=活动结束def运行(车,payment_gateways)@campaigns.每一个做|运动|下一个除非车.subtotal_price<(钱.新(分:One hundred.)*运动[:阈值])gateway_name_selector=GatewayNameSelector.新(运动[: gateway_match_type],运动[: gateway_names],)payment_gateways.delete_if做|payment_gateway|gateway_name_selector.比赛吗?(payment_gateway)结束结束结束结束活动=[ShowGatewaysForThresholdCampaign.新(SHOW_GATEWAYS_FOR_THRESHOLD),]活动.每一个做|运动|运动.运行(输入.车,输入.payment_gateways)结束输出.payment_gateways=输入.payment_gateways
จัดลำดับช่องทาง
ใช้สคริปต์นี้เพื่อเปลี่ยนลำดับเริ่มต้นของช่องทางการชำระเงินที่เสนอให้แก่ลูกค้าของคุณ
# ================================ 可定制的设置 ================================# ================================================================#重新排序网关##您希望网关显示的顺序# ================================================================DESIRED_GATEWAY_ORDER=[“支付网关1”,“支付网关2”,“支付网关3”,]# ================================ 脚本代码(不要编辑 ) ================================# ================================================================# ReorderGatewaysCampaign##将网关重新排序到输入的顺序# ================================================================类ReorderGatewaysCampaigndef初始化(desired_order)@desired_order=desired_order.地图{|项|项.downcase.带}结束def运行(车,payment_gateways)payment_gateways.sort_by !{|payment_gateway|@desired_order.指数(payment_gateway.名字.downcase.带)||浮动::∞}结束结束活动=[ReorderGatewaysCampaign.新(DESIRED_GATEWAY_ORDER),]活动.每一个做|运动|运动.运行(输入.车,输入.payment_gateways)结束输出.payment_gateways=输入.payment_gateways