Script di pagamento di esempio

Gli script di pagamento interagiscono con i canali di pagamento e possono modificare il titolo di un canale, la visibilità e la posizione di visualizzazione. Tali script vengono eseguiti ogni volta che il cliente accede alla pagina dei metodi di pagamento al check-out. Gli script di pagamento non interagiscono con icheck-out velocipoiché tali check-out sono mostrati ai clienti prima che raggiungano la pagina di check-out.

Per utilizzare i modelli su questa pagina, crea un nuovo script con un modello vuoto.

箴cedura:

  1. Dal pannello di controllo Shopify vai suApp>Script Editor.
  2. Clicca suCrea script.
  3. Clicca suCanali di pagamento.
  4. SelezionaModello vuotoe clicca suCrea script.
  5. Nella sezioneCodice sorgente di Ruby, elimina la riga di codice predefinita:Output.cart = Input.cart
  6. Copia uno script da questa pagina e incollalo nella sezioneCodice sorgente di Ruby.
  7. Modifica la sezioneImpostazioni personalizzabilidello script affinché funzioni nel negozio.
  8. Testa lo script. Per maggiori informazioni, consulta la sezioneEsecuzione di test e debug degli script Shopify.
  9. Dopo il test:
    • Clicca suSalva bozzaper salvare una bozza non pubblicata dello script oppure
    • Clicca suSalva e pubblicaper creare e pubblicare lo script.

Mostra canali per clienti specifici

Utilizza questo script per mostrare solo un'opzione di canale specifica ai clienti contrassegnati con un tag specifico.

Ad esempio, mostra solo un canale specifico ai clienti contrassegnati con il tagVIP; il canale è nascosto per tutti gli altri clienti.

# ================================ Customizable Settings ================================# ================================================================# Show Gateways For Customer Tag## If we have a matching customer, the entered gateway(s) will be# shown, and all others will be hidden. Otherwise, the entered# gateway(s) will be hidden.## - 'customer_tag_match_type' determines whether we look for the customer# to be tagged with any of the entered tags or not. Can be:# - ':include' to check if the customer is tagged# - ':exclude' to make sure the customer isn't tagged# - 'customer_tags' is a list of customer tags to trigger the# campaign# - 'gateway_match_type' determines whether the below strings# should be an exact or partial match. Can be:# - ':exact' for an exact match# - ':partial' for a partial match# - 'gateway_names' is a list of strings to identify gateways# ================================================================SHOW_GATEWAYS_FOR_CUSTOMER_TAG=[{customer_tag_match_type: :include,customer_tags:["customer_tag","another_tag"],gateway_match_type: :exact,gateway_names:["Gateway","Other Gateway"],},]# ================================ Script Code (do not edit) ================================# ================================================================# CustomerTagSelector## Finds whether the supplied customer has any of the entered tags.# ================================================================classCustomerTagSelectordefinitialize(match_type,tags)@comparator=match_type==:include?'any?':'none?'@tags=tags.map{|tag|tag.downcase.strip}enddefmatch?(customer)customer_tags=customer.tags.map{|tag|tag.downcase.strip}(@tags&customer_tags).send(@comparator)endend# ================================================================# GatewayNameSelector## Finds whether the supplied gateway name matches any of the# entered names.# ================================================================classGatewayNameSelectordefinitialize(match_type,gateway_names)@comparator=match_type==:exact?'==':'include?'@gateway_names=gateway_names.map{|name|name.downcase.strip}enddefmatch?(payment_gateway)@gateway_names.any?{|name|payment_gateway.name.downcase.strip.send(@comparator,name)}endend# ================================================================# ShowGatewaysForCustomerTagCampaign## If the customer has any of the entered tags, the entered gateways# are shown/hidden depending on the entered settings# ================================================================classShowGatewaysForCustomerTagCampaigndefinitialize(campaigns)@campaigns=campaignsenddefrun(cart,payment_gateways)@campaigns.eachdo|campaign|customer_tag_selector=CustomerTagSelector.new(campaign[:customer_tag_match_type],campaign[:customer_tags],)customer_match=cart.customer.nil??false:customer_tag_selector.match?(cart.customer)gateway_name_selector=GatewayNameSelector.new(campaign[:gateway_match_type],campaign[:gateway_names],)payment_gateways.delete_ifdo|payment_gateway|gateway_name_selector.match?(payment_gateway)!=customer_matchendendendendCAMPAIGNS=[ShowGatewaysForCustomerTagCampaign.new(SHOW_GATEWAYS_FOR_CUSTOMER_TAG),]CAMPAIGNS.eachdo|campaign|campaign.run(Input.cart,Input.payment_gateways)endOutput.payment_gateways=Input.payment_gateways

