決済スクリプトの例
決済スクリプトは決済ゲートウェイサービスと相互に作用し,サービスのタイトル,表示および表示位置を変更できます。これらのスクリプトは,お客様がチェックアウトにあたり決済ゲートウェイサービスのページにアクセスするたびに実行されます。簡単なチェックアウトはお客様がチェックアウトペ,ジに移る前に表示されるので,決済スクリプトは,簡単なチェックアウトとは相互には作用しません。
このペ,ジのテンプレ,トを使用するには,空白のテンプレ,トで新しいスクリプトを作成します。
手順:
- 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
特定の国のサ,ビスを表示する
このスクリプトを使用して,お客様が特定の国から注文している場合には,特定のゲートウェイのみを表示します。
たとえば,お客様がカナダから注文している場合には,特定のゲ,トウェ,のみを表示します。その他の国の住所では,そのゲ,トウェ,は表示されません。
# ================================ 可定制的设置 ================================# ================================================================#显示国家的网关#如果收货地址国家与输入的任何国家相匹配#国家,输入的网关(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
特定の国に対してサ,ビスを非表示にする
このスクリプトを使用して、特定の国で決済ゲ、トウェ、サ、ビスを非表示にします。
たとえば,カナダのお客様には,特定のゲ,トウェ,を非表示にします。
# ================================ 可定制的设置 ================================# ================================================================#隐藏国家的入口#如果收货地址国家与输入的任何国家相匹配# 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