Ví dụ về tập lệnh thanh toán

Tập lệnh thanh toán tương tác với cổng thanh toán và có thể thay đổi tiêu đề, khả năng hiển thị và vị trí hiển thị của cổng. Những tập lệnh này sẽ chạy mỗi khi khách hàng truy cập vào trang phương thức thanh toán khi thanh toán. Tập lệnh thanh toán không tương tác vớithanh toán nhanhvì thanh toán nhanh hiển thị với khách hàng trước khi họ đến trang thanh toán.

Để sử dụng mẫu trên trang này, tạo tập lệnh với mẫu trống.

Các bước thực hiện:

  1. Trong trang quản trị Shopify, vàoỨng dụng>Script Editor.
  2. Nhấp vàoCreate script(Tạo tập lệnh).
  3. Nhấp vàoCổng thanh toán.
  4. ChọnBlank template(Mẫu trống), rồi nhấp vàoCreate script(Tạo tập lệnh).
  5. Trong mụcRuby source code(Mã nguồn Ruby), xóa dòng mã mặc định:Output.cart = Input.cart
  6. Sao chép tập lệnh từ trang này và dán vào mụcRuby source code(Mã nguồn Ruby).
  7. Chỉnh sửa mụcCustomizable Settings(Cài đặt tùy chỉnh) của tập lệnh để hoạt động tại cửa hàng.
  8. Kiểm tra tập lệnh. Để biết thêm thông tin, tham khảoThử nghiệm và gỡ lỗi Đoạn mã Shopify.
  9. 分川崎kiểm交易:
    • nhấp vàoSave draft(Lưu bản nháp) để lưu bản nháp chưa đăng của tập lệnh hoặc
    • nhấp vàoSave and publish(Lưu và đăng) để tạo và đăng đoạn mã.

Hiển thị cổng thanh toán cho khách hàng cụ thể

Sử dụng tập lệnh này để chỉ hiển thị một tùy chọn cổng cụ thể cho những khách hàng được gắn thẻ cụ thể.

Ví dụ: Chỉ hiển thị một cổng cụ thể với những khách hàng có thẻVIP- cổng này sẽ ẩn với tất cả các khách hàng khác.

# ================================ 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,标签s)@comparator=match_type==:include?'any?':'none?'@tags=标签s.map{|标签|标签.downcase.strip}enddefmatch?(customer)customer_tags=customer.标签s.map{|标签|标签.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.(campaign[:customer_tag_match_type],campaign[:customer_tags],)customer_match=cart.customer.nil??false:customer_tag_selector.match?(cart.customer)gateway_name_selector=GatewayNameSelector.(campaign[:gateway_match_type],campaign[:gateway_names],)payment_gateways.delete_ifdo|payment_gateway|gateway_name_selector.match?(payment_gateway)!=customer_matchendendendendCAMPAIGNS=[ShowGatewaysForCustomerTagCampaign.(SHOW_GATEWAYS_FOR_CUSTOMER_TAG),]CAMPAIGNS.eachdo|campaign|campaign.run(Input.cart,Input.payment_gateways)endOutput.payment_gateways=Input.payment_gateways

Ẩn cổng thanh toán cho khách hàng cụ thể

Sử dụng tập lệnh này để ẩn một cổng cụ thể với những khách hàng được gắn thẻ cụ thể.