Nascondi canali per paesi specifici

Utilizza questo script per nascondere un canale specifico ai clienti contrassegnati con un tag specifico.

Ad esempio, nascondi un particolare canale ai clienti contrassegnati con il tagHIDE_GATEWAY.

# ================================ Customizable Settings ================================# ================================================================# Hide Gateways For Customer Tag## If we have a matching customer, the entered gateway(s) will be# hidden.## - 'customer_tag_match_type' determines whether we look for the customer# to be tagged with any of the entered tags or not. Can be:# - ':include' to check if the customer is tagged# - ':exclude' to make sure the customer isn't tagged# - 'customer_tags' is a list of customer tags to trigger the# campaign# - 'gateway_match_type' determines whether the below strings# should be an exact or partial match. Can be:# - ':exact' for an exact match# - ':partial' for a partial match# - 'gateway_names' is a list of strings to identify gateways# ================================================================HIDE_GATEWAYS_FOR_CUSTOMER_TAG=[{customer_tag_match_type: :include,customer_tags:["customer_tag","another_tag"],gateway_match_type: :exact,gateway_names:["Gateway","Other Gateway"],},]# ================================ Script Code (do not edit) ================================# ================================================================# CustomerTagSelector## Finds whether the supplied customer has any of the entered tags.# ================================================================classCustomerTagSelectordefinitialize(match_type,tags)@comparator=match_type==:include?'any?':'none?'@tags=tags.map{|tag|tag.downcase.strip}enddefmatch?(customer)customer_tags=customer.tags.map{|tag|tag.downcase.strip}(@tags&customer_tags).send(@comparator)endend# ================================================================# GatewayNameSelector## Finds whether the supplied gateway name matches any of the# entered names.# ================================================================classGatewayNameSelectordefinitialize(match_type,gateway_names)@comparator=match_type==:exact?'==':'include?'@gateway_names=gateway_names.map{|name|name.downcase.strip}enddefmatch?(payment_gateway)@gateway_names.any?{|name|payment_gateway.name.downcase.strip.send(@comparator,name)}endend# ================================================================# HideGatewaysForCustomerTagCampaign## If we have a matching customer, the entered gateway(s) will be# hidden.# ================================================================classHideGatewaysForCustomerTagCampaigndefinitialize(campaigns)@campaigns=campaignsenddefrun(cart,payment_gateways)返回ifcart.customer.nil?@campaigns.eachdo|campaign|customer_tag_selector=CustomerTagSelector.new(campaign[:customer_tag_match_type],campaign[:customer_tags],)nextunlesscustomer_tag_selector.match?(cart.customer)gateway_name_selector=GatewayNameSelector.new(campaign[:gateway_match_type],campaign[:gateway_names],)payment_gateways.delete_ifdo|payment_gateway|gateway_name_selector.match?(payment_gateway)endendendendCAMPAIGNS=[HideGatewaysForCustomerTagCampaign.new(HIDE_GATEWAYS_FOR_CUSTOMER_TAG),]CAMPAIGNS.eachdo|campaign|campaign.run(Input.cart,Input.payment_gateways)endOutput.payment_gateways=Input.payment_gateways

Nascondi i canali per prodotti specifici

Utilizza questo script per nascondere un canale specifico quando vengono aggiunti articoli specifici al carrello.

Ad esempio, nascondi un particolare canale se il cliente ordina un cappello.

