Doorkeeper
ニュース

問題の報告:参加者の支払いステータスを特定できなかった不具合について

2018-09-27(木)

8月26日、ある参加者がPayPalを通してイベントの支払いを試みました。PayPalは、支払いをしたことを示すDoorkeeperのページに当該参加者をリダイレクトしましたが、DoorkeeperがPayPalに支払いステータスを自動確認しようとしたところ、PayPalにはその支払い承認の記録が一切ありませんでした。このステータスの相違が原因となり、Doorkeeperから当該参加者にはチケットメールが送信されませんでした。

当該参加者の申し込み状況が不明瞭であったため、Doorkeeper内でこの問題に関する通知が自動送信され、スタッフによる調査が開始されました。同時に、イベントの主催者からも同じ支払いの状況について連絡を受けました。主催者へは、当該の支払いステータスについてPayPalのカスタマーサポートに連絡をするようお願いし、弊社でも独自に調査を行うことを伝えました。

その後、何が原因で問題が発生したのかを解明すべく、PayPalのカスタマーサポートと数週間やりとりを重ねました。PayPal側でバグなどが原因となり例外的なことが発生したことは間違いないものの、PayPalから適切な説明が提供されることはありませんでした。その上、当該問題の完全な調査を行える担当者に対して、PayPalのカスタマーサポートからこの問題が引き渡されるまでの間に、当該支払いに関わるログがPayPal側ですでに削除されてしまっていました。そのため、PayPalとしてはこれ以上できることはないこと、同じバグが再度発生するのを待って連絡をするようにということがDoorkeeperに伝えられました。

このバグは頻繁に発生するものではなく、今回の8月26日の問題を除くと、Doorkeeper上では7月31日に一度だけ発生していたことが確認されています。これは、Doorkeeperでの支払いに関わる問題をより広く報告をするという方針を決める前のことで、発生時に私たちは気づくことができていませんでした。

PayPalから提案された「ちょっと様子を見てみる」という戦略は、Doorkeeperのそれとは合致しません。参加者の中には、イベントが始まる直前に支払いをする人もいることから、支払いステータスは速やかに確定できなくてはならないと考えています。バグがまた発生するまでただ待つ、というのは、私たちにとっては受け入れられるものではありません。しかし、問題がPayPal側で発生しているため、Doorkeeperで対処できることはなく、現時点では最善の結論を出せていません。

現在、イベントの前払い集金のためにPayPalを使っている主催者には、PayPalに代わってStripeでの集金に変更されることを推奨します。Stripeからはこれまでに一度も、PayPalのような不明瞭な結果や説明を受けたことはありません。また、エラーが起こることなく支払いを処理するという点において、Stripeのほうが信頼できると感じています。

根本的原因

PayPalで支払いを設定する際、Doorkeeperから支払い者に対してreturnUrlパラメータが提供されます。PayPalのドキュメントによると、これは「送信者がPayPalにログインし、支払いを承認した後に、送信者のブラウザをリダイレクトするURL」とあります。今回の問題を除き、私たちのこれまでの経験と認識では、参加者は支払いを完了して初めてこのURLにリダイレクトされています。

Doorkeeperでは、参加者がreturnUrlにリダイレクトされた後、PayPalのPaymentDetails APIを使って、当該者の支払いステータスを確認します。このAPIは、ユーザーが支払いを承認しないと追加されない支払い取引のstatusの項目(承認前は、このstatusの項目はありません)を含むpaymentInfoなどの結果の返信を呼び出します。

今回の問題では、当該参加者は支払いが完了したことを示すreturnUrlにリダイレクトされました。しかし、PaymentDetails APIで確認したところ、paymentInfoにはstatusの項目が追加されておらず、支払いが完了していないことを示していました。

これは、間違いなく不明瞭な状況です。この状況について、PayPalのカスタマーサポートに何度も問い合わせをしたにもかかわらず、この問題が起こりうる理由について何ら説明がなされませんでした。このことから、彼ら側でバグが発生している(または、していた)と確信するに至りました。よって、PayPalの助言に従い、同じ問題が再度発生した際に彼らに問い合わせるという対応を取りたいと思います。