チェックアウト時にクーポンを利用せずに、直接小計から割引した金額を実際の購入金額にも適用したいのですが技術的に可能でしょうか?
可能な場合は方法をご教授いただきたいです。
※checkout.liquid で下記スクリプトを埋め込んで小計を取得できるところまでは確認できています。
チェックアウト時にクーポンを使わず、小計から直接割引した金額を実際の購入金額へ反映できるかが論点。結論として、標準的なテーマ編集や checkout.liquid だけで購入金額そのものを変更するのは難しい、という認識でほぼ整理された。
主な情報:
・checkout.liquid では Liquid による表示変更は可能だが、実際の購入金額は Shopify 側の税・送料・クーポン等の計算仕様に基づくため、テーマ側だけで制御するのは困難。
・独自に実現するなら Order API / Storefront API を使った独自チェックアウト案はあるが、決済連携まで含めると Payment API の審査も必要で大掛かり。
・Shopify Plus 限定の Script Editor なら Ruby で割引ロジックを差し込める可能性がある、という補足が出た。
最終的な整理:
・Script Editor は「項目」「配送」「決済」の3種のスクリプトがあるが、今回のような小計直接割引をチェックアウト全体へ意図通り反映する用途には適さない可能性が高い。
・質問者は、今回はクーポンを使う方針とし、議論は実質的に収束している。
チェックアウト時にクーポンを利用せずに、直接小計から割引した金額を実際の購入金額にも適用したいのですが技術的に可能でしょうか?
可能な場合は方法をご教授いただきたいです。
※checkout.liquid で下記スクリプトを埋め込んで小計を取得できるところまでは確認できています。
検証してはいないのですが、Plusマーチャントですとご提示のようにcheckout.liquidでLiquidを使って表示変更はできますが、Shopifyのシステムの仕様として、購入金額は配送料や税、クーポンから計算されたもので行われるので、テーマで制御するのは難しいと思います。
どうしてもいうことであれば、Order APIやStorefront APIなどを使って独自のチェックアウト画面を作って、そこからAPI経由でチェックアウトさせる方法がありますが、決済もShopify Paymentなどを連動させるとなると、それ用の別審査が必要なPayment APIも必要になるので、かなり大掛かりな改修になるかと思います。
junichiokamura様
ご回答いただきありがとうございます。
ドキュメントに記載がなかったので購入金額を直接編集するのは難しとは思っておりました。。
独自実装も現実的ではないのでクーポンを使うことにします。
ありがとうございました。
最近知ったのですが、 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でないと使えないですが、決済画面自体を独自実装する以外で有効な方法かと思います!(未検証ですが、、)
今後のためにも共有としてコメント残しておきます!
そうですね、確かにPlus限定機能のScript Editorだと反映できたはずです。(見落としていました)。
内部的にはクーポン処理と同じことをやっているかと思うのですが、Plusマーチャントであれば、checkout.liquidよりも、Script Editor をまずお試しいただくのが良いかと思います。
情報ありがとうございます。
Script Editorは一応検証済なのですが、カート画面までしか反映できないようにみえました。
チェックアウト画面にも反映できるのは確かなのでしょうか・・・?
アプリのページを見ると、種類は3種類で、それぞれ反映されるスコープがあるようです。
https://apps.shopify.com/script-editor?locale=ja
Shopify スクリプトには3つの異なるタイプがあります。
項目スクリプトはカート内の項目に作用するため、価格の変更やディスカウントの付与を実行できます。メモ: カートおよび/またはチェックアウトでディスカウント金額やメッセージを表示するには、テーマの変更が必要になる場合があります。
配送スクリプトは配送と相互作用し、配送方法の名前の変更、表示、非表示、または再注文することができ、配送料金のディスカウントを提供できます。
決済スクリプトは決済と相互作用し、決済サービスの名前の変更、表示、非表示、再注文することができます。
これを見ると、項目(金額)変更はカート部分への反映で、それ以降に反映されるのは、配送料部分と、決済手段の部分なので、やはり、ご希望のアプローチは、ScriptEditorでは難しいかもしれませんね。。(メモにもそれと同様のことが書いてあります)。
詳細な情報ありがとうございます。
ちょっと認識誤っていました。「決済」であればカート画面以降でも反映可能なのですね。
今回やりたかったことはScript Editorでも難しそうということを再認識できて良かったです。
ありがとうございました。