Я отправляю идентификатор пользователя и пароль с этой страницы: https://www.paypal.com/us/cgi-bin/webscr?cmd=_profile-api-signature
И AppId – это идентификатор, который я использую в своем приложении для Android для создания платежей: https://apps.paypal.com/user/my-account/applications
Я использую следующую функцию:
function verify_paypal($payKey, $appID) { global $payPalUser_Id, $payPalPassword, $payPalSig; $headerArray = array( 'X-PAYPAL-SECURITY-USERID:'.$payPalUser_Id, 'X-PAYPAL-SECURITY-PASSWORD:'.$payPalPassword, 'X-PAYPAL-SECURITY-SIGNATURE:'.$payPalSig, 'X-PAYPAL-REQUEST-DATA-FORMAT:JSON', 'X-PAYPAL-RESPONSE-DATA-FORMAT:XML', 'X-PAYPAL-APPLICATION-ID:'.$appID ); $url="https://svcs.paypal.com/AdaptivePayments/PaymentDetails?payKey={$payKey}&requestEnvelope.errorLanguage=en_US"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArray); $adaptiveResponse = curl_exec($ch); curl_close($ch); return $adaptiveResponse; }
Но он дает эту ошибку:
<?xml version='1.0' encoding='UTF-8'?> <ns3:FaultMessage xmlns:ns3="http://svcs.paypal.com/types/common" xmlns:ns2="http://svcs.paypal.com/types/ap"> <responseEnvelope> <timestamp>2013-11-27T14:58:07.463-08:00</timestamp> <ack>Failure</ack> <correlationId>d97c635f935b3</correlationId> <build>7935900</build> </responseEnvelope> <error> <errorId>580001</errorId> <domain>PLATFORM</domain> <subdomain>Application</subdomain> <severity>Error</severity> <category>Application</category> <message>Invalid request: {0}</message> </error> </ns3:FaultMessage>
REQUEST-DATA-FORMAT должен быть NV:
$headerArray = array( 'X-PAYPAL-SECURITY-USERID:'.$payPalUser_Id, 'X-PAYPAL-SECURITY-PASSWORD:'.$payPalPassword, 'X-PAYPAL-SECURITY-SIGNATURE:'.$payPalSig, 'X-PAYPAL-REQUEST-DATA-FORMAT:NV', 'X-PAYPAL-RESPONSE-DATA-FORMAT:JSON', 'X-PAYPAL-APPLICATION-ID:'.$appID );