Search code examples
paypalclient-certificatesexpress-checkout

Paypal was working with signature, now requires client certificate


I am integrating PayPal Express Checkout in the Sandbox using SOAP XML. SetExpressCheckout was working properly using a signature for credentials on 9/18/2013. I made no changes to my code or to the web server. I did begin work on Callback using NVP, since no SOAP version of Callback is available. The next day, SetExpressCheckout stopped working. I now get the following error: "80072f0c A certificate is required to complete client authentication" when trying to post to https://api-3t.sandbox.paypal.com/2.0/

Question 1: Could trying to use NVP Callback have caused PayPal's API server to now require a client certificate rather that a signature?

Question 2: Is there some other explanation for this change in behavior?

Question 3: Should I remove the signature from my sandbox account and request an API certificate instead? (Despite PayPal's recommendation that signatures be used rather than certificates.)

Note: I have tried using my own sandbox signature as well as the generic, "always works", sandbox signature. I have also tried posting to both api-3t.sandbox.paypal.com/2.0/ and api.sandbox.paypal.com/2.0/ (without -3t). None of these efforts eliminated the error.

Thanks, Chris H


Solution

  • are you still seeing this issue?
    I am unable to reproduce it even using the IP you got back from nslookup.
    Here my test with 23.51.43.42. I'm having the same positive result with 23.50.75.42

    curl \
    -H "Host: api-3t.sandbox.paypal.com" \
    -d "USER=guus_1192700083_biz_api1.paypal.com&PWD=XXXXXXXXXX&SIGNATURE=XXXXXXXXXX&VERSION=108&METHOD=SetExpressCheckout&RETURNURL=http://www.paypal.com&CANCELURL=http://www.paypal.com&AMT=0.01&PAYMENTACTION=Authorization" \
    https://23.51.43.42/nvp -kv
    
    * About to connect() to 23.51.43.42 port 443 (#0)
    *   Trying 23.51.43.42...
    * 0x8001f188 is at send pipe head!
    * STATE: CONNECT => WAITCONNECT handle 0x80057568; line 1032 (connection #0)
    * Connected to 23.51.43.42 (23.51.43.42) port 443 (#0)
    * successfully set certificate verify locations:
    *   CAfile: /usr/ssl/certs/ca-bundle.crt
      CApath: none
    * SSLv3, TLS handshake, Client hello (1):
    * STATE: WAITCONNECT => PROTOCONNECT handle 0x80057568; line 1145 (connection #0)
    * SSLv3, TLS handshake, Server hello (2):
    * SSLv3, TLS handshake, CERT (11):
    * SSLv3, TLS handshake, Request CERT (13):
    * SSLv3, TLS handshake, Server finished (14):
    * SSLv3, TLS handshake, CERT (11):
    * SSLv3, TLS handshake, Client key exchange (16):
    * SSLv3, TLS change cipher, Client hello (1):
    * SSLv3, TLS handshake, Finished (20):
    * SSLv3, TLS change cipher, Client hello (1):
    * SSLv3, TLS handshake, Finished (20):
    * SSL connection using RC4-SHA
    * Server certificate:
    *        subject: C=US; ST=CALIFORNIA; L=San Jose; O=PayPal, Inc.; OU=Partner Support; CN=api-3t.sandbox.paypal.com
    *        start date: 2013-08-20 00:00:00 GMT
    *        expire date: 2015-08-21 23:59:59 GMT
    *        issuer: C=US; O=VeriSign, Inc.; OU=VeriSign Trust Network; OU=Terms of use at https://www.verisign.com/rpa (c)10; CN=VeriSign Class 3 Secure Server CA - G3
    *        SSL certificate verify ok.
    * STATE: PROTOCONNECT => DO handle 0x80057568; line 1164 (connection #0)
    > POST /nvp HTTP/1.1
    > User-Agent: curl/7.29.0
    > Accept: */*
    > Host: api-3t.sandbox.paypal.com
    > Content-Length: 261
    > Content-Type: application/x-www-form-urlencoded
    >
    * upload completely sent off: 261 out of 261 bytes
    * STATE: DO => DO_DONE handle 0x80057568; line 1236 (connection #0)
    * STATE: DO_DONE => WAITPERFORM handle 0x80057568; line 1352 (connection #0)
    * STATE: WAITPERFORM => PERFORM handle 0x80057568; line 1363 (connection #0)
    * HTTP 1.1 or later with persistent connection, pipelining supported
    < HTTP/1.1 200 OK
    < Server: Apache
    < Content-Length: 133
    < Content-Type: text/plain; charset=utf-8
    < DC: origin2-api-3t.sandbox.paypal.com
    < Date: Thu, 03 Oct 2013 20:07:10 GMT
    < Connection: keep-alive
    < Set-Cookie: DC=origin2-api-3t.sandbox.paypal.com; secure
    <
    * STATE: PERFORM => DONE handle 0x80057568; line 1533 (connection #0)
    * Connection #0 to host 23.51.43.42 left intact
    TOKEN=EC%2d03T72513NN7526924&TIMESTAMP=2013%2d10%2d03T20%3a07%3a10Z&CORRELATIONID=4776c1624af4e&ACK=Success&VERSION=108&BUILD=7920936