在使用实时凭据在 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 或服务器设置一定有一些不同......但我真的不知道。