外部APIを利用してリダイレクトを受け付けるタイプの開発ではグローバルなサーバが必要になる
その場合にはリダイレクト先を外部のサーバに設定して検証する
windowsローカルサーバで開発をしている。
windowsのhostsファイルでサブドメインのワイルドカードが現在においても利用できないという不便さのほかに、外部のapiを利用する際にリダイレクト先として外部のサーバがローカルサーバにリクエストできないという問題がある。
具体的には、paypalのapiを利用する際に、
- PDT
- IPN
という2種類のトランザクション確認用の通知サービスがあるのだが、ローカルサーバのみで開発をしているとその通知を受け付けることができない。理由は、開発環境としてのローカルサーバをグローバルから名前解決できる状態にしていないという理由になるので、解決方法としては、
- ローカルサーバをグローバルにする
- 外部apiサーバからのレスポンス先等を外部のサーバにする
いずれかの方法で対応することができる。
paypal apiの場合は、決済後のリダイレクト先と決済通知の送信先をローカルサーバではなく、外部のホスティングサーバなどに設定することで開発を進めることが可能。
外部のサーバは仕様上の制約が存在する場合がある
Google App Engineというクラウド系のサーバがあり、paypalのリダイレクト先として一時的に利用しようとしたが、PHPのCurlエクステンションが備わっておらず、paypalのインテグレーションウィザードでダウンロードしたコードが動かないという事例があった。
Curlではなくfile_get_contentsで代用するという解決方法があるようなのだが、別のホスティングサービスを利用することでpaypalの開発を継続することにした。
この例は制約の一例で、制約というよりも知っておきたいノウハウ的な側面がある。
ローカルサーバはなんでもできるが、なんでもできることが当たり前ではないのがグローバルネットワークといったところ。
ちなみに、PHPのCurlが利用できて、使い勝手が問題のない無料のホスティングサービスが000webhostというサービス。
実際には他にもCurlが利用できて無料のホスティングサービスは存在すると思うが、外部のサーバが必要になったときに利用しているのは000webhostというサービス。