開発しているWebシステム上でApple Payによるクレジットカード選択が出来るようにするには「Apple Developer Program」で「Merchant Domain」を設定します。
この作業は基本的にAppleサーバ主導で行われる為、ハマると何が原因か分かり辛いです。
事象
ドメインがAppleに認証される流れは以下です。
- Apple Developer Programでドメインを入力
- apple-developer-merchantid-domain-association.txtをWebサーバに配備
- Apple Developer ProgramでVefifyボタンをクリック
- Appleサーバから上記ファイルへのGET通信が来る
- ドメインがVerifiedになる。
今回はApple Developer ProgramでVefiryボタンを押しても、4の確認通信が来ず、ステータスがPendingになってしまう事象でした。
Webサーバに配備したapple-developer-merchantid-domain-association.txt にブラウザでアクセスしても普通にアクセス出来てしまいます。
なのになぜAppleサーバはアクセス出来ないのか・・・クラウド側が国外IPを遮断している?AppleサーバのIPをホワイトリストに入れなきゃダメ?などと迷宮入りしそうになりました。
原因
Webサーバ(というかクラウド上のロードバランサ)にサーバ証明書しか設定されておらず、中間CA証明書が設定されていなかった為でした。
4の確認通信の前に、ドメインのSSL証明書が正しく設定されているか証明書チェーンも含めて厳密にチェックされるようです。
今回はSSL設定に不備があり、Apple Developer Program側のVerify処理が止まり、ステータスがPendingになる機序でした。
対処
「SSL Server Test」などのツールを使って登録しようとしているドメインのSSL証明書の正常性を確認。不備があれば対処します。
もし同様の事象に遭遇したら、SSL関連設定を疑ってみるのも一手かと思います。