# ================================ Customizable Settings ================================# ================================================================# Hide Gateway(s) for Product## If the cart contains any matching items, the entered gateway(s)# are hidden.## - 'product_selector_match_type' determines whether we look for# products that do or don't match the entered selectors. Can# be:# - ':include' to check if the product does match# - ':exclude' to make sure the product doesn't match# - 'product_selector_type' determines how eligible products# will be identified. Can be either:# - ':tag' to find products by tag# - ':type' to find products by type# - ':vendor' to find products by vendor# - ':product_id' to find products by ID# - ':variant_id' to find products by variant ID#——“:订阅订阅连续cts# - 'product_selectors' is a list of strings or numbers to# identify products by the above selector type# - 'gateway_match_type' determines whether the below strings# should be an exact or partial match. Can be:# - ':exact' for an exact match# - ':partial' for a partial match# - 'gateway_names' is a list of strings to identify gateways# ================================================================HIDE_GATEWAY_FOR_PRODUCT=[{product_selector_match_type: :include,product_selector_type: :product_id,product_selectors:[1234567890987,1234567890986],gateway_match_type: :exact,gateway_names:["Gateway","Other Gateway"],},]# ================================ Script Code (do not edit) ================================# ================================================================# ProductSelector## Finds matching products by the entered criteria.# ================================================================class箴ductSelectordefinitialize(match_type,selector_type,selectors)@match_type=match_type@comparator=match_type==:include?'any?':'none?'@selector_type=selector_type@selectors=selectorsenddefmatch?(line_item)ifself.respond_to?(@selector_type)self.send(@selector_type,line_item)elseraiseRuntimeError.new('Invalid product selector type')endenddeftag(line_item)product_tags=line_item.variant.product.tags.map{|tag|tag.downcase.strip}@selectors=@selectors.map{|selector|selector.downcase.strip}(@selectors&product_tags).send(@comparator)enddeftype(line_item)@selectors=@selectors.map{|selector|selector.downcase.strip}(@match_type==:include)==@selectors.include?(line_item.variant.product.product_type.downcase.strip)enddefvendor(line_item)@selectors=@selectors.map{|selector|selector.downcase.strip}(@match_type==:include)==@selectors.include?(line_item.variant.product.vendor.downcase.strip)enddefproduct_id(line_item)(@match_type==:include)==@selectors.include?(line_item.variant.product.id)enddefvariant_id(line_item)(@match_type==:include)==@selectors.include?(line_item.variant.id)enddefsubscription(line_item)!line_item.selling_plan_id.nil?endend# ================================================================# GatewayNameSelector## Finds whether the supplied gateway name matches any of the# entered names.# ================================================================classGatewayNameSelectordefinitialize(match_type,gateway_names)@comparator=match_type==:exact?'==':'include?'@gateway_names=gateway_names.map{|name|name.downcase.strip}enddefmatch?(payment_gateway)@gateway_names.any?{|name|payment_gateway.name.downcase.strip.send(@comparator,name)}endend# ================================================================# HideGatewayForProductCampaign## If the cart contains any matching items, the entered gateway(s)# are hidden.# ================================================================classHideGatewayForProductCampaigndefinitialize(campaigns)@campaigns=campaignsenddefrun(cart,payment_gateways)@campaigns.eachdo|campaign|product_selector=箴ductSelector.new(campaign[:product_selector_match_type],campaign[:product_selector_type],campaign[:product_selectors],)nextunlesscart.line_items.any?{|line_item|product_selector.match?(line_item)}gateway_name_selector=GatewayNameSelector.new(campaign[:gateway_match_type],campaign[:gateway_names],)payment_gateways.delete_ifdo|payment_gateway|gateway_name_selector.match?(payment_gateway)endendendendCAMPAIGNS=[HideGatewayForProductCampaign.new(HIDE_GATEWAY_FOR_PRODUCT),]CAMPAIGNS.eachdo|campaign|campaign.run(Input.cart,Input.payment_gateways)endOutput.payment_gateways=Input.payment_gateways

Mostra canali per paesi specifici

Utilizza questo script per mostrare solo un canale specifico quando un cliente effettua un ordine da un paese specifico.

Ad esempio, mostra solo un particolare canale se un cliente effettua un ordine dal Canada; il canale è nascosto per gli indirizzi di qualsiasi altro paese.

