ライブ資格情報を使用して localhost で支払い要求を正常にテストした後、アプリケーションをオンラインに移動しました。
ただし、ライブサーバーでは、curl リクエストは何も返しません。エラー メッセージも返されません。localhost で完全に機能するのは、まったく同じ要求です。
$url = 'curl -s --insecure -H "X-PAYPAL-SECURITY-USERID: '.$userId.'" -H "X-PAYPAL-SECURITY-PASSWORD: '.$password.'" -H "X-PAYPAL-SECURITY-SIGNATURE: '.$signature.'" -H "X-PAYPAL-REQUEST-DATA-FORMAT: JSON" -H "X-PAYPAL-RESPONSE-DATA-FORMAT: JSON" -H "X-PAYPAL-APPLICATION-ID: '.$applicationId.'" https://svcs.paypal.com/AdaptivePayments/Pay -d "{\"actionType\":\"PAY\", \"currencyCode\":\"'.$currency.'\", \"receiverList\":{\"receiver\":[{\"amount\":\"'.$amount.'\",\"email\":\"'.$receiverEmail.'\"}]}, \"returnUrl\":\"'.$successUrl.'\", \"cancelUrl\":\"'.$failUrl.'\", \"requestEnvelope\":{\"errorLanguage\":\"en_US\", \"detailLevel\":\"ReturnAll\"}}';
$result = json_decode(exec($url));
これがPHPです。コマンドラインでcurlリクエストを実行しようとしました。ローカルホストでは、すぐに正しいリターンが得られます。ライブ サーバーでは、最初に ">" 記号が表示されます。コマンドをもう一度貼り付けて入力すると、何らかの出力が得られます。
{"responseEnvelope":{"timestamp":"2013-07-05T13:16:26.305-07:00","ack":"Failure","correlationId":"2b8ab6998078e","build":"6520082"},"error":[{"errorId":"580001","domain":"PLATFORM","subdomain":"Application","severity":"Error","category":"Application","message":"Invalid request: {0}"}]}
奇妙なことに、これはローカルホストでは機能しますが、ライブサーバーでは機能しないため、PHP、curl、またはサーバー設定の違いに違いないと思います...しかし、私には本当に手がかりがありません.