0

PHP を使用して、paypal サンドボックス エンドポイントに接続し、成功した購入を処理することができました。

https://api-3t.sandbox.paypal.com/nvp

しかし、このアプリケーションをライブに移行しようとしたとき、いくつかの問題が発生しました。まず、サンドボックス アカウントは署名を使用し、ライブ アカウントは証明書を使用します。だから私はそれを使用しなければならない新しいエンドポイント:

https://api.paypal.com/nvp

証明書を使用しているため、「-3t」を取り除きます。

次に、vb.net の投稿データをこのアドレスに送信します。これにより、送信できるトークンが生成されます。これは正常に動作しますが、ユーザーがペイパル (ReturnURL) で確認した後にサイトに戻ってきた場合、curl を使用して、API に必要な次のコマンドである GetExpressCheckoutDetails メソッドを処理しています。それが成功した場合は、別のページで curl を使用して支払いを完了する方法に進みます: DoExpressCheckoutPayment

問題は、カールがハングし、ページが読み込まれないことです。

Linuxターミナルを使用して、APIにcurlを使用しようとすると、ハングします。

curl --verbose https://api.paypal.com/nvp

私が得る応答は、ハンドシェイクを通過し、ヘッダーの後に停止します。しかし、コマンドラインには戻りません。curl の出力は次のとおりです。

User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
> Host: api.paypal.com
> Accept: */*
>
* About to connect() to api.paypal.com port 443
*   Trying 173.0.84.66... connected
* Connected to api.paypal.com (173.0.84.66) port 443
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSLv2, Client hello (1):
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 DES-CBC3-SHA
* Server certificate:
*        subject: /C=US/ST=California/L=San Jose/O=PayPal, Inc./OU=PayPal Production/CN=api.paypal.com
*        start date: 2013-07-03 00:00:00 GMT
*        expire date: 2015-07-04 23:59:59 GMT
*        subjectAltName: api.paypal.com matched
*        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.
> GET /nvp HTTP/1.1
> User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
> Host: api.paypal.com
> Accept: */*
>

(これは、メソッド、ユーザー、または pwd を送信していないためではありません。送信しても同じです) API 証明書と関係があるのではないかと疑っています。ここで何が起こっているのか、誰にもアイデアがあります。ありがとう。

編集: カールの問題である可能性を取り除くために、テストに wget を使用します。

wget https://api.paypal.com/nvp

返信は:

--2013-10-08 08:45:53-- https://api.paypal.com/nvp
Resolving api.paypal.com.. 173.0.88.98, 173.0.84.98, 173.0.84.66, ...
Connecting to api.paypal.com|173.0.88.98|:443... connected.
HTTP request send, awaiting response...

そして、それが wget もハングアップする場所です。これは、cURL だけの問題ではないことを証明していますか?

4

1 に答える 1