# ================================ Customizable Settings ================================# ================================================================# Show Gateway(s) for Country## If the shipping address country matches any of the entered# countries, the entered gateway(s) will be shown, and all others# will be hidden. Otherwise, the entered gateway(s) will be hidden.## - 'country_code_match_type' determines whether we look for the cart# country to match the entered selectors or not. Can be:# - ':include' to look for a country in the list# - ':exclude' to make sure the country is not in the list# - 'country_codes' is a list of 2-character abbreviations for# the applicable countries# - 'gateway_match_type' determines whether the below strings# should be an exact or partial match. Can be:# - ':exact' for an exact match# - ':partial' for a partial match# - 'gateway_names' is a list of strings to identify gateways# ================================================================SHOW_GATEWAYS_FOR_COUNTRY=[{country_code_match_type: :include,country_codes:["CA"],gateway_match_type: :exact,gateway_names:["Gateway","Other Gateway"],},]# ================================ Script Code (do not edit) ================================# ================================================================# CountrySelector## Finds whether the supplied country code matches the entered# string.# ================================================================classCountrySelectordefinitialize(match_type,countries)@match_type=match_type@countries=countries.map{|country|country.upcase.strip}enddefmatch?(country_code)(@match_type==:include)==@countries.include?(country_code.upcase.strip)endend# ================================================================# GatewayNameSelector## Finds whether the supplied gateway name matches any of the# entered names.# ================================================================classGatewayNameSelectordefinitialize(match_type,gateway_names)@comparator=match_type==:exact?'==':'include?'@gateway_names=gateway_names.map{|name|name.downcase.strip}enddefmatch?(payment_gateway)@gateway_names.any?{|name|payment_gateway.name.downcase.strip.send(@comparator,name)}endend# ================================================================# ShowGatewaysForCountryCampaign## If the shipping address country matches any of the entered# countries, the entered gateway(s) will be shown, and all others# will be hidden. Otherwise, the entered gateway(s) will be hidden.# ================================================================classShowGatewaysForCountryCampaigndefinitialize(campaigns)@campaigns=campaignsenddefrun(cart,payment_gateways)address=cart.shipping_address@campaigns.eachdo|campaign|country_selector=CountrySelector.new(campaign[:country_code_match_type],campaign[:country_codes],)country_match=address.nil??false:country_selector.match?(address.country_code)gateway_name_selector=GatewayNameSelector.new(campaign[:gateway_match_type],campaign[:gateway_names],)payment_gateways.delete_ifdo|payment_gateway|gateway_name_selector.match?(payment_gateway)!=country_matchendendendendCAMPAIGNS=[ShowGatewaysForCountryCampaign.new(SHOW_GATEWAYS_FOR_COUNTRY),]CAMPAIGNS.eachdo|campaign|campaign.run(Input.cart,Input.payment_gateways)endOutput.payment_gateways=Input.payment_gateways

Nascondi canali per paesi specifici

Utilizza questo script per nascondere i canali di pagamento in paesi specifici.

Ad esempio, nascondi un canale specifico per clienti in Canada.

# ================================ Customizable Settings ================================# ================================================================# Hide Gateway(s) for Country## If the shipping address country matches any of the entered# countries, the entered gateway(s) will be hidden.## - 'country_code_match_type' determines whether we look for the cart# country to match the entered selectors or not. Can be:# - ':include' to look for a country in the list# - ':exclude' to make sure the country is not in the list# - 'country_codes' is a list of 2-character abbreviations for# the applicable countries# - 'gateway_match_type' determines whether the below strings# should be an exact or partial match. Can be:# - ':exact' for an exact match# - ':partial' for a partial match# - 'gateway_names' is a list of strings to identify gateways# ================================================================HIDE_GATEWAYS_FOR_COUNTRY=[{country_code_match_type: :include,country_codes:["CA"],gateway_match_type: :exact,gateway_names:["Gateway","Other Gateway"],},]# ================================ Script Code (do not edit) ================================# ================================================================# CountrySelector## Finds whether the supplied country code matches the entered# string.# ================================================================classCountrySelectordefinitialize(match_type,countries)@match_type=match_type@countries=countries.map{|country|country.upcase.strip}enddefmatch?(country_code)(@match_type==:include)==@countries.include?(country_code.upcase.strip)endend# ================================================================# GatewayNameSelector## Finds whether the supplied gateway name matches any of the# entered names.# ================================================================classGatewayNameSelectordefinitialize(match_type,gateway_names)@comparator=match_type==:exact?'==':'include?'@gateway_names=gateway_names.map{|name|name.downcase.strip}enddefmatch?(payment_gateway)@gateway_names.any?{|name|payment_gateway.name.downcase.strip.send(@comparator,name)}endend# ================================================================# HideGatewaysForCountryCampaign## If the shipping address country matches any of the entered# countries, the entered gateway(s) will be hidden.# ================================================================classHideGatewaysForCountryCampaigndefinitialize(campaigns)@campaigns=campaignsenddefrun(cart,payment_gateways)address=cart.shipping_address返回ifaddress.nil?@campaigns.eachdo|campaign|country_selector=CountrySelector.new(campaign[:country_code_match_type],campaign[:country_codes],)nextunlesscountry_selector.match?(address.country_code)gateway_name_selector=GatewayNameSelector.new(campaign[:gateway_match_type],campaign[:gateway_names],)payment_gateways.delete_ifdo|payment_gateway|gateway_name_selector.match?(payment_gateway)endendendendCAMPAIGNS=[HideGatewaysForCountryCampaign.new(HIDE_GATEWAYS_FOR_COUNTRY),]CAMPAIGNS.eachdo|campaign|campaign.run(Input.cart,Input.payment_gateways)endOutput.payment_gateways=Input.payment_gateways

