The PayPal SOAP API provides programmatic access to PayPal features and services. Developers can build custom applications, tools, and services that correspond to the same
services and tools available through the main PayPal website, https://www.paypal.com/. Typical applications include searching for transactions, paying en masse, and making refunds.The API is based on open standards known collectively as “Web Services,” which include the Simple Object Access Protocol (SOAP), Web Services Definition Language (WSDL), and the XML Schema Definition language (XSD). These standards are supported by a wide range of development tools on a variety of platforms.
In an object-oriented processing model, the interface to SOAP requests/responses is an object in your application’s native programming language. Your third-party SOAP client generates business-object interfaces and network stubs from PayPal-provided WSDL and XSD files that specify the PayPal SOAP message structure, its contents, and the PayPal API service bindings. A business application works with data in the form of object properties to send and receive data by calling object methods. The SOAP client handles the details of building the SOAP request, sending it to the PayPal service, and converting the response back to an object.
The PayPal Web Services schema and its underlying eBay Business Language (eBL) base and core components are required for developing applications with the PayPal Web Services API. The following are the locations of the WSDL and XSD files.
|
|
|
PayPal Application Programming Interface services, by which companies can make payments, search transactions, refund payments, view transaction information, and other business functions.
|
|
Mututally exclusive with API Signature. A PayPal-generated unique digital certificate file that you download from the PayPal website and use on the client computer to encrypt the HTTPS requests of your API calls to PayPal’s API server.
|
|
Mututally exclusive with API Signature. A PayPal-generated unique digital signature (a line of text, or hash) that you copy from PayPal’s website and include in your API calls. An alternative to API Certificate security.
Your digital signature, your API username, and your API password all together are called three-token authentication, because you include each of them as a programatic token in your API calls.
|
API Username and Password
|
A PayPal-generated identifying account name and password that you use specifically for making API calls. You include your API username and password with every API call. The API username and password are different from your PayPal login username (email address) and password.
|
|
An indicator in an API call of the account for whom the call is being made. This is the programmatic aspect of third-party authorization. The value of the Subject field is the third-party’s Paypal email address.
|
|
|
|
A web hosting service has its own API certificate, API username, and API password. Its customers, who are merchants that use PayPal, give the hosting service their permission to make API calls on their behalf. The hosting service includes a merchant's PayPal email address in the "Subject" field of an API call.
|
For the security of your business, PayPal must verify that merchants or third-party developers are permitted to initiate a transaction before they make one. PayPal authenticates each request. If the request cannot be authenticated, a SOAP security fault is returned.
In the SOAP request header, your SOAP client must set the Username,
Password elements to pass an API username/password combination. In addition, you can set the
Signature or
Subject elements to specify your API signature string and an optional third-party account email address for authentication. The following is a partial example of the RequesterCredentials elements required for all SOAP requests. For a correlation of these elements to the generic structure of an entire SOAP request, see
“SOAP Request Envelope”.
<
RequesterCredentials xmlns=”urn:ebay:api:PayPalAPI” xsi:type=”ebl:CustomSecurityHeaderType”>
<
Credentials xmlns=”urn:ebay:apis:eBLBaseComponents” xsi:type=”ebl:UserIdPasswordType”>
<
Username>
api_username</
Username>
<
Password>
api_password</
Password>
<
Signature>
api_signature</
Signature>
<
Subject>
authorizing_account_emailaddress</
Subject>
PayPal uses doc-literal SOAP messaging, not
rpc-encoding. With
doc-literal, a single service interface call passes an XML document in the request to the PayPal API server, which responds with an XML document instance.
<
RequesterCredentials xmlns=”urn:ebay:api:PayPalAPI”>
<Credentials xmlns=”urn:ebay:apis:eBLBaseComponents”>
<
Username>
api_username</
Username>
<
Password>
api_password</
Password>
<
specific_api_name_
Req xmlns=”urn:ebay:api:PayPalAPI”>
<
specific_api_name_
Request>
<
Version xmlns=urn:ebay:apis:eBLBaseComponents”>
service_version </
Version>
<
required_or_optional_fields xsi:type=”
some_type_here”>
data </
required_or_optional_fields>
</
specific_api_name_
Request>
<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:ebl=”urn:ebay:apis:eBLBaseComponents”
xmlns:ns=”urn:ebay:api:PayPalAPI”>
<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”
/>
<
specific_api_name_
Response xmlns=”urn:ebay:api:PayPalAPI”>
<
Timestamp xmlns=”urn:ebay:api:PayPalAPI”>
dateTime_in_UTC/GMT </TIMESTAMP>
<
Ack xmlns=”urn:ebay:apis:eBLBaseComponents”>Success
</Ack>
<Version xmlns=”urn:ebay:apis:eBLBaseComponents”>
serviceVersion
</Version>
<
CorrelationId xmlns=”urn:ebay:apis:eBLBaseComponents”>
applicationCorrelation
</CorrelationID>
<Build xmlns=”urn:ebay:apis:eBLBaseComponents”>
api_build_number </Build>
<
elements_for_specific_api_response>
data </
elements_for_specific_api_response>
</
specific_api_name_
Response>
If a request is malformed or some other error, the body of the SOAP response contains an <Errors> element with other elements that can help you troubleshoot the cause of the error. The most important of these additional elements are as follows:
<SOAP-ENV:Header>
... details not shown.</SOAP-ENV:Header>
<GetTransactionDetailsResponse xmlns="urn:ebay:api:PayPalAPI">
<Timestamp xmlns="urn:ebay:apis:eBLBaseComponents">
2005-02-09T21:51:26Z
</Timestamp>
<Ack xmlns="urn:ebay:apis:eBLBaseComponents">
Failure</Ack>
<Errors
xmlns="urn:ebay:apis:eBLBaseComponents"
xsi:type="ebl:ErrorType">
<ShortMessage xsi:type="xs:string">
Authentication/Authorization Failed </ShortMessage>
<LongMessage xsi:type="xs:string">
Username/Password is incorrect </LongMessage>
<ErrorCode xsi:type="xs:token">
10002</ErrorCode>
<SeverityCode xmlns="urn:ebay:apis:eBLBaseComponents">
Error
</SeverityCode>
<
CorrelationID xmlns="urn:ebay:apis:eBLBaseComponents">
debugging_info </
CorrelationID>
<Version xmlns="urn:ebay:apis:eBLBaseComponents">
1.000000
</Version>
<Build xmlns="urn:ebay:apis:eBLBaseComponents">1.0006</Build>
.. other elements in response.
The value returned in CorrelationID is important for PayPal to determine the precise cause of any error you might encounter. If you have to troubleshoot a problem with your requests, we suggest that you capture the value of
CorrelationID so you can report it to PayPal.
The PayPal SOAP API comprises individual API definitions for specific business functions. As a foundation, the API relies on eBay Business Language (eBL) base and core components. The core eBL structures
AbstractRequestType and
AbstractResponseType are the basis of the SOAP request and response of each PayPal API.
AbstractResponseType is also the framework for error messages common across all PayPal APIs.
The PayPal SOAP API service assumes that all data in SOAP requests is in Unicode, specifically, the Unicode (or UCS) Transformation Format, 8-bit encoding form (UTF-8).
The PayPal SOAP API schema defines date/time values as Coordinated Universal Time (UTC/GMT), using ISO 8601 format, and of type
ns:dateTime. An example date/time stamp is 2006-08-24T05:38:48Z
1.
|
The currencyID attribute is required.
|
5.
|
BasicAmountType has a data type of ebl:CurrencyCodeType, which defines a large number of different currency codes. However, for your processing to succeed, you must set currencyCode to one of the values from the first column of “PayPal-Supported Transactional Currencies”. Some APIs support only a subset of these currencies.
|
Here is an example. (The field name Amount is an example; actual field names can vary depending on the specific API.)
Use of a PayPal API that results in an exchange of funds triggers the sending of an Instant Payment Notification. The issuer of the API call is the one who receives the IPN. With the exception of MassPay, the API response contains all information you need about a transaction