FROM CACHE - jp_header
解決済

チェックアウト時にクーポンを利用せずに直接小計から割引したい

matsumoto
Shopify Expert
29 1 6

チェックアウト時にクーポンを利用せずに、直接小計から割引した金額を実際の購入金額にも適用したいのですが技術的に可能でしょうか?

可能な場合は方法をご教授いただきたいです。

※checkout.liquid で下記スクリプトを埋め込んで小計を取得できるところまでは確認できています。

 

<script>
              //小計が1ドル以上かチェック
              {% assign subtotal_price = checkout.subtotal_price %}
              {% assign limit = 1 | times:100 %}
              {% if subtotal_price >= limit %}
                //小計から50パーセント割引
                {% assign discount = 50 | times:0.01 %}
                {% assign discount_amount = 1 | minus:discount %}
                {% assign discount_subtotal_price = subtotal_price | times:discount_amount %}
              
              console.log("元の小計:{{subtotal_price}}({{ subtotal_price | money }})");
              console.log("割引後の小計:{{discount_subtotal_price}}({{ discount_subtotal_price | money }})");
  {% endif %}
</script>

 

1 件の受理された解決策

junichiokamura
Community Manager
1200 280 506

成功

検証してはいないのですが、Plusマーチャントですとご提示のようにcheckout.liquidでLiquidを使って表示変更はできますが、Shopifyのシステムの仕様として、購入金額は配送料や税、クーポンから計算されたもので行われるので、テーマで制御するのは難しいと思います。

どうしてもいうことであれば、Order APIやStorefront APIなどを使って独自のチェックアウト画面を作って、そこからAPI経由でチェックアウトさせる方法がありますが、決済もShopify Paymentなどを連動させるとなると、それ用の別審査が必要なPayment APIも必要になるので、かなり大掛かりな改修になるかと思います。

Senior Partner Solutions Engineer

元の投稿で解決策を見る

7件の返信7

junichiokamura
Community Manager
1200 280 506

成功

検証してはいないのですが、Plusマーチャントですとご提示のようにcheckout.liquidでLiquidを使って表示変更はできますが、Shopifyのシステムの仕様として、購入金額は配送料や税、クーポンから計算されたもので行われるので、テーマで制御するのは難しいと思います。

どうしてもいうことであれば、Order APIやStorefront APIなどを使って独自のチェックアウト画面を作って、そこからAPI経由でチェックアウトさせる方法がありますが、決済もShopify Paymentなどを連動させるとなると、それ用の別審査が必要なPayment APIも必要になるので、かなり大掛かりな改修になるかと思います。

Senior Partner Solutions Engineer
matsumoto
Shopify Expert
29 1 6

Tomoyuki_K
Shopify Partner
38 10 30

最近知ったのですが、 shopify plusで使える 「Script Editor」アプリで、決済画面に任意のrubyコードを差し込めるようです!

https://apps.shopify.com/script-editor

Line item scripts affect line items in the cart and can change prices and grant discounts. Note: Theme modifications may be required to show the discount amount or messages in the cart and/or checkout.

shopify plusでないと使えないですが、決済画面自体を独自実装する以外で有効な方法かと思います!(未検証ですが、、)
今後のためにも共有としてコメント残しておきます!

junichiokamura
Community Manager
1200 280 506

そうですね、確かにPlus限定機能のScript Editorだと反映できたはずです。(見落としていました)。

内部的にはクーポン処理と同じことをやっているかと思うのですが、Plusマーチャントであれば、checkout.liquidよりも、Script Editor をまずお試しいただくのが良いかと思います。

Senior Partner Solutions Engineer
matsumoto
Shopify Expert
29 1 6

情報ありがとうございます。

Script Editorは一応検証済なのですが、カート画面までしか反映できないようにみえました。

チェックアウト画面にも反映できるのは確かなのでしょうか・・・?

junichiokamura
Community Manager
1200 280 506

アプリのページを見ると、種類は3種類で、それぞれ反映されるスコープがあるようです。

https://apps.shopify.com/script-editor?locale=ja

Shopify スクリプトには3つの異なるタイプがあります。

項目スクリプトはカート内の項目に作用するため、価格の変更やディスカウントの付与を実行できます。メモ: カートおよび/またはチェックアウトでディスカウント金額やメッセージを表示するには、テーマの変更が必要になる場合があります。
配送スクリプトは配送と相互作用し、配送方法の名前の変更、表示、非表示、または再注文することができ、配送料金のディスカウントを提供できます。
決済スクリプトは決済と相互作用し、決済サービスの名前の変更、表示、非表示、再注文することができます。

これを見ると、項目(金額)変更はカート部分への反映で、それ以降に反映されるのは、配送料部分と、決済手段の部分なので、やはり、ご希望のアプローチは、ScriptEditorでは難しいかもしれませんね。。(メモにもそれと同様のことが書いてあります)。



Senior Partner Solutions Engineer
matsumoto
Shopify Expert
29 1 6

詳細な情報ありがとうございます。

ちょっと認識誤っていました。「決済」であればカート画面以降でも反映可能なのですね。

今回やりたかったことはScript Editorでも難しそうということを再認識できて良かったです。

ありがとうございました。