支払い時に入力する配送先住所のフォームの中で、有効な郵便番号かどうかはバリデーションされるのですが、
電話番号は有効であるかどうかがバリデーションされません。(数字であればどんな番号でも入力できます)
テンプレートをカスタマイズするなど、何かしらの方法で独自のバリデーションを追加する方法はあるのでしょうか?
配送先住所フォームの電話番号入力に、郵便番号のような標準バリデーションを追加できるかが主題。結論として、チェックアウトテンプレートのカスタマイズはShopify Plus限定で、通常プランでは注文時点で独自バリデーションを挟む方法は基本的にない、という認識でまとまっている。
補足として、技術的にはWebhookで注文発生後のデータを受け取り、Twilioなどの外部APIで電話確認する案が挙がった。Twilioは電話・SMS関連の外部サービス。
一方で、電話番号は文字列だけでは完全な正当性判定が難しく、正規表現による形式チェックには限界があるとの指摘もあった。Webhookは注文後通知のため、チェックアウト時に入力を弾く用途には不向きで、必要なら注文後に検証し、保留や顧客確認で対応するのが現実的という結論。議論は実質的に収束している。
支払い時に入力する配送先住所のフォームの中で、有効な郵便番号かどうかはバリデーションされるのですが、
電話番号は有効であるかどうかがバリデーションされません。(数字であればどんな番号でも入力できます)
テンプレートをカスタマイズするなど、何かしらの方法で独自のバリデーションを追加する方法はあるのでしょうか?
自己回答ですみません。
https://help.shopify.com/en/themes/development/layouts/checkout
チェックアウト時のテンプレートのカスタマイズはShopify Plusのみの機能ということのようです。
基本的なバリデーションくらいはして欲しいところですが、機能が無いのであれば仕方が無いので、
電話番号が有効かどうかは注文情報から確認し、無効であればメールで顧客に連絡して確認を取るというのが妥当な手段のようです。
技術的には、Webhookなどを利用して、注文データの番号をTwillioなどのAPIで確認コールするまですれば可能ですが、やりすぎな感もします。電話番号のバリデーションは、値だけでは完全に正しいものかどうかのチェックは難しいかと思います。
@junichiokamura さん、ご返信ありがとうございます。
なるほど、Webhookを使用するのは検討していませんでした。それなら好きなように処理が書けますね。
電話番号は値だけではチェックが難しいというのも納得です。正規表現である程度でもチェックしようと思っていましたが、もしチェックをするのであればご提案頂いたような確実な方法で確認するのが良さそうですね。
参考にさせて頂きます。ありがとうございました!
注意点として、webhookは注文発生後の通知になりますので、注文時に弾くのは難しいかと思います。発生後にバリデーションして、メッセージとともに支払いを保留にするとかの処置はできるかと思います。