Ich versuche, Transaktionsdetails von PayPal SOAP API zu erhalten, aber ich renne in Fehler von PayPal. Es gibt den Fehler:Abrufen von Transaktionsdetails von PayPal SOAP API (hoffentlich auch benutzerdefinierte Felder)
The transaction id is not valid
Ich weiß, dass es eine gültige Transaktions-ID ist, da ich bin ich bin in der Lage zu Transaktionsdetails mit dem PayPal NVP API zu bekommen, aber vielleicht habe ich die SOAP-Anforderung falsch formatiert. Ich folgte den SOAP-API-Beispielen von PayPal, die ich im Web finden kann, um die SOAP-XML zu erstellen, aber sie sind schlank. Ich verwende Macs PAW-Programm, um eine SOAP-Anfrage an die API von PayPal zu senden, aber dieses Problem sollte mit einem HTTP-Client reproduzierbar sein.
Ich habe versucht, PayPal REST API, aber there's no method to get transaction details (z. B. Name, E-Mail, Betrag bezahlt, benutzerdefinierte Felder) zu verwenden. Ich habe auch versucht, die NVP (Name-Value-Pair) API zu verwenden, und ich bekomme die Transaktionsdetails zurück, aber es gibt mir nicht alle gespeicherten benutzerdefinierten Felder für eine Transaktion. Wenn ich mich bei PayPal anmelde und eine einzelne Transaktion ansehe, kann ich alle benutzerdefinierten Felder für diese Transaktion sehen, sodass ich weiß, dass sie gespeichert werden.
Die SOAP-API ist meine letzte Hoffnung.
Hier ist die SOAP-Umschlag Anfrage Ich verwende:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="urn:ebay:api:PayPalAPI" xmlns:ebl="urn:ebay:apis:eBLBaseComponents" xmlns:cc="urn:ebay:apis:CoreComponentTypes" xmlns:ed="urn:ebay:apis:EnhancedDataTypes">
<soapenv:Header>
<ns:RequesterCredentials>
<ebl:Credentials>
<ebl:Username>soap_api_username_here</ebl:Username>
<ebl:Password>soap_api_password_here</ebl:Password>
<ebl:Signature>soap_api_signature_here</ebl:Signature>
</ebl:Credentials>
</ns:RequesterCredentials>
</soapenv:Header>
<soapenv:Body>
<ns:GetTransactionDetailsReq>
<ns:GetTransactionDetailsRequest>
<ebl:Version>93.0</ebl:Version>
<ebl:TransactionID>8FX18476NR449891W</ebl:TransactionID>
</ns:GetTransactionDetailsRequest>
</ns:GetTransactionDetailsReq>
</soapenv:Body>
</soapenv:Envelope>
Hier ist die Antwort, die ich von der PayPal-SOAP-API erhalten:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cc="urn:ebay:apis:CoreComponentTypes" xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/12/secext" xmlns:ed="urn:ebay:apis:EnhancedDataTypes" xmlns:ebl="urn:ebay:apis:eBLBaseComponents" xmlns:ns="urn:ebay:api:PayPalAPI">
<SOAP-ENV:Header>
<Security xmlns="http://schemas.xmlsoap.org/ws/2002/12/secext" xsi:type="wsse:SecurityType"/>
<RequesterCredentials xmlns="urn:ebay:api:PayPalAPI" xsi:type="ebl:CustomSecurityHeaderType">
<Credentials xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:UserIdPasswordType">
<Username xsi:type="xs:string"/>
<Password xsi:type="xs:string"/>
<Signature xsi:type="xs:string"/>
<Subject xsi:type="xs:string"/>
</Credentials>
</RequesterCredentials>
</SOAP-ENV:Header>
<SOAP-ENV:Body id="_0">
<GetTransactionDetailsResponse xmlns="urn:ebay:api:PayPalAPI">
<Timestamp xmlns="urn:ebay:apis:eBLBaseComponents">2016-08-02T16:43:02Z</Timestamp>
<Ack xmlns="urn:ebay:apis:eBLBaseComponents">Failure</Ack>
<CorrelationID xmlns="urn:ebay:apis:eBLBaseComponents">a464c181339f4</CorrelationID>
<Errors xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:ErrorType">
<ShortMessage xsi:type="xs:string">Transaction refused because of an invalid argument. See additional error messages for details.</ShortMessage>
<LongMessage xsi:type="xs:string">The transaction id is not valid</LongMessage>
<ErrorCode xsi:type="xs:token">10004</ErrorCode>
<SeverityCode xmlns="urn:ebay:apis:eBLBaseComponents">Error</SeverityCode>
</Errors>
<Version xmlns="urn:ebay:apis:eBLBaseComponents">93.0</Version>
<Build xmlns="urn:ebay:apis:eBLBaseComponents">000000</Build>
<PaymentTransactionDetails xmlns="urn:ebay:apis:eBLBaseComponents" xsi:type="ebl:PaymentTransactionType">
<ReceiverInfo xsi:type="ebl:ReceiverInfoType"/>
<PayerInfo xsi:type="ebl:PayerInfoType">
<PayerStatus xsi:type="ebl:PayPalUserStatusCodeType">verified</PayerStatus>
<PayerName xsi:type="ebl:PersonNameType"/>
<Address xsi:type="ebl:AddressType">
<AddressOwner xsi:type="ebl:AddressOwnerCodeType">PayPal</AddressOwner>
<AddressStatus xsi:type="ebl:AddressStatusCodeType">None</AddressStatus>
</Address>
</PayerInfo>
<PaymentInfo xsi:type="ebl:PaymentInfoType">
<TransactionType xsi:type="ebl:PaymentTransactionCodeType">none</TransactionType>
<PaymentType xsi:type="ebl:PaymentCodeType">none</PaymentType>
<PaymentStatus xsi:type="ebl:PaymentStatusCodeType">None</PaymentStatus>
<PendingReason xsi:type="ebl:PendingStatusCodeType">none</PendingReason>
<ReasonCode xsi:type="ebl:ReversalReasonCodeType">none</ReasonCode>
</PaymentInfo>
<PaymentItemInfo xsi:type="ebl:PaymentItemInfoType">
<Subscription xsi:type="ebl:SubscriptionInfoType"/>
<Auction xsi:type="ebl:AuctionInfoType"/>
</PaymentItemInfo>
</PaymentTransactionDetails>
</GetTransactionDetailsResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Ich bin nicht sicher, was mache ich falsch aber vielleicht kann jemand mit mehr Erfahrung den Fehler leichter finden als ich. Ich habe auf die Frage eines anderen Benutzers über die PayPal-REST-API geantwortet und Transaktionsdetails davon erhalten, aber soweit ich weiß, gibt es keine Möglichkeit, dies zu tun Get customer details after transaction. Wenn Sie einen Weg gefunden haben, dies mit der REST-API zu erreichen, lassen Sie es mich wissen, denn ich würde lieber REST als SOAP verwenden.
Danke.
Was ist Ihre serverseitige Sprache, die Sie zum Senden empfangen? Ich benutze asp.net, aber ziemlich sicher, dass es nicht XML benutzt. – JustJohn
@JustJohn Ich plante, PHP zu verwenden, um den Aufruf der PayPal SOAP API zu machen, aber wenn ich es nicht mit Paw oder Postman arbeiten kann, bezweifle ich, dass der PHP-Aufruf funktionieren würde und würde mich nur weiter verwirren. Wenn Sie die SOAP-API von PayPal verwenden, kompiliert das ASP.net-Programm einen XML-Aufruf, der an die SOAP-API von PayPal gesendet wird. –