0

Paypal に接続するために PHP の SoapClient クラスを使用しています。私はいくつかの問題を抱えています:

  1. 石鹸呼び出しに渡すパラメーターはarray('ReturnAllCurrencies'=>0, 'Version'=>'63.0')次のとおりですが、以下の要求でわかるように、それが何であれ63.0入れられ<param1>ます。リクエストに ReturnAllCurrencies も表示されません。

このリクエストでは、次のGetBalanceコマンドを実行しています。

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:ebay:api:PayPalAPI" xmlns:ns2="urn:ebay:apis:eBLBaseComponents">
      <SOAP-ENV:Header>
            <ns1:RequesterCredentials>
                  <ns2:Credentials>
                        <ns2:Username>xxxx</ns2:Username>
                        <ns2:Password>xxx</ns2:Password>
                        <ns2:Signature>xxx</ns2:Signature>
                  </ns2:Credentials>
            </ns1:RequesterCredentials>
      </SOAP-ENV:Header>
      <SOAP-ENV:Body>
            <ns1:GetBalanceReq/>
            <param1>63.0</param1>
      </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

上記のリクエストは SoapClient::__getLastRequest() 経由で見つかりました。PayPal Web サイトの例とはまったく異なります。GetBalanceReqタグどうした?*Req サフィックスが付いているのはなぜですか?

2.本番サーバーと wsdl ファイルを使用すると、php エラーが発生します。

SOAP-ERROR: WSDL の解析中: 「https://www.paypal.com/wsdl/PayPalSvc.wsdlから読み込めませんでした' ; : 開始タグが必要ですが、'<' が見つかりません

さらに、FireFox ( https://api.paypal.com/2.0/ ) で実稼働証明書の URL にアクセスしようとすると、ssl_error_handshake_failure_alert が表示されます。

wsdl ファイルをダウンロードし、SoapClient::__construct の最初の引数でローカル バージョンを指定する必要がありますか、それとも単純に Paypal でホストされているコピーを指定する必要がありますか? 最初は後者だと思っていたが、今はよくわからない

4

1 に答える 1

0

まず、「ReturnAllCurrencies」は整数ではなく文字列にする必要があります。また、GetBalanceRequestType フィールドを GetBalanceRequest 要素内にラップして機能させる必要があります。質問の最初の部分と実際の解決策に関する詳細については、次を参照してください。

必要なペイパル用の単純な php SoapClient の例

質問の 2 番目の部分は、Paypal インフラストラクチャの一時的な問題のように思えます。ベスト プラクティスは、WSDL のローカル コピーを使用するのではなく、WSDL キャッシュをオンにして、いつ更新するかを PHP に決定させることです。

于 2011-04-11T07:41:37.980 に答える