赔付的例子
Cette页a été imprimée le Mar 29, 2023。倒拉dernière版,阿莱兹à https://help.shopify.com/fr/manual/checkout-settings/script-editor/examples/payment-gateway-scripts。
Les scripts de payement interagissent avec Les passerelles de payement et peuvent modifier le titre, la visibilité et la position d 'affichage d 'une passerelle。cesscripts sont exécutés chque fois que votre客户端accède à la page du moyen de payement au moment du payement。这是一种支付和交换的方式paiements加速者 , car ceeux -ci s 'affichent pour vos clients avant qu'ils arrival à la page de paiement。
Shopify +
Les scripts Shopify et l 'application脚本编辑器 Sont réservés aux marchandsShopify + .
Le 13 août 2024, les scripts Shopify seront abandonnés et cesseront d’être pris en charge。Migrez vos脚本存在Shopify功能 前卫的约会。
Pour utiliser les modèles de cette page, créez un nouveau script à partir d'un modèle vierge。
发育阶段:
代理选民界面管理员Shopify, allez à应用程序 (应用程序)>脚本编辑器 .
双击苏尔创建脚本 (Créer un script)。
双击苏尔支付网关 (路人)。
Selectionnez空白模板 (Modèle vierge), puis cliquez sur创建脚本 (Créer un script)。
丹斯拉节Ruby源代码 (源代码Ruby), suprimez la ligne de Code par défaut:输出。车=输入.车
抄写原文页和其他章节Ruby源代码 (源代码Ruby)。
Modifiez la section可定制的设置 (Paramètres personnalisables) du script pour qu'il soit compatible avec votre boutique。
Testez votre脚本。Pour en savoir plus, consultez la resource suivante:测试人员et déboguer les脚本Shopify .
Après le测试:
双击苏尔保存草稿 (Enregistrer le brouillon) pour Enregistrer une version non publiée du script ou
双击苏尔保存并发布 (enregisterr et publier)倒créer et publier le脚本。
路人之友胜过客户spécifiques
Utilisez ce脚本倒afficher unique une option de passerelle spécifique倒les clients avec une sure balise。
例如,ne montrez qu 'une passerelle spécifique aux clients avec la balise贵宾
.La passerelle sera masquée pour tout autre客户端。
# ================================ 可定制的设置 ================================ # ================================================================ #显示客户标签的网关 # 如果我们有一个匹配的客户,输入的网关将是 #显示,所有其他将被隐藏。否则,输入的 # gateway将被隐藏。 # # - 'customer_tag_match_type'决定我们是否寻找客户 #是否使用输入的标签进行标记。可以是: # - ':include'检查客户是否被标记 # - ':exclude'以确保客户没有被标记 # - 'customer_tags'是一个客户标签列表,用于触发 #活动 # - 'gateway_match_type'决定下面的字符串是否 #应该是完全匹配或部分匹配。可以是: # - ':exact'用于精确匹配 # - ':partial'表示部分匹配 # - 'gateway_names'是一个用于标识网关的字符串列表 # ================================================================ SHOW_GATEWAYS_FOR_CUSTOMER_TAG = [ { customer_tag_match_type:包括 , customer_tags: [ “customer_tag” , “another_tag” ), gateway_match_type:精确 , gateway_names: [ “网关” , “其他网关” ), }, ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # CustomerTagSelector # #查找所提供的客户是否有任何输入的标记。 # ================================================================ 类 CustomerTagSelector def 初始化 ( match_type , 标签 ) @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @ tags = 标签 . 地图 { | 标签 | 标签 . downcase . 带 } 结束 def 比赛吗? ( 客户 ) customer_tags = 客户 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } ( @ tags & customer_tags ). 发送 ( @comparator ) 结束 结束 # ================================================================ # GatewayNameSelector # 查找所提供的网关名是否与 #输入的名称。 # ================================================================ 类 GatewayNameSelector def 初始化 ( match_type , gateway_names ) @comparator = match_type = = :确切 ? “= =” : “有吗?” @gateway_names = gateway_names . 地图 { | 名字 | 名字 . downcase . 带 } 结束 def 比赛吗? ( payment_gateway ) @gateway_names . 任何? { | 名字 | payment_gateway . 名字 . downcase . 带 . 发送 ( @comparator , 名字 ) } 结束 结束 # ================================================================ # ShowGatewaysForCustomerTagCampaign # 如果客户有任何输入的标记,则输入的网关 根据输入的设置显示/隐藏 # ================================================================ 类 ShowGatewaysForCustomerTagCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 , payment_gateways ) @campaigns . 每一个 做 | 运动 | customer_tag_selector = CustomerTagSelector . 新 ( 运动 [ : customer_tag_match_type ), 运动 [ : customer_tags ), ) customer_match = 车 . 客户 . nil ? ? 假 : customer_tag_selector . 比赛吗? ( 车 . 客户 ) gateway_name_selector = GatewayNameSelector . 新 ( 运动 [ : gateway_match_type ), 运动 [ : gateway_names ), ) payment_gateways . delete_if 做 | payment_gateway | gateway_name_selector . 比赛吗? ( payment_gateway ) ! = customer_match 结束 结束 结束 结束 活动 = [ ShowGatewaysForCustomerTagCampaign . 新 ( SHOW_GATEWAYS_FOR_CUSTOMER_TAG ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 , 输入 . payment_gateways ) 结束 输出 . payment_gateways = 输入 . payment_gateways
假面让路人倾倒某些顾客
Utilisez ce脚本倒假面une路人spécifique倒les客户avec une确定应答器。
例如,masquez une passerelle spécifique pour les clients avec la baliseHIDE_GATEWAY
.
# ================================ 可定制的设置 ================================ # ================================================================ #隐藏客户标签的网关 # 如果我们有一个匹配的客户,输入的网关将是 #隐藏。 # # - 'customer_tag_match_type'决定我们是否寻找客户 #是否使用输入的标签进行标记。可以是: # - ':include'检查客户是否被标记 # - ':exclude'以确保客户没有被标记 # - 'customer_tags'是一个客户标签列表,用于触发 #活动 # - 'gateway_match_type'决定下面的字符串是否 #应该是完全匹配或部分匹配。可以是: # - ':exact'用于精确匹配 # - ':partial'表示部分匹配 # - 'gateway_names'是一个用于标识网关的字符串列表 # ================================================================ HIDE_GATEWAYS_FOR_CUSTOMER_TAG = [ { customer_tag_match_type:包括 , customer_tags: [ “customer_tag” , “another_tag” ), gateway_match_type:精确 , gateway_names: [ “网关” , “其他网关” ), }, ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # CustomerTagSelector # #查找所提供的客户是否有任何输入的标记。 # ================================================================ 类 CustomerTagSelector def 初始化 ( match_type , 标签 ) @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @ tags = 标签 . 地图 { | 标签 | 标签 . downcase . 带 } 结束 def 比赛吗? ( 客户 ) customer_tags = 客户 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } ( @ tags & customer_tags ). 发送 ( @comparator ) 结束 结束 # ================================================================ # GatewayNameSelector # 查找所提供的网关名是否与 #输入的名称。 # ================================================================ 类 GatewayNameSelector def 初始化 ( match_type , gateway_names ) @comparator = match_type = = :确切 ? “= =” : “有吗?” @gateway_names = gateway_names . 地图 { | 名字 | 名字 . downcase . 带 } 结束 def 比赛吗? ( payment_gateway ) @gateway_names . 任何? { | 名字 | payment_gateway . 名字 . downcase . 带 . 发送 ( @comparator , 名字 ) } 结束 结束 # ================================================================ # HideGatewaysForCustomerTagCampaign # 如果我们有一个匹配的客户,输入的网关将是 #隐藏。 # ================================================================ 类 HideGatewaysForCustomerTagCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 , payment_gateways ) 返回 如果 车 . 客户 . nil ? @campaigns . 每一个 做 | 运动 | customer_tag_selector = CustomerTagSelector . 新 ( 运动 [ : customer_tag_match_type ), 运动 [ : customer_tags ), ) 下一个 除非 customer_tag_selector . 比赛吗? ( 车 . 客户 ) gateway_name_selector = GatewayNameSelector . 新 ( 运动 [ : gateway_match_type ), 运动 [ : gateway_names ), ) payment_gateways . delete_if 做 | payment_gateway | gateway_name_selector . 比赛吗? ( payment_gateway ) 结束 结束 结束 结束 活动 = [ HideGatewaysForCustomerTagCampaign . 新 ( HIDE_GATEWAYS_FOR_CUSTOMER_TAG ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 , 输入 . payment_gateways ) 结束 输出 . payment_gateways = 输入 . payment_gateways
假面具让路人倾倒某些产品
Utilisez ce script pour masquer une sure passerelle lorsque des articles spécifiques sont ajoutés au panier。
例如,masquez une passerelle spécifique si le client command un chapeau。
# ================================ 可定制的设置 ================================ # ================================================================ #隐藏产品的网关 # #如果购物车中包含任何匹配的物品,则输入的网关 #是隐藏的。 # # - 'product_selector_match_type'决定我们是否寻找 #与输入选择器匹配或不匹配的产品。可以 号是: # - ':include'检查产品是否匹配 # - ':exclude'以确保产品不匹配 # - 'product_selector_type'决定产品的合格程度 #将被识别。可以是: # - ':tag'按标签查找产品 # - ':type'按类型查找产品 # - ':vendor'按供应商查找产品 # - ':product_id'按ID查找产品 # - ':variant_id'通过变量ID查找产品 # - ':subscription'查找订阅产品 # - 'product_selectors'是一个字符串或数字的列表 #通过上述选择器类型识别产品 # - 'gateway_match_type'决定下面的字符串是否 #应该是完全匹配或部分匹配。可以是: # - ':exact'用于精确匹配 # - ':partial'表示部分匹配 # - 'gateway_names'是一个用于标识网关的字符串列表 # ================================================================ HIDE_GATEWAY_FOR_PRODUCT = [ { product_selector_match_type:包括 , product_selector_type: product_id , product_selectors: [ 1234567890987 , 1234567890986 ), gateway_match_type:精确 , gateway_names: [ “网关” , “其他网关” ), }, ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # ProductSelector # #根据输入的标准查找匹配的产品。 # ================================================================ 类 ProductSelector def 初始化 ( match_type , selector_type , 选择器 ) @match_type = match_type @comparator = match_type = = :包括 ? “什么?” : “没有吗?” @selector_type = selector_type @ selector = 选择器 结束 def 比赛吗? ( line_item ) 如果 自我 . respond_to吗? ( @selector_type ) 自我 . 发送 ( @selector_type , line_item ) 其他的 提高 RuntimeError . 新 ( “无效的产品选择器类型” ) 结束 结束 def 标签 ( line_item ) product_tags = line_item . 变体 . 产品 . 标签 . 地图 { | 标签 | 标签 . downcase . 带 } @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @ selector & product_tags ). 发送 ( @comparator ) 结束 def 类型 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . product_type . downcase . 带 ) 结束 def 供应商 ( line_item ) @ selector = @ selector . 地图 { | 选择器 | 选择器 . downcase . 带 } ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . 供应商 . downcase . 带 ) 结束 def product_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . 产品 . id ) 结束 def variant_id ( line_item ) ( @match_type = = :包括 ) = = @ selector . 包括什么? ( line_item . 变体 . id ) 结束 def 订阅 ( line_item ) ! line_item . selling_plan_id . nil ? 结束 结束 # ================================================================ # GatewayNameSelector # 查找所提供的网关名是否与 #输入的名称。 # ================================================================ 类 GatewayNameSelector def 初始化 ( match_type , gateway_names ) @comparator = match_type = = :确切 ? “= =” : “有吗?” @gateway_names = gateway_names . 地图 { | 名字 | 名字 . downcase . 带 } 结束 def 比赛吗? ( payment_gateway ) @gateway_names . 任何? { | 名字 | payment_gateway . 名字 . downcase . 带 . 发送 ( @comparator , 名字 ) } 结束 结束 # ================================================================ # HideGatewayForProductCampaign # #如果购物车中包含任何匹配的物品,则输入的网关 #是隐藏的。 # ================================================================ 类 HideGatewayForProductCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 , payment_gateways ) @campaigns . 每一个 做 | 运动 | product_selector = ProductSelector . 新 ( 运动 [ : product_selector_match_type ), 运动 [ : product_selector_type ), 运动 [ : product_selectors ), ) 下一个 除非 车 . line_items . 任何? { | line_item | product_selector . 比赛吗? ( line_item ) } gateway_name_selector = GatewayNameSelector . 新 ( 运动 [ : gateway_match_type ), 运动 [ : gateway_names ), ) payment_gateways . delete_if 做 | payment_gateway | gateway_name_selector . 比赛吗? ( payment_gateway ) 结束 结束 结束 结束 活动 = [ HideGatewayForProductCampaign . 新 ( HIDE_GATEWAY_FOR_PRODUCT ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 , 输入 . payment_gateways ) 结束 输出 . payment_gateways = 输入 . payment_gateways
爱是路人是代价spécifiques
Utilisez ce脚本倒afficher unique une passerelle spécifique lorsqu 'un客户端命令代理某些支付。
例如,n 'affichez qu 'une passerelle spécifique si un client passe command depuis le Canada。La passerelle sera masquée pour les adress dans tout autre pays。
Remarque L'utilisation de国家
等country_code
Est propre à l'équivalent de la région, c.-à-d。, UN pays/une région。
# ================================ 可定制的设置 ================================ # ================================================================ #显示国家的网关 # 如果收货地址国家与输入的任何国家相匹配 #国家,输入的网关(s)将显示,以及所有其他 #将被隐藏。否则,输入的网关将被隐藏。 # # - 'country_code_match_type'决定是否查找购物车 是否匹配输入的选择器。可以是: # - ':include'在列表中查找一个国家 # - ':exclude'以确保该国家不在列表中 # - 'country_codes'是一个2个字符的缩写列表 #适用国家 # - 'gateway_match_type'决定下面的字符串是否 #应该是完全匹配或部分匹配。可以是: # - ':exact'用于精确匹配 # - ':partial'表示部分匹配 # - 'gateway_names'是一个用于标识网关的字符串列表 # ================================================================ SHOW_GATEWAYS_FOR_COUNTRY = [ { country_code_match_type:包括 , country_code: [ “CA” ), gateway_match_type:精确 , gateway_names: [ “网关” , “其他网关” ), }, ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # CountrySelector # #查找所提供的国家代码是否与输入的国家代码匹配 #字符串。 # ================================================================ 类 CountrySelector def 初始化 ( match_type , 国家 ) @match_type = match_type @countries = 国家 . 地图 { | 国家 | 国家 . upcase . 带 } 结束 def 比赛吗? ( country_code ) ( @match_type = = :包括 ) = = @countries . 包括什么? ( country_code . upcase . 带 ) 结束 结束 # ================================================================ # GatewayNameSelector # 查找所提供的网关名是否与 #输入的名称。 # ================================================================ 类 GatewayNameSelector def 初始化 ( match_type , gateway_names ) @comparator = match_type = = :确切 ? “= =” : “有吗?” @gateway_names = gateway_names . 地图 { | 名字 | 名字 . downcase . 带 } 结束 def 比赛吗? ( payment_gateway ) @gateway_names . 任何? { | 名字 | payment_gateway . 名字 . downcase . 带 . 发送 ( @comparator , 名字 ) } 结束 结束 # ================================================================ # ShowGatewaysForCountryCampaign # 如果收货地址国家与输入的任何国家相匹配 #国家,输入的网关(s)将显示,以及所有其他 #将被隐藏。否则,输入的网关将被隐藏。 # ================================================================ 类 ShowGatewaysForCountryCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 , payment_gateways ) 地址 = 车 . shipping_address @campaigns . 每一个 做 | 运动 | country_selector = CountrySelector . 新 ( 运动 [ : country_code_match_type ), 运动 [ : country_code ), ) country_match = 地址 . nil ? ? 假 : country_selector . 比赛吗? ( 地址 . country_code ) gateway_name_selector = GatewayNameSelector . 新 ( 运动 [ : gateway_match_type ), 运动 [ : gateway_names ), ) payment_gateways . delete_if 做 | payment_gateway | gateway_name_selector . 比赛吗? ( payment_gateway ) ! = country_match 结束 结束 结束 结束 活动 = [ ShowGatewaysForCountryCampaign . 新 ( SHOW_GATEWAYS_FOR_COUNTRY ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 , 输入 . payment_gateways ) 结束 输出 . payment_gateways = 输入 . payment_gateways
假面让路人付出一定的代价
使用脚本倒假面具les路人de paiement unique dans certain pays。
例如,masquez une passerelle spécifique pour les clients au Canada。
Remarque L'utilisation de国家
等country_code
Est propre à l'équivalent de la région, c.-à-d。, UN pays/une région。
# ================================ 可定制的设置 ================================ # ================================================================ #隐藏国家的入口 # 如果收货地址国家与输入的任何国家相匹配 # countries,输入的网关将被隐藏。 # # - 'country_code_match_type'决定是否查找购物车 是否匹配输入的选择器。可以是: # - ':include'在列表中查找一个国家 # - ':exclude'以确保该国家不在列表中 # - 'country_codes'是一个2个字符的缩写列表 #适用国家 # - 'gateway_match_type'决定下面的字符串是否 #应该是完全匹配或部分匹配。可以是: # - ':exact'用于精确匹配 # - ':partial'表示部分匹配 # - 'gateway_names'是一个用于标识网关的字符串列表 # ================================================================ HIDE_GATEWAYS_FOR_COUNTRY = [ { country_code_match_type:包括 , country_code: [ “CA” ), gateway_match_type:精确 , gateway_names: [ “网关” , “其他网关” ), }, ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # CountrySelector # #查找所提供的国家代码是否与输入的国家代码匹配 #字符串。 # ================================================================ 类 CountrySelector def 初始化 ( match_type , 国家 ) @match_type = match_type @countries = 国家 . 地图 { | 国家 | 国家 . upcase . 带 } 结束 def 比赛吗? ( country_code ) ( @match_type = = :包括 ) = = @countries . 包括什么? ( country_code . upcase . 带 ) 结束 结束 # ================================================================ # GatewayNameSelector # 查找所提供的网关名是否与 #输入的名称。 # ================================================================ 类 GatewayNameSelector def 初始化 ( match_type , gateway_names ) @comparator = match_type = = :确切 ? “= =” : “有吗?” @gateway_names = gateway_names . 地图 { | 名字 | 名字 . downcase . 带 } 结束 def 比赛吗? ( payment_gateway ) @gateway_names . 任何? { | 名字 | payment_gateway . 名字 . downcase . 带 . 发送 ( @comparator , 名字 ) } 结束 结束 # ================================================================ # HideGatewaysForCountryCampaign # 如果收货地址国家与输入的任何国家相匹配 # countries,输入的网关将被隐藏。 # ================================================================ 类 HideGatewaysForCountryCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 , payment_gateways ) 地址 = 车 . shipping_address 返回 如果 地址 . nil ? @campaigns . 每一个 做 | 运动 | country_selector = CountrySelector . 新 ( 运动 [ : country_code_match_type ), 运动 [ : country_code ), ) 下一个 除非 country_selector . 比赛吗? ( 地址 . country_code ) gateway_name_selector = GatewayNameSelector . 新 ( 运动 [ : gateway_match_type ), 运动 [ : gateway_names ), ) payment_gateways . delete_if 做 | payment_gateway | gateway_name_selector . 比赛吗? ( payment_gateway ) 结束 结束 结束 结束 活动 = [ HideGatewaysForCountryCampaign . 新 ( HIDE_GATEWAYS_FOR_COUNTRY ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 , 输入 . payment_gateways ) 结束 输出 . payment_gateways = 输入 . payment_gateways
爱的路人dépense
Utilisez ce脚本倒afficher une passerelle spécifique si un客户端dépense加上d’un某些montant。
例如,affichez une sure passerelle si un client dépense au moins 1 000 USD, sinon, masquez-la。
# ================================ 可定制的设置 ================================ # ================================================================ #显示开销阈值的网关 # #如果购物车总数大于或等于输入的 # threshold,则显示输入的网关。 # # -“threshold”是客户必须消费的金额 #命令查看输入的网关 # - 'gateway_match_type'决定下面的字符串是否 #应该是完全匹配或部分匹配。可以是: # - ':exact'用于精确匹配 # - ':partial'表示部分匹配 # - 'gateway_names'是一个用于标识网关的字符串列表 # ================================================================ SHOW_GATEWAYS_FOR_THRESHOLD = [ { 阈值: 500 , gateway_match_type:精确 , gateway_names: [ “网关” , “其他网关” ), }, ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # GatewayNameSelector # 查找所提供的网关名是否与 #输入的名称。 # ================================================================ 类 GatewayNameSelector def 初始化 ( match_type , gateway_names ) @comparator = match_type = = :确切 ? “= =” : “有吗?” @gateway_names = gateway_names . 地图 { | 名字 | 名字 . downcase . 带 } 结束 def 比赛吗? ( payment_gateway ) @gateway_names . 任何? { | 名字 | payment_gateway . 名字 . downcase . 带 . 发送 ( @comparator , 名字 ) } 结束 结束 # ================================================================ # ShowGatewaysForThresholdCampaign # #如果购物车总数大于或等于输入的 # threshold,则显示输入的网关。 # ================================================================ 类 ShowGatewaysForThresholdCampaign def 初始化 ( 活动 ) @campaigns = 活动 结束 def 运行 ( 车 , payment_gateways ) @campaigns . 每一个 做 | 运动 | 下一个 除非 车 . subtotal_price < ( 钱 . 新 ( 分: One hundred. ) * 运动 [ :阈值 ]) gateway_name_selector = GatewayNameSelector . 新 ( 运动 [ : gateway_match_type ), 运动 [ : gateway_names ), ) payment_gateways . delete_if 做 | payment_gateway | gateway_name_selector . 比赛吗? ( payment_gateway ) 结束 结束 结束 结束 活动 = [ ShowGatewaysForThresholdCampaign . 新 ( SHOW_GATEWAYS_FOR_THRESHOLD ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 , 输入 . payment_gateways ) 结束 输出 . payment_gateways = 输入 . payment_gateways
Réorganiser我们的路人
使用脚本倒修改符la command par défaut des路人de paiement proposées à vos客户端。
# ================================ 可定制的设置 ================================ # ================================================================ #重新排序网关 # #您希望网关显示的顺序 # ================================================================ DESIRED_GATEWAY_ORDER = [ “支付网关1” , “支付网关2” , “支付网关3” , ] # ================================ 脚本代码(不要编辑 ) ================================ # ================================================================ # ReorderGatewaysCampaign # #将网关重新排序到输入的顺序 # ================================================================ 类 ReorderGatewaysCampaign def 初始化 ( desired_order ) @desired_order = desired_order . 地图 { | 项 | 项 . downcase . 带 } 结束 def 运行 ( 车 , payment_gateways ) payment_gateways . sort_by ! { | payment_gateway | @desired_order . 指数 ( payment_gateway . 名字 . downcase . 带 ) || 浮动 :: ∞ } 结束 结束 活动 = [ ReorderGatewaysCampaign . 新 ( DESIRED_GATEWAY_ORDER ), ] 活动 . 每一个 做 | 运动 | 运动 . 运行 ( 输入 . 车 , 输入 . payment_gateways ) 结束 输出 . payment_gateways = 输入 . payment_gateways