Mostra canali in base alla spesa

Utilizza questo script per mostrare un canale specifico se un cliente spende più di un certo importo.

Ad esempio, mostra un canale specifico se un cliente spende 1000 $ o più, altrimenti nascondilo.

# ================================ Customizable Settings ================================# ================================================================# Show Gateway(s) for Spend Threshold## If the cart total is greater than, or equal to, the entered# threshold, the entered gateway(s) are shown.## - 'threshold' is the dollar amount the customer must spend in# order to see the entered gateway(s)# - 'gateway_match_type' determines whether the below strings# should be an exact or partial match. Can be:# - ':exact' for an exact match# - ':partial' for a partial match# - 'gateway_names' is a list of strings to identify gateways# ================================================================SHOW_GATEWAYS_FOR_THRESHOLD=[{threshold:500,gateway_match_type: :exact,gateway_names:["Gateway","Other Gateway"],},]# ================================ Script Code (do not edit) ================================# ================================================================# GatewayNameSelector## Finds whether the supplied gateway name matches any of the# entered names.# ================================================================classGatewayNameSelectordefinitialize(match_type,gateway_names)@comparator=match_type==:exact?'==':'include?'@gateway_names=gateway_names.map{|name|name.downcase.strip}enddefmatch?(payment_gateway)@gateway_names.any?{|name|payment_gateway.name.downcase.strip.send(@comparator,name)}endend# ================================================================# ShowGatewaysForThresholdCampaign## If the cart total is greater than, or equal to, the entered# threshold, the entered gateway(s) are shown.# ================================================================classShowGatewaysForThresholdCampaigndefinitialize(campaigns)@campaigns=campaignsenddefrun(cart,payment_gateways)@campaigns.eachdo|campaign|nextunlesscart.subtotal_price<(Money.new(cents:100)*campaign[:threshold])gateway_name_selector=GatewayNameSelector.new(campaign[:gateway_match_type],campaign[:gateway_names],)payment_gateways.delete_ifdo|payment_gateway|gateway_name_selector.match?(payment_gateway)endendendendCAMPAIGNS=[ShowGatewaysForThresholdCampaign.new(SHOW_GATEWAYS_FOR_THRESHOLD),]CAMPAIGNS.eachdo|campaign|campaign.run(Input.cart,Input.payment_gateways)endOutput.payment_gateways=Input.payment_gateways

Riordina i canali

Utilizza questo script per modificare l'ordine predefinito dei canali di pagamento offerti ai tuoi clienti.

# ================================ Customizable Settings ================================# ================================================================# Reorder Gateways## The order in which you would like your gateways to display# ================================================================DESIRED_GATEWAY_ORDER=["Payment Gateway 1","Payment Gateway 2","Payment Gateway 3",]# ================================ Script Code (do not edit) ================================# ================================================================# ReorderGatewaysCampaign##重整网关输入订单# ================================================================classReorderGatewaysCampaigndefinitialize(desired_order)@desired_order=desired_order.map{|item|item.downcase.strip}enddefrun(cart,payment_gateways)payment_gateways.sort_by!{|payment_gateway|@desired_order.index(payment_gateway.name.downcase.strip)||Float::INFINITY}endendCAMPAIGNS=[ReorderGatewaysCampaign.new(DESIRED_GATEWAY_ORDER),]CAMPAIGNS.eachdo|campaign|campaign.run(Input.cart,Input.payment_gateways)endOutput.payment_gateways=Input.payment_gateways

Sei pronto per iniziare a vendere con Shopify?

箴valo, è gratis