Paypalでエクスプレスチェックアウトを実装しています。
最初の2つのステップSetExpressCheckout
とGetExpressCheckout
には何の問題もありません。しかし、DoExpressCheckout
を使用すると、「セキュリティヘッダーが無効です」というエラーが発生します。
API資格情報は同じです!
live
の$environment
をDoExpressCheckout
に変更して修正しました。 ($environment
の違いは、https://api.sandbox.Paypal.com/nvp/
ではなくhttps://api-3t.$environment.Paypal.com/nvp
を使用することです)
しかし、なぜ?
https://api-3t.$environment.Paypal.com/nvp
に問題がありますか?
https://api-3t.sandbox.Paypal.com/nvp には、 https://api-3t.Paypal.com/nvp とは異なるユーザーアカウントが必要です。
サンドボックスアカウントは developer.Paypal.com でアクティブ化できます
ライブ環境でも同じエラーが発生しました。私にとっては、APIユーザー名の末尾にスペースがあったことがわかりました...スペースを削除して問題なく動作しました... Paypalから直接構成ファイルに貼り付けたので、そこにも空白をコピーしたので、これが発生した場合は、末尾のスペースを確認してください!これは、ユーザー名が文字列にハードコーディングされている場合は明らかでしたが、Javaプロパティファイルにあるため、そうではありませんでした。
資格情報が間違っている(つまり、ユーザー名、パスワード、または署名が間違っている)場合にもこのエラーが発生することに注意してください。情報を構成ファイルに貼り付けたときに同じ問題が発生し、誤って署名の最後に余分な文字が含まれていました。