결제 스크립트 예제

결제 스크립트는 전자결제 대행사와 상호 작용하며 전자결제 대행사의 이름, 표시 유형 및 표시 위치를 변경할 수 있습니다. 이 스크립트에서는 고객이 결제 시 결제 방법 페이지에 액세스할 때마다 실행됩니다. 빠른 결제는 고객이 결제 페이지에 도달하기 전에 표시되기 때문에 결제 스크립트는빠른 결제와 상호 작용하지 않습니다.

이 페이지의 템플릿을 사용하려면 빈 템플릿으로 새 스크립트를 만드십시오.

단계:

  1. Shopify Admin에서>Script Editor로 이동합니다.
  2. 스크립트 생성을 클릭합니다.
  3. 전자결제 대행사를 클릭합니다.
  4. 빈 템플릿을 선택하고스크립트 생성을 클릭합니다.
  5. Ruby 소스 코드섹션에서 기본 코드 라인을 삭제합니다.Output.cart = Input.cart
  6. 이 페이지에서 스크립트를 복사하여Ruby 소스 코드섹션에 붙여넣습니다.
  7. 스크립트의사용자 지정 가능 설정섹션을 편집하여 스토어에서 작동시킵니다.
  8. 스크립트를 테스트합니다. 자세한 내용은Shopify Scripts 테스트 및 디버그를 참조하십시오.
  9. 테스트 후에는
    • 초안 저장을 클릭하여 해당 스크립트의 게시되지 않은 초안을 저장하거나
    • 저장 및 게시를 클릭하여 스크립트를 생성하고 게시합니다.

특정 고객에게 게이트웨이 표시

이 스크립트를 사용하여 특별한 태그가 지정된 고객에게만 특정 게이트웨이 옵션을 표시합니다.

예를 들어,VIP태그가 지정된 고객에게만 특정 게이트웨이를 표시하면 다른 고객에게는 게이트웨이가 숨겨집니다.

# ================================ 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

특정 고객에게 게이트웨이 숨기기

이 스크립트를 사용하여 특별한 태그가 지정된 고객에게 특정 게이트웨이를 숨길 수 있습니다.

예를 들어,HIDE_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)returnifcart.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

특정 제품에 대한 게이트웨이 숨기기

특정 품목이 카트에 추가되면 이 스크립트를 사용하여 특정 게이트웨이를 숨길 수 있습니다.

예를 들어 고객이 모자를 주문하는 경우 특정 게이트웨이를 숨길 수 있습니다.

# ================================ 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.# ================================================================classProductSelectordefinitialize(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=ProductSelector.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

특정 국가에 대한 게이트웨이 표시

고객이 특정 국가에서 주문하는 경우 이 스크립트를 사용하여 특정 게이트웨이만 표시합니다.

예를 들어 고객이 캐나다에서 주문하는 경우 특정 게이트웨이만 표시하면 다른 국가의 주소에는 게이트웨이가 숨겨집니다.

# ================================ 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

특정 국가의 게이트웨이 숨기기

이 스크립트를 사용하여 특정 국가에서 전자결제 대행사를 숨길 수 있습니다.

예를 들어 캐나다에 있는 고객에게 특정 게이트웨이를 숨길 수 있습니다.

# ================================ 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_addressreturnifaddress.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

지출별 게이트웨이 표시

고객이 특정 금액을 초과하여 소비하는 경우 이 스크립트를 사용하여 특정 게이트웨이를 표시합니다.

예를 들어 고객이 $1000 이상을 지출하는 경우 특정 게이트웨이를 표시하고 그렇지 않으면 숨깁니다.

# ================================ 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

게이트웨이 재정렬

이 스크립트를 사용하여 고객에게 제공되는 전자결제 대행사의 기본 순서를 변경합니다.

# ================================ 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# ================================================================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

Shopify와 함께 사업을 시작할 준비가 되셨습니까?

무료 체험