سؤال

أنا أستخدم فئة SoapClient الخاصة بـ PHP للاتصال بـ PayPal. لدي عدد من المشاكل:

  1. المعاملون الذين أعمرهم إلى مكالمة الصابون array('ReturnAllCurrencies'=>0, 'Version'=>'63.0') ولكن كما ترون في الطلب أدناه ، 63.0 هو وضع <param1> أيا كان ذلك. لا أرى حتى ReturnAllcurrency في الطلب.

في هذا الطلب ، أقوم بأداء أ 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. ماذا مع GetBalanceReq بطاقة شعار؟ لماذا لديها لاحقة *Req؟

2. عند استخدام خادم الإنتاج وملفات WSDL ، أحصل على خطأ PHP:

Soap-error: تحليل WSDL: لا يمكن تحميل من 'https://www.paypal.com/wsdl/paypalsvc.wsdl '؛ : ابدأ العلامة المتوقعة ، '<' لم يتم العثور عليها

علاوة على ذلك ، إذا حاولت زيارة عنوان URL لشهادة الإنتاج في Firefox (https://api.paypal.com/2.0/) أحصل على ssl_error_handshake_failure_alert

هل من المفترض أن أقوم بتنزيل ملف WSDL وأشير إلى إصدار محلي في الوسيطة الأولى من SoapClient :: __ Construct أو هل من المفترض أن أشير إلى نسخة PayPal المستضافة؟ لقد افترضت في الأصل الأخير ، لكنني الآن لست متأكدًا

لا يوجد حل صحيح

نصائح أخرى

أولاً ، يجب أن تكون "ReturnAllCurrency" سلسلة ، وليس عددًا صحيحًا. أيضًا ، تحتاج إلى لف حقول GetBalancereQuesttype داخل عنصر GetBalancereQuest للعمل. لمزيد من المعلومات حول الجزء الأول من سؤالك إلى جانب حل العمل ، انظر هنا:

مثال SOAPCLIENT البسيط لـ PayPal المطلوب

الجزء الثاني من سؤالك يبدو وكأنه مشكلة مؤقتة مع البنية التحتية PayPal. أفضل الممارسات هي عدم استخدام نسخة محلية من WSDL ولكن لتشغيل التخزين المؤقت لـ WSDL والسماح لـ PHP بتحديد متى يتم تحديثها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top