Ví dụ: Ẩn một cổng cụ thể với những khách hàng có thẻ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,标签s)@comparator=match_type==:include?'any?':'none?'@tags=标签s.map{|标签|标签.downcase.strip}enddefmatch?(customer)customer_tags=customer.标签s.map{|标签|标签.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.(campaign[:customer_tag_match_type],campaign[:customer_tags],)nextunlesscustomer_tag_selector.match?(cart.customer)gateway_name_selector=GatewayNameSelector.(campaign[:gateway_match_type],campaign[:gateway_names],)payment_gateways.delete_ifdo|payment_gateway|gateway_name_selector.match?(payment_gateway)endendendendCAMPAIGNS=[HideGatewaysForCustomerTagCampaign.(HIDE_GATEWAYS_FOR_CUSTOMER_TAG),]CAMPAIGNS.eachdo|campaign|campaign.run(Input.cart,Input.payment_gateways)endOutput.payment_gateways=Input.payment_gateways

Ẩn cổng đối với sản phẩm cụ thể

Sử dụng tập lệnh này để ẩn một cổng nhất định khi các mặt hàng cụ thể được thêm vào giỏ hàng.

Ví dụ: Ẩn một cổng cụ thể nếu khách hàng đặt mũ.

# ================================ 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#——找到苏:订阅bscription 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.# ================================================================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.('Invalid product selector type')endenddef标签(line_item)product_tags=line_item.variant.product.标签s.map{|标签|标签.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.(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.(campaign[:gateway_match_type],campaign[:gateway_names],)payment_gateways.delete_ifdo|payment_gateway|gateway_name_selector.match?(payment_gateway)endendendendCAMPAIGNS=[HideGatewayForProductCampaign.(HIDE_GATEWAY_FOR_PRODUCT),]CAMPAIGNS.eachdo|campaign|campaign.run(Input.cart,Input.payment_gateways)endOutput.payment_gateways=Input.payment_gateways

Hiển thị cổng cho một số quốc gia cụ thể

Sử dụng tập lệnh này để chỉ hiển thị một cổng cụ thể khi khách hàng đặt hàng từ một quốc gia cụ thể.

Ví dụ: Chỉ hiển thị một cổng cụ thể khi khách hàng đặt hàng từ Canada - cổng sẽ ẩn với những địa chỉ ở các quốc gia khác.

# ================================ 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.(campaign[:country_code_match_type],campaign[:country_codes],)country_match=address.nil??false:country_selector.match?(address.country_code)gateway_name_selector=GatewayNameSelector.(campaign[:gateway_match_type],campaign[:gateway_names],)payment_gateways.delete_ifdo|payment_gateway|gateway_name_selector.match?(payment_gateway)!=country_matchendendendendCAMPAIGNS=[ShowGatewaysForCountryCampaign.(SHOW_GATEWAYS_FOR_COUNTRY),]CAMPAIGNS.eachdo|campaign|campaign.run(Input.cart,Input.payment_gateways)endOutput.payment_gateways=Input.payment_gateways

Ẩn cổng đối với các quốc gia cụ thể

Sử dụng tập lệnh này để ẩn cổng thanh toán tại một số quốc gia cụ thể.

Ví dụ: Ẩn một cổng cụ thể với khách hàng tạ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:# - ':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.(campaign[:country_code_match_type],campaign[:country_codes],)nextunlesscountry_selector.match?(address.country_code)gateway_name_selector=GatewayNameSelector.(campaign[:gateway_match_type],campaign[:gateway_names],)payment_gateways.delete_ifdo|payment_gateway|gateway_name_selector.match?(payment_gateway)endendendendCAMPAIGNS=[HideGatewaysForCountryCampaign.(HIDE_GATEWAYS_FOR_COUNTRY),]CAMPAIGNS.eachdo|campaign|campaign.run(Input.cart,Input.payment_gateways)endOutput.payment_gateways=Input.payment_gateways

Hiển thị cổng theo mức chi tiêu

Sử dụng tập lệnh này để hiển thị cổng cụ thể nếu khách hàng chi tiêu vượt một số tiền nhất định.

Ví dụ: Hiển thị một cổng cụ thể nếu khách hàng chi tiêu từ 1000 USD trở lên, nếu không hãy ẩn cổng.

# ================================ 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.(cents:100)*campaign[:threshold])gateway_name_selector=GatewayNameSelector.(campaign[:gateway_match_type],campaign[:gateway_names],)payment_gateways.delete_ifdo|payment_gateway|gateway_name_selector.match?(payment_gateway)endendendendCAMPAIGNS=[ShowGatewaysForThresholdCampaign.(SHOW_GATEWAYS_FOR_THRESHOLD),]CAMPAIGNS.eachdo|campaign|campaign.run(Input.cart,Input.payment_gateways)endOutput.payment_gateways=Input.payment_gateways

Sắp xếp lại thứ tự cổng

Sử dụng tập lệnh này để thay đổi thứ tự mặc định của cổng thanh toán bạn cung cấp cho khách hàng.

# ================================ 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.(DESIRED_GATEWAY_ORDER),]CAMPAIGNS.eachdo|campaign|campaign.run(Input.cart,Input.payment_gateways)endOutput.payment_gateways=Input.payment_gateways

Bạn đã sẵn sàng bán hàng với Shopify?

Dùng thử miễn phí