Tôi đang cố gắng để có được chi tiết giao dịch từ API SOAP của PayPal nhưng tôi đang gặp lỗi từ PayPal. Nó trả về lỗi:Lấy chi tiết giao dịch từ PayPal SOAP API (hy vọng các trường tùy chỉnh)
The transaction id is not valid
Tôi biết đó là ID giao dịch hợp lệ vì tôi có thể nhận chi tiết giao dịch bằng API NVP PayPal nhưng có thể tôi đã yêu cầu SOAP có định dạng không chính xác. Tôi đã làm theo các ví dụ về API SOAP của PayPal mà tôi có thể tìm thấy trên web để xây dựng XML SOAP nhưng chúng rất mỏng. Tôi đang sử dụng chương trình PAW của mac để gửi yêu cầu SOAP tới API của PayPal nhưng vấn đề này nên được tái sử dụng bằng ứng dụng khách HTTP.
Tôi đã cố gắng sử dụng REST API của PayPal nhưng there's no method to get transaction details (ví dụ: tên, email, số tiền đã thanh toán, trường tùy chỉnh). Tôi cũng đã cố gắng sử dụng NVP (Name-Value-Pair) API và tôi lấy lại chi tiết giao dịch nhưng nó không cung cấp cho tôi tất cả các trường tùy chỉnh được lưu trữ cho một giao dịch. Khi tôi đăng nhập vào PayPal, và xem một giao dịch, tôi có thể thấy tất cả các trường tùy chỉnh cho giao dịch đó, vì vậy tôi biết chúng đang được lưu trữ.
API SOAP là hy vọng cuối cùng của tôi.
Dưới đây là các yêu cầu SOAP phong bì Tôi đang sử dụng:
<?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>
Dưới đây là câu trả lời tôi nhận được từ PayPal SOAP API:
<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>
Tôi không chắc chắn những gì tôi đang làm sai nhưng có thể ai đó có nhiều kinh nghiệm có thể phát hiện ra lỗi dễ dàng hơn tôi có thể. Tôi đã trả lời câu hỏi của người dùng khác về API REST của PayPal và nhận chi tiết giao dịch từ đó nhưng theo như tôi biết, không có cách nào để làm điều đó Get customer details after transaction. Nếu bạn đã tìm thấy một cách để thực hiện điều này với REST API, hãy cho tôi biết nguyên nhân tôi sẽ sử dụng REST nhiều hơn SOAP.
Cảm ơn.
Ngôn ngữ phía máy chủ của bạn mà bạn đang sử dụng để gửi là gì? Tôi đang sử dụng asp.net, nhưng khá chắc chắn nó không sử dụng XML. – JustJohn
@JustJohn Tôi đã lên kế hoạch sử dụng PHP để thực hiện cuộc gọi đến API SOAP của PayPal nhưng nếu tôi không thể làm việc với Paw hoặc Postman, tôi nghi ngờ cuộc gọi PHP sẽ hoạt động và sẽ gây nhầm lẫn hơn cho tôi. Nếu bạn đang sử dụng API SOAP của PayPal, thì chương trình ASP.net của bạn đang biên dịch một cuộc gọi XML để gửi tới API SOAP của PayPal. –