Eksempler på betalingsskript
Denne siden ble skrevet ut den Apr 02, 2023. Gå til https://help.shopify.com/nb/manual/checkout-settings/script-editor/examples/payment-gateway-scripts for nyeste versjon.
Betalingsskript samhandler med betalingsgatewayer, og kan endre tittelen, synligheten eller visningsposisjonen til en gateway. Disse skriptene kjører hver gang kunden din er inne på siden med betalingsalternativer i kassen. Betalingsskript samhandler ikke medhurtigkasser , fordi hurtigkasser vises til kundene før de kommer til betalingssiden.
For å bruke malene på denne siden oppretter du et nytt skript med en blank mal.
Steg:
Fra Shopify-administrator går du tilApper >Script Editor .
Klikk påOpprett skript .
Klikk påBetalingsgatewayer .
VelgBlank mal 噩klikk deretter påOpprett skript .
I seksjonenRuby-kildekode sletter du standardlinjen med kode:Output.cart = Input.cart
Kopier et skript fra denne siden og lim det inn i seksjonenRuby-kildekode .
Rediger seksjonenTilpassbare innstillinger i skriptet så de passer til butikken din.
Test skriptet. For mer informasjon kan du seTesting og feilsøking av Shopify Scripts .
Etter testing:
Klikk påLagre utkast for å lagre et upublisert utkast av skriptet, eller
KlikkLagre og publiser for å opprette og publisere skriptet.
Vis gatewayer for bestemte kunder
Bruk dette skriptet til å bare vise et bestemt gatewayalternativ til kunder med en bestemt tagg.
Du kan for eksempel bare vise en bestemt gateway til kunder som er tagget medVIP
– gatewayen vil skjules for alle andre kunder.
#================================ 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. #================================================================ class CustomerTagSelector def initialize ( match_type , tags ) @comparator = match_type == :include ? 'any?' : 'none?' @tags = tags . map { | tag | tag . downcase . strip } end def match? ( customer ) customer_tags = customer . tags . map { | tag | tag . downcase . strip } ( @tags & customer_tags ). send ( @comparator ) end end #================================================================ #GatewayNameSelector # #Finds whether the supplied gateway name matches any of the #输入名字。 #================================================================ class GatewayNameSelector def initialize ( match_type , gateway_names ) @comparator = match_type == :exact ? '==' : 'include?' @gateway_names = gateway_names . map { | name | name . downcase . strip } end def match? ( payment_gateway ) @gateway_names . any? { | name | payment_gateway . name . downcase . strip . send ( @comparator , name ) } end end #================================================================ #ShowGatewaysForCustomerTagCampaign # #If the customer has any of the entered tags, the entered gateways #are shown/hidden depending on the entered settings #================================================================ class ShowGatewaysForCustomerTagCampaign def initialize ( campaigns ) @campaigns = campaigns end def run ( cart , payment_gateways ) @campaigns . each do | 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_if do | payment_gateway | gateway_name_selector . match? ( payment_gateway ) != customer_match end end end end CAMPAIGNS = [ ShowGatewaysForCustomerTagCampaign . new ( SHOW_GATEWAYS_FOR_CUSTOMER_TAG ), ] CAMPAIGNS . each do | campaign | campaign . run ( Input . cart , Input . payment_gateways ) end Output . payment_gateways = Input . payment_gateways
Skjul gatewayer for bestemte kunder
Bruk dette skriptet til å skjule en bestemt gateway for kunder med en bestemt tagg.
Du kan for eksempel skjule en bestemt gateway for kunder tagget medHIDE_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. #================================================================ class CustomerTagSelector def initialize ( match_type , tags ) @comparator = match_type == :include ? 'any?' : 'none?' @tags = tags . map { | tag | tag . downcase . strip } end def match? ( customer ) customer_tags = customer . tags . map { | tag | tag . downcase . strip } ( @tags & customer_tags ). send ( @comparator ) end end #================================================================ #GatewayNameSelector # #Finds whether the supplied gateway name matches any of the #输入名字。 #================================================================ class GatewayNameSelector def initialize ( match_type , gateway_names ) @comparator = match_type == :exact ? '==' : 'include?' @gateway_names = gateway_names . map { | name | name . downcase . strip } end def match? ( payment_gateway ) @gateway_names . any? { | name | payment_gateway . name . downcase . strip . send ( @comparator , name ) } end end #================================================================ #HideGatewaysForCustomerTagCampaign # #If we have a matching customer, the entered gateway(s) will be #hidden. #================================================================ class HideGatewaysForCustomerTagCampaign def initialize ( campaigns ) @campaigns = campaigns end def run ( cart , payment_gateways ) return if cart . customer . nil? @campaigns . each do | campaign | customer_tag_selector = CustomerTagSelector . new ( campaign [ :customer_tag_match_type ], campaign [ :customer_tags ], ) next unless customer_tag_selector . match? ( cart . customer ) gateway_name_selector = GatewayNameSelector . new ( campaign [ :gateway_match_type ], campaign [ :gateway_names ], ) payment_gateways . delete_if do | payment_gateway | gateway_name_selector . match? ( payment_gateway ) end end end end CAMPAIGNS = [ HideGatewaysForCustomerTagCampaign . new ( HIDE_GATEWAYS_FOR_CUSTOMER_TAG ), ] CAMPAIGNS . each do | campaign | campaign . run ( Input . cart , Input . payment_gateways ) end Output . payment_gateways = Input . payment_gateways
Skjul gatewayer for spesifikke produkter
Bruk dette skriptet til å skjule en bestemt gateway når bestemte produkter legges i handlekurven.
Du kan for eksempel skjule en bestemt gateway dersom kunden bestiller en lue.
#================================ 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 #- ':subscription' to find subscription products #- '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 ProductSelector def initialize ( match_type , selector_type , selectors ) @match_type = match_type @comparator = match_type == :include ? 'any?' : 'none?' @selector_type = selector_type @selectors = selectors end def match? ( line_item ) if self . respond_to? ( @selector_type ) self . send ( @selector_type , line_item ) else raise RuntimeError . new ( 'Invalid product selector type' ) end end def tag ( 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 ) end def type ( line_item ) @selectors = @selectors . map { | selector | selector . downcase . strip } ( @match_type == :include ) == @selectors . include? ( line_item . variant . product . product_type . downcase . strip ) end def vendor ( line_item ) @selectors = @selectors . map { | selector | selector . downcase . strip } ( @match_type == :include ) == @selectors . include? ( line_item . variant . product . vendor . downcase . strip ) end def product_id ( line_item ) ( @match_type == :include ) == @selectors . include? ( line_item . variant . product . id ) end def variant_id ( line_item ) ( @match_type == :include ) == @selectors . include? ( line_item . variant . id ) end def subscription ( line_item ) ! line_item . selling_plan_id . nil? end end #================================================================ #GatewayNameSelector # #Finds whether the supplied gateway name matches any of the #输入名字。 #================================================================ class GatewayNameSelector def initialize ( match_type , gateway_names ) @comparator = match_type == :exact ? '==' : 'include?' @gateway_names = gateway_names . map { | name | name . downcase . strip } end def match? ( payment_gateway ) @gateway_names . any? { | name | payment_gateway . name . downcase . strip . send ( @comparator , name ) } end end #================================================================ #HideGatewayForProductCampaign # #If the cart contains any matching items, the entered gateway(s) #are hidden. #================================================================ class HideGatewayForProductCampaign def initialize ( campaigns ) @campaigns = campaigns end def run ( cart , payment_gateways ) @campaigns . each do | campaign | product_selector = ProductSelector . new ( campaign [ :product_selector_match_type ], campaign [ :product_selector_type ], campaign [ :product_selectors ], ) next unless cart . 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_if do | payment_gateway | gateway_name_selector . match? ( payment_gateway ) end end end end CAMPAIGNS = [ HideGatewayForProductCampaign . new ( HIDE_GATEWAY_FOR_PRODUCT ), ] CAMPAIGNS . each do | campaign | campaign . run ( Input . cart , Input . payment_gateways ) end Output . payment_gateways = Input . payment_gateways
Vis gatewayer for spesifikke land
Bruk dette skriptet til å bare vise en bestemt gateway når en kunde bestiller fra et bestemt land.
Du kan for eksempel bare vise en bestemt gateway dersom kunden bestiller fra Canada – gatewayen skjules for adresser i alle andre land.
#================================ 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: # - - - - - -”:包括“寻找一个国家在列表中 #- ':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. #================================================================ class CountrySelector def initialize ( match_type , countries ) @match_type = match_type @countries = countries . map { | country | country . upcase . strip } end def match? ( country_code ) ( @match_type == :include ) == @countries . include? ( country_code . upcase . strip ) end end #================================================================ #GatewayNameSelector # #Finds whether the supplied gateway name matches any of the #输入名字。 #================================================================ class GatewayNameSelector def initialize ( match_type , gateway_names ) @comparator = match_type == :exact ? '==' : 'include?' @gateway_names = gateway_names . map { | name | name . downcase . strip } end def match? ( payment_gateway ) @gateway_names . any? { | name | payment_gateway . name . downcase . strip . send ( @comparator , name ) } end end #================================================================ #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. #================================================================ class ShowGatewaysForCountryCampaign def initialize ( campaigns ) @campaigns = campaigns end def run ( cart , payment_gateways ) address = cart . shipping_address @campaigns . each do | 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_if do | payment_gateway | gateway_name_selector . match? ( payment_gateway ) != country_match end end end end CAMPAIGNS = [ ShowGatewaysForCountryCampaign . new ( SHOW_GATEWAYS_FOR_COUNTRY ), ] CAMPAIGNS . each do | campaign | campaign . run ( Input . cart , Input . payment_gateways ) end Output . payment_gateways = Input . payment_gateways
Skjul gatewayer for bestemte land
Bruk dette skriptet til å skjule betalingsgatewayer i bestemte land.
Du kan for eksempel skjule en bestemt gateway for kunder i 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: # - - - - - -”:包括“寻找一个国家在列表中 #- ':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. #================================================================ class CountrySelector def initialize ( match_type , countries ) @match_type = match_type @countries = countries . map { | country | country . upcase . strip } end def match? ( country_code ) ( @match_type == :include ) == @countries . include? ( country_code . upcase . strip ) end end #================================================================ #GatewayNameSelector # #Finds whether the supplied gateway name matches any of the #输入名字。 #================================================================ class GatewayNameSelector def initialize ( match_type , gateway_names ) @comparator = match_type == :exact ? '==' : 'include?' @gateway_names = gateway_names . map { | name | name . downcase . strip } end def match? ( payment_gateway ) @gateway_names . any? { | name | payment_gateway . name . downcase . strip . send ( @comparator , name ) } end end #================================================================ #HideGatewaysForCountryCampaign # #If the shipping address country matches any of the entered #countries, the entered gateway(s) will be hidden. #================================================================ class HideGatewaysForCountryCampaign def initialize ( campaigns ) @campaigns = campaigns end def run ( cart , payment_gateways ) address = cart . shipping_address return if address . nil? @campaigns . each do | campaign | country_selector = CountrySelector . new ( campaign [ :country_code_match_type ], campaign [ :country_codes ], ) next unless country_selector . match? ( address . country_code ) gateway_name_selector = GatewayNameSelector . new ( campaign [ :gateway_match_type ], campaign [ :gateway_names ], ) payment_gateways . delete_if do | payment_gateway | gateway_name_selector . match? ( payment_gateway ) end end end end CAMPAIGNS = [ HideGatewaysForCountryCampaign . new ( HIDE_GATEWAYS_FOR_COUNTRY ), ] CAMPAIGNS . each do | campaign | campaign . run ( Input . cart , Input . payment_gateways ) end Output . payment_gateways = Input . payment_gateways
Vis gatewayer etter forbruk
Bruk dette skriptet til å vise en bestemt gateway hvis den kunde bruker over et visst beløp.
Du kan for eksempel vise en bestemt gateway dersom kunden bruker 1000 USD eller mer, og ellers skjule den.
#================================ 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 #输入名字。 #================================================================ class GatewayNameSelector def initialize ( match_type , gateway_names ) @comparator = match_type == :exact ? '==' : 'include?' @gateway_names = gateway_names . map { | name | name . downcase . strip } end def match? ( payment_gateway ) @gateway_names . any? { | name | payment_gateway . name . downcase . strip . send ( @comparator , name ) } end end #================================================================ #ShowGatewaysForThresholdCampaign # #If the cart total is greater than, or equal to, the entered #threshold, the entered gateway(s) are shown. #================================================================ class ShowGatewaysForThresholdCampaign def initialize ( campaigns ) @campaigns = campaigns end def run ( cart , payment_gateways ) @campaigns . each do | campaign | next unless cart . subtotal_price < ( Money . new ( cents: 100 ) * campaign [ :threshold ]) gateway_name_selector = GatewayNameSelector . new ( campaign [ :gateway_match_type ], campaign [ :gateway_names ], ) payment_gateways . delete_if do | payment_gateway | gateway_name_selector . match? ( payment_gateway ) end end end end CAMPAIGNS = [ ShowGatewaysForThresholdCampaign . new ( SHOW_GATEWAYS_FOR_THRESHOLD ), ] CAMPAIGNS . each do | campaign | campaign . run ( Input . cart , Input . payment_gateways ) end Output . payment_gateways = Input . payment_gateways
Endre rekkefølge på gatewayer
Bruk dette skriptet til å endre standardrekkefølgen på betalingsgatewayene som tilbys til kundene dine.
#================================ 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 # #Reorders gateways into the entered order #================================================================ class ReorderGatewaysCampaign def initialize ( desired_order ) @desired_order = desired_order . map { | item | item . downcase . strip } end def run ( cart , payment_gateways ) payment_gateways . sort_by! { | payment_gateway | @desired_order . index ( payment_gateway . name . downcase . strip ) || Float :: INFINITY } end end CAMPAIGNS = [ ReorderGatewaysCampaign . new ( DESIRED_GATEWAY_ORDER ), ] CAMPAIGNS . each do | campaign | campaign . run ( Input . cart , Input . payment_gateways ) end Output . payment_gateways = Input . payment_gateways