• DeutschEnglish

PayPal V2

About Paypal

Logo

COO 6505 1000 8 5948405

Info

Computop Paygate processes PayPal payments, which offers you worldwide merchant protection and a potential of 425 million international customers in more than 200 countries.

PayPal is one of the most popular online payment methods and it can be used in e- and m-Commerce.

Type

Payments by eWallet

General information about PayPal

PayPal has remained at the forefront of the digital payment revolution for more than 20 years. By leveraging technology to make financial services and commerce more convenient, affordable, and secure, the PayPal platform is empowering more than 425 million costomers and merchants in more than 200 markets to join and thrive in the global economy.

Customers in Germany can pay via direct debit, giropay or credit card (American Express, Diners Club, Discover, MasterCard, Visa). Members log into their PayPal account with their email address and a password during checkout and choose the preferred funding source - direct debit, credit card, PayPal credit (Pay Later) and, if applicable purchase on account or by instalment.

For more details visit https://www.paypal.com/

PayPal Shortcut (former "Express Checkout Shortcut (ECS)")

Computop Paygate offers the PayPal Shortcut to shorten the order process: Your customer does not need to enter any address data but rather click on Checkout with PayPal in the shopping cart area, log on and select the invoice- and delivery address retained by PayPal. Paygate then sends the delivery address as a result parameter back to your shop.

Buyers and vendors are protected

PayPal offers buyers and merchants extensive buyer/vendor protection in case "Pay with PayPal" is used as payment method (this excludes alternative payment methods). Buyers are able to claim money back from PayPal in the event of non-fulfilment of a contract of sale. With address verification and PayPal seller protection PayPal removes the merchant of the risk of payment failures in the case of direct debit payments, German credit card payments and unjustified customer complaints. Vendor protection is always linked to PayPal rules and conditions. PayPal risk management with buyer protection and address verification is provided to you via the Computop Paygate.

Payment online globally

PayPal is particularly beneficial for overseas customer acquisition. Computop Paygate supports all currencies and markets offered by PayPal. In many countries PayPal offers customers typical payment methods for their country. Customers abroad can often use typical payment methods such as prepaid cards in Italy or debit cards in the UK. Integrating PayPal into your shop provides the option to present your customers several payment methods at once. Of course you are also free to just present "Pay with PayPal" only.

Advantages of Orders V2 ("PayPal Checkout")

Orders V2 has the following advantages against PayPal NVP and SOAP.

  • Orders V2 is the basis for any future development of products and featured by PayPal. PayPal will not develop any new feature/extend existing functionality based on PayPal NVP and SOAP anymore.

  • Orders V2 adheres to the latest compliance standards.

  • Orders V2 offers smoother checkout process using a lightbox (by using JS SDK, so-called "PayPal Mini Browser"), a window overlay that appears on top of the merchant’s online shop page. This allows the customer to stay on merchant's page and to not lose focus.

Further information can be found on the webpage of PayPal (https://www.paypal.com).

Important information

Please note that, unlike our currency table, the currencies HUF (Hungarian ‒ Forints), JPY (Japanese Yen) and TWD (Republic of China ‒ Taiwan-Dollars) must be given without decimal places.

Example: To transfer 100.00 HUF one enters the amount=100.

This exception applies only for the PayPal payment method. For more details refer to https://developer.paypal.com/reference/currency-codes/.

If you want to use the MassPay functionality, please contact the Computop Helpdesk to activate this function for you.

Process flow

Paypal process flow

Configuration for PayPal

PayPal Sandbox test account

If you prefer to test the integration before going Live, and you do not have PayPal Sandbox test account, you should create PayPal Sandbox test account as first step.

  1. Login to https://developer.paypal.com/ and go to "Testing Tools" => "Sandbox Accounts"

COO 6505 1000 14 315149

  1. Click "Create account" and choose "Business (Merchant Account)" & Germany as "Country / Region".

COO 6505 1000 11 315149

COO 6505 1000 13 315149

  1. Choose "View/Edit account"

COO 6505 1000 12 315149

  1. Take "Email ID" and "System Generated Password" and use them as Login/Pass for Sandbox on the next step.

COO 6505 1000 15 315148

Grant permissions to Computop Paygate for transaction processing

In order to allow Computop processing transactions on your behalf, corresponding permissions should be granted to Computop.

Permissions can be granted to Computop under your PayPal account. Please use the following links to login into your PayPal account and follow the steps.

Sign up for PayPal Sandbox

Sign up for PayPal Production

Send PayerID to Computop Merchant Services

To complete merchant setup on Computop side, you should send PayerID to Computop Merchant Services.

PayPal Sandbox

1. Login to https://developer.paypal.com/dashboard and gehen zu "Testing tools" --> "Sandbox Accounts".

COO 6505 1000 11 315689

  1. Select the appropriate Sandbox merchant account and notify Merchant Services about "Account ID".

COO 6505 1000 15 315687

PayPal Production

PayerID can be found under your PayPal account by https://paypal.com/myaccount/settings/, as follows. PayerID uniquely identifies merchant in PayPal. The identifier is the same for Sandbox and Production environments.

COO 6505 1000 12 315807

Paypal Smart Button

There are two ways for integration of PayPal V2 via Computop. First one is by using Computop JavaScript module. Another one is setting up PayPal button by copy-paste of JavaScript code, which is prepared below.

Computop JavaScript module

The Computop PayPal JavaScript module provides client-side technology to complement with the integration of PayPal V2 via Computop.

For the module and the installation instruction please refer to Readme.

Setting up the PayPal Button

The client-side implementation of PayPal is realized using the PayPal JavaScript SDK.

Depending on your setup, you can use the following script or prepare you own, using the official PayPal JavaScript SDK documentation https://developer.paypal.com/sdk/js/.

COO 6505 1000 13 315932

While you are testing in sandbox, you can use client-id that matches your test app from PayPal web developer portal. When going live, replace this with the live client-id

Conditional Content (CT)

1
<!DOCTYPE html>
2
<html lang="en">
3
<head>
4
<meta charset="utf-8"/>
5
</head>
6
7
<body>
8
<!-- Set up a container element for the button -->
9
<div id="paypal-button-container"></div>
10
11
<!-- Include the PayPal JavaScript SDK -->
12
<!-- Replace <PayerID> with your value, available under your PayPal account -->
13
<!-- Replace <Currency> with the currency which should be used, e.g., EUR -->
14
<!-- When going live, replace client-id with the live client-id provided by Computop -->
15
<!-- When going live, replace data-partner-attribution-id with the live data-partner-attribution-id provided by Computop -->
16
<script type="text/javascript" src="https://www.paypal.com/sdk/js?client-id=ARCsDK7xBFxa5pnGxk8qvB0STB07fyi_yHDRrb5al6gxahj73Pxg9X2l7onP9J2IN-LqcVJojys94FLK&merchant-id=<PayerID>&currency=<Currency>&disable-funding=giropay,sofort,sepa,card&intent=capture" data-partner-attribution-id="Computop_PSP_PCP_Test"></script>
17
<!-- Initialize and show PayPal button -->
18
<script type="text/javascript">
19
let mid = "YOUR MERCHANTID";
20
let len = "LEN OF UNENCRYPTED BLOWFISH STRING";
21
let data = "BLOWFISH ENCRYPTED STRING";
22
let payid;
23
24
if (len != '' && data != '') {
25
// Set the request parameter MerchantID, Len and Data
26
const params = new URLSearchParams({
27
MerchantID: mid,
28
Len: len,
29
Data: data
30
});
31
32
// Render the PayPal button into #paypal-button-container
33
paypal.Buttons({
34
// Call your server to set up the transaction
35
createOrder: function(data, actions) {
36
return fetch('https://www.computop-paygate.com/ExternalServices/paypalorders.aspx', {
37
method: 'POST',
38
body: params
39
}).then(function (res) {
40
return res.text();
41
}).then(function(orderData) {
42
let qData = new URLSearchParams(orderData)
43
payid = qData.get('PayID');
44
return qData.get('orderid');
45
});
46
},
47
// Call cbPayPal.aspx for continue sequence
48
onApprove: function (data, actions) {
49
var rd = "MerchantId=" + mid + "&PayId=" + payid + "&OrderId=" + data.orderID;
50
// Build an invisible form and directly submit it
51
const form = document.createElement('form');
52
form.method = 'POST';
53
form.action = 'https://www.computop-paygate.com/cbPayPal.aspx?rd=' + window.btoa(rd);
54
form.style.display = 'none';
55
// Add form to body
56
document.body.appendChild(form);
57
// Submit form
58
form.submit();
59
},
60
onCancel: function (data, actions) {
61
var rd = "MerchantId=" + mid + "&PayId=" + payid + "&OrderId=" + data.orderID;
62
// Build an invisible form and directly submit it
63
const form = document.createElement('form');
64
form.method = 'POST';
65
form.action = "https://www.computop-paygate.com/cbPayPal.aspx?rd=" + window.btoa(rd) + "&ua=cancel&token=" + data.orderID;
66
form.style.display = 'none';
67
// Add form to body
68
document.body.appendChild(form);
69
// Submit form
70
form.submit();
71
}
72
}).render('#paypal-button-container');
73
}
74
</script>
75
76
</body>
77
</html>

Conditional Content (BNP)

1
<!DOCTYPE html>
2
<html lang="en">
3
<head>
4
<meta charset="utf-8"/>
5
</head>
6
7
<body>
8
<!-- Set up a container element for the button -->
9
<div id="paypal-button-container"></div>
10
11
<!-- Include the PayPal JavaScript SDK -->
12
<!-- While you are testing in sandbox, you can use client-id that matches your test app from PayPal web developer portal. When going live, replace this with the live client-id provided by Paypal -->
13
<script type="text/javascript" src="https://www.paypal.com/sdk/js?client-id=myClientID&currency=EUR&disable-funding=giropay,sofort,sepa,card&intent=capture"></script>
14
15
<!-- Initialize and show PayPal button -->
16
<script type="text/javascript">
17
let mid = "YOUR MERCHANTID";
18
let len = "LEN OF UNENCRYPTED BLOWFISH STRING";
19
let data = "BLOWFISH ENCRYPTED STRING";
20
let payid;
21
22
if (len != '' && data != '') {
23
// Set the request parameter MerchantID, Len and Data
24
const params = new URLSearchParams({
25
MerchantID: mid,
26
Len: len,
27
Data: data
28
});
29
30
// Render the PayPal button into #paypal-button-container
31
paypal.Buttons({
32
// Call your server to set up the transaction
33
createOrder: function(data, actions) {
34
return fetch('https://paymentpage.axepta.bnpparibas/ExternalServices/paypalorders.aspx', {
35
method: 'POST',
36
body: params
37
}).then(function (res) {
38
return res.text();
39
}).then(function(orderData) {
40
var json = stringToObj(orderData);
41
payid = json.PayID;
42
return json.orderid;
43
});
44
},
45
// Call cbPayPal.aspx for continue sequence
46
onApprove: function (data, actions) {
47
var rd = "MerchantId=" + mid + "&PayId=" + payid + "&OrderId=" + data.orderID;
48
window.location = "https://epayment.axepta.bnpparibas/cbPayPal.aspx?rd=" + window.btoa(rd);
49
}
50
}).render('#paypal-button-container');
51
}
52
53
function stringToObj (string) {
54
var newobj = {};
55
string.split('&').forEach(function (value) {
56
var keypair = value.split('=');
57
newobj[keypair[0]] = keypair[1];
58
});
59
60
return newobj;
61
}
62
63
</script>
64
65
</body>
66
</html>

Conditional Content (VR)

1
<!DOCTYPE html>
2
<html lang="en">
3
<head>
4
<meta charset="utf-8"/>
5
</head>
6
7
<body>
8
<!-- Set up a container element for the button -->
9
<div id="paypal-button-container"></div>
10
11
<!-- Include the PayPal JavaScript SDK -->
12
<!-- Replace <PayerID> with your value, available under your PayPal account -->
13
<!-- Replace <Currency> with the currency which should be used, e.g., EUR -->
14
<!-- When going live, replace client-id with the live client-id provided by Computop -->
15
<!-- When going live, replace data-partner-attribution-id with the live data-partner-attribution-id provided by Computop -->
16
<script type="text/javascript" src="https://www.paypal.com/sdk/js?client-id=Aavp9mlxVFQydGXJHBVZ0LEL1c1VtBcaPahoHzwu2VienquZGZjDzCXOKH_jDGlzkieWazhrixEEcd4X&merchant-id=<PayerID>&currency=<Currency>&disable-funding=giropay,sofort,sepa,card&intent=capture" data-partner-attribution-id="VRPayment_PSP_Computop_Test"></script>
17
<!-- Initialize and show PayPal button -->
18
<script type="text/javascript">
19
let mid = "YOUR MERCHANTID";
20
let len = "LEN OF UNENCRYPTED BLOWFISH STRING";
21
let data = "BLOWFISH ENCRYPTED STRING";
22
let payid;
23
24
if (len != '' && data != '') {
25
// Set the request parameter MerchantID, Len and Data
26
const params = new URLSearchParams({
27
MerchantID: mid,
28
Len: len,
29
Data: data
30
});
31
32
// Render the PayPal button into #paypal-button-container
33
paypal.Buttons({
34
// Call your server to set up the transaction
35
createOrder: function(data, actions) {
36
return fetch('https://vr-epayment-gateway.de/ExternalServices/paypalorders.aspx', {
37
method: 'POST',
38
body: params
39
}).then(function (res) {
40
return res.text();
41
}).then(function(orderData) {
42
var json = stringToObj(orderData);
43
payid = json.PayID;
44
return json.orderid;
45
});
46
},
47
// Call cbPayPal.aspx for continue sequence
48
onApprove: function (data, actions) {
49
var rd = "MerchantId=" + mid + "&PayId=" + payid + "&OrderId=" + data.orderID;
50
window.location = "https://vr-payments.gateway/cbPayPal.aspx?rd=" + window.btoa(rd);
51
}
52
}).render('#paypal-button-container');
53
}
54
55
function stringToObj (string) {
56
var newobj = {};
57
string.split('&').forEach(function (value) {
58
var keypair = value.split('=');
59
newobj[keypair[0]] = keypair[1];
60
});
61
62
return newobj;
63
}
64
65
</script>
66
67
</body>
68
</html>

Enabling PayPal Pay Later Button

The above piece of code contains the following line. In this line it will be possible to define which funding sources will be allowed in the web shop.

<script type="text/javascript" src="https://www.paypal.com/sdk/js?client-id=sb&currency=EUR&disable-funding=giropay,sofort,sepa,card&intent=capture"></script>

The line corresponded to the following button. By default (using the above line) only PayPal button will be available.

COO 6505 1000 14 580868

If it is required to have PayPal Pay Later Button in addition to standard PayPal button, the button can be enabled by using parameter enable-funding like follows.

<script type="text/javascript" src="https://www.paypal.com/sdk/js?client-id=sb&currency=EUR&disable-funding=giropay,sofort,sepa,card&enable-funding=paylater"></script>

As a result the following two buttons will appear.

COO 6505 1000 15 580933

Full list of values for disable-funding and enable-funding can be found by the link below.

https://developer.paypal.com/docs/regional/th/checkout/reference/customize-sdk/

Parameter intent

The above piece of code contains the following line.

<script type="text/javascript" src="https://www.paypal.com/sdk/js?client-id=sb&currency=EUR&disable-funding=giropay,sofort,sepa,card&intent=capture"></script>

Paygate offers 3 possible options for a payment.

  • SALE (capture=Auto) (when Paygate automatically sends Capture for a payment; this is the default scenario matching most merchant's needs)

  • AUTHORIZE (capture=Manual + txtype=Auth) (when Capture should be sent later by the merchant as a separate API call)

  • ORDER (capture=Manual + txtype=Order) (when Authorize and Capture should be sent later by the merchant as separate API calls)

Parameter intent in the above line must be in synch with these options.

If SALE option is used, parameters intent must be set to "capture" as below.

<script type="text/javascript" src="https://www.paypal.com/sdk/js?client-id=sb&currency=EUR&disable-funding=giropay,sofort,sepa,card&intent=capture"></script>

If AUTHORIZE or ORDER option is used, parameters intent must be set to "authorize" as below.

<script type="text/javascript" src="https://www.paypal.com/sdk/js?client-id=sb&currency=EUR&disable-funding=giropay,sofort,sepa,card&intent=authorize"></script>

It is important to set proper value for parameter intent, otherwise an error appears.

PayPal Button Style

The above piece of code for PayPal Button does not have any style-related parameters. This piece of code assumes default PayPal style for the button as follows.

COO 6505 1000 14 580868

PayPal allows to define different PayPal Button style by using parameters shape, color, layout and label. Full list of style-related parameters can be find by the following link.

https://developer.paypal.com/docs/checkout/advanced/style-guide/

Paygate Interface

Definitions

Data formats

Format

Description

a

alphabetical

as

alphabetical with special characters

n

numeric

an

alphanumeric

ans

alphanumeric with special characters

ns

numeric with special characters

bool

boolean expression (true or false)

3

fixed length with 3 digits/characters

..3

variable length with maximum 3 digits/characters

enum

enumeration of allowed values

dttm

ISODateTime (YYYY-MM-DDThh:mm:ss)

Abbreviations

Abbreviation

Description

Comment

CND

condition

M

mandatory

If a parameter is mandatory, then it must be present

O

optional

If a parameter is optional, then it can be present, but it is not required

C

conditional

If a parameter is conditional, then there is a conditional rule which specifies whether it is mandatory or optional

Notice: Please note that the names of parameters can be returned in upper or lower case.

Calling the interface

Use the following URL and parameters to initiate a PayPal payment in the Paygate form:

https://www.computop-paygate.com/ExternalServices/paypalorders.aspx

With this URL Paygate supports two different PayPal methods: One the one hand you can offer PayPal quite normally as an additional payment method for the conclusion of a sale. Otherwise you can use PayPal Express Checkout Shortcut, which connects the customers from the shopping cart directly to PayPal, where they can then select their delivery and invoicing address. The customer saves having to re-enter address details and you, as the merchant, enjoy PayPal vendor protection.

Paygate also supports the separation of authorisation and capture for PayPal Express Checkout. You can set parameters via the Paygate to control whether the amount on the customer's PayPal account should be blocked or captured immediately.

Notice: One of the following conditions must be fulfilled to enable you to benefit from PayPal seller protection. Either the customer uses PayPal Express Checkout and selects a delivery address which it has saved previously with PayPal, which Paygate transmits to your shop. Or your shop transmits the already known delivery address to PayPal. Seller protection applies only if the goods have been supplied to this specified address. There may be no more than 3 days between the authorisation of the amount in the customer's PayPal account and capture if you wish to benefit from seller protection. Paygate therefore supports several alternatives for the processing of PayPal payments: we shall be happy to advise you about the implementation of PayPal.

Notice: For security reasons, Computop Paygate rejects all payment requests with formatting errors. Therefore, please use the correct data type for each parameter.

The following table describes the encrypted payment request parameters:

KeyRESTFormatCNDDescription

MerchantID

BasicAuth.Username

ans..30

M

MerchantID, assigned by Computop. Additionally this parameter has to be passed in plain language too.

TransID

"transactionId": "..."

ans..64

M

TransactionID provided by you which should be unique for each payment

refnr

"referenceNumber": "..."

ans..30

O

Merchant’s unique reference number

Amount

"amount": { "value": ...}

n..10

M

Amount in the smallest currency unit (e.g. EUR Cent). Please contact the Computop Helpdesk, if you want to capture amounts <100 (smallest currency unit).

If OrderDesc(n) is used, there must be valid: Amount=ItemTotal+TaxTotal+SHAmount.

Currency

"amount": { "currency": "..."}

a3

M

Currency, three digits DIN / ISO 4217, e.g. EUR, USD, GBP. Please find an overview here: A1 Currency table. Please note the global PayPal supported currencies at https://developer.paypal.com/api/rest/reference/currency-codes/.

MAC

–––

an64

M

Hash Message Authentication Code (HMAC) with SHA-256 algorithm. Details can be found here:

Capture

"capture": {"auto": "Yes"}

"capture": {"manual": "Yes"}

a..6

O

Auto or Manual: determines whether the requested amount is settled immediately or at a later stage.

Important Note: Please contact Computop Helpdesk for Manual, to discuss different possibilities of usage.

Important Note: In case of Multi-Seller Payment (Marketplace functionality) only Auto is possible.

TxType

"payment": {"card": { "transactionType": "Order" }}

"payment": {"card": { "transactionType": "Auth" }}

"payment": {"card": { "transactionType": "BAID" }}

ans..5

C

Obligatory for Capture=Manual: Transaction type with possible values Order or Auth

For initial Billing Agreement transaction (Billing Agreement creation) TxType=BAID. In case TxType=BAID, all parameters except the following are optional. RefNr MUST be unique for each Billing Agreement creation transaction.

  • MerchantID

  • TransID

  • RefNr

  • Amount

  • Currency

  • OrderDesc

  • TxType

  • URLSuccess

  • URLFailure

  • URLNotify

  • MAC

PayPalMethod

"payment": {"payPal": { "method": "..." }}

enum

O

The "shortcut" value selects the changed transaction procedure which takes the customer back to the shop for payment confirmation.

You then need to call up the interface paypalcomplete.aspx to complete the sale.

RTF

–––

ans1

O

Reserved for future use

OrderDesc

"order": {"description": "..."}

ans..127

M

Description of purchased goods, unit prices etc.

OrderDesc(n)

"order": {"items": "..."}

ans..127

O

Customers shopping basket in the form:

OrderDesc(n)=Name,Amount,Number,Quantity,Description,Tax

OrderDesc2 to max. OrderDesc99 permissible. For more information, please visit PayPal at https://developer.paypal.com/docs/api/orders/v2/#orders_create!ct=application/json&path=purchase_units/items&t=request.

For correct execution of displaying function all OrderDesc(n) Amounts must equal to the Paygate parameter Amount.

Example for transferring all variants:

Amount=1600

OrderDesc2=book,500,1111,1,Article,100&

OrderDesc3=book,600,2222,1,Article,100&

ItemTotal=1100&

TaxTotal=200&

ShAmount=300&

Example including discount:

Amount=400

Orderdesc2=book,500,1234,1,nice book,100&

Orderdesc3=Discount,-200,5678,1,nice book,0&

taxtotal=100&

itemtotal=300&

TaxTotal

"amount": {"taxTotal": ...}

n..10

C

Mandatory, if +Tax is given in description of OrderDesc(n): Total amount of taxes of all single articles in the smallest currency unit (e.g. EUR Cent) = Sum(Tax*Number)

ItemTotal

"amount": {"itemTotal": ...}

n..10

C

Mandatory, if +tax is given in description of OrderDesc(n): Gross amount of all single articles in the smallest currency unit (e.g. EUR Cent) = Sum(Amount*Number)

ShAmount

"amount": {"shippingTotal": ...}

n..10

C

Shipping costs in the smallest currency unit (e.g. EUR Cent). Can be used only in case ShAmount <> 0 and connection with parameters ItemTotal and TaxTotal.

URLSuccess

"urls": {"success": "..."}

ans..256

M

Complete URL which calls up Paygate if payment has been successful. The URL may be called up only via port 443. This URL may not contain parameters: In order to exchange values between Paygate and shop, please use the parameter UserData.

Common notes:

  • We recommend to use parameter "response=encrypt" to get an encrypted response by Paygate

  • However, fraudster may just copy the encrypted DATA-element which are sent to URLFailure and send the DATA to URLSuccess/URLNotify. Therefore ensure to check the "code"-value which indicates success/failure of the action. Only a result of "code=00000000" should be considered successful.

URLFailure

"urls": {"failure": "..."}

ans..256

M

Complete URL which calls up Paygate if payment has been unsuccessful. The URL may be called up only via port 443. This URL may not contain parameters: In order to exchange values between Paygate and shop, please use the parameter UserData.

Common notes:

  • We recommend to use parameter "response=encrypt" to get an encrypted response by Paygate

  • However, fraudster may just copy the encrypted DATA-element which are sent to URLFailure and send the DATA to URLSuccess/URLNotify. Therefore ensure to check the "code"-value which indicates success/failure of the action. Only a result of "code=00000000" should be considered successful.

Response

–––

a7

O

Status response sent by Paygate to URLSuccess and URLFailure, should be encrypted. For this purpose, transmit Response=encrypt parameter.

URLNotify

"urls": {"notify": "..."}

ans..256

M

Complete URL which Paygate calls up in order to notify the shop about the payment result. The URL may be called up only via port 443. It may not contain parameters: Use the UserDataparameter instead.

Common notes:

  • Before follow-up actions (capture / credit / reversal) are carried out on an existing transaction, the first Notify must have been answered by the shop.

  • Fraudster may just copy the encrypted DATA-element which are sent to URLFailure and send the DATA to URLSuccess/URLNotify. Therefore ensure to check the "code"-value which indicates success/failure of the action. Only a result of "code=00000000" should be considered successful.

UserData

"metadata[userData]": "..."

ans..1024

O

If specified at request, Paygate forwards the parameter with the payment result to the shop.

ReqId

"requestId": "..."

ans..32

O

To avoid double payments or actions (e.g. by ETM), enter an alphanumeric value which identifies your transaction and may be assigned only once. If the transaction or action is submitted again with the same ReqID, Computop Paygate will not carry out the payment or new action, but will just return the status of the original transaction or action.

Please note that the Computop Paygate must have a finalized transaction status for the first initial action (authentication/authorisation). This does not apply to 3-D Secure authentications that are terminated by a timeout. The 3-D Secure Timeout status does not count as a completed status in which the ReqID functionality on Paygate does not take effect. Submissions with identical ReqID for an open status will be processed regularly.

Notice: Please note that a ReqID is only valid for 12 month, then it gets deleted at the Paygate.

Account

"payment": {"payPal": { "accountId": "..." }}

ans..128

O

For managing multiple PayPal accounts, Merchant account: ID or e-Mail address for which the request should be submitted to PayPal

Language

"language": "..."

an2

O

Language: AU, DE, FR, IT, GB, ES, US; default DE

If you would like to control the language for the customer on the PayPal login page, please note the sequence of checks at PayPal and how to influence the language accordingly.

  1. The user cookie is primary with PayPal. If this is set it overwrites everything (if the browser language is German, then this always has priority).

  2. The parameter Localcode – parameter Language on Paygate – with a 5 digit ISO code (fr_FR). Please see PayPal documentation: https://developer.paypal.com/reference/locale-codes/.

  3. The parameter ShipToCountry from the delivery address (if a delivery address is transferred)

  4. The parameter Localcode – parameter Language on Paygate – with a 2 digit ISO code (FR)

  5. The country code of the PayPal account. Please note, this takes place when the customer has logged into his PayPal account. At this point, the language can no longer be actively controlled.

FirstName

"billing": {"consumer": { "firstName": "..." }}

ans..50

OC

(obligatory for USA and Canada): Either the first name only or first and second name if a company name is used as a delivery address.

LastName

"billing": {"consumer": { "lastName": "..." }}

ans..50

OC

(obligatory for USA and Canada): Surname or name of the company of the delivery address

AddrStreet

"billing": {"addressInfo": { "addressLine1": { "street": "..." }}}

ans..100

OC

(obligatory for USA and Canada): Street in the delivery address

AddrStreet2

"billing": {"addressInfo": { "addressLine2": "..." }}

ans..100

O

  1. Street name in the delivery address that contains additional information e.g. packing station or similar. In order to receive this as a response parameter, it needs to be activated separately by the Computop Helpdesk.

AddrCity

"billing": {"addressInfo": { "city": "..." }}

ans..40

OC

(obligatory for USA and Canada): Town/city in the delivery address

AddrState

"billing": {"addressInfo": { "state": "..." }}

ans..40

C

(obligatory for USA and Canada): Federal state of the delivery address. The town submitted in AddrCity must be located in the given federal state, otherwise PayPal refused this payment. For possible values please refer to the PayPal-API-reference documentation.

AddrZip

"billing": {"addressInfo": { "postalCode": "..." }}

ans..20

OC

(obligatory for USA and Canada): Postcode in the delivery address

AddrCountryCode

"billing": {"addressInfo": { "country": { "A2": "..." }}}

an2

O

Country code of the delivery country

Phone

"billing": {"contactInfo": { "phone": "..." }}

n..20

O

Telephone number

NoShipping

n1

O

Handover NoShipping=1 prevents the delivery address registered with Paypal from being displayed.

Computop Paygate also offers the option to permanently suppress the delivery address for you on your MID. Please note that the delivery address should only be suppressed in the case of digital goods, as the seller protection is also linked to this. Please contact the Computop Helpdesk for this.

RiskEvaluation

ans..2048

O

Array of key-value pair (base64-encoded). List of keys has to be agreed with PayPal (can be different for different merchants) before usage of parameter RiskEvaluation.

Example:

1
{
2
"additional_data": [
3
{
4
"key": "sender_first_name",
5
"value": "John"
6
},
7
{
8
"key": "sender_last_name",
9
"value": "Doe"
10
}
11
]
12
}

PaymentUnit(n)

ans..2048

O

In case of Multi-Seller Payment (Marketplace functionality) each PaymentUnit(n) is related to a separate Seller (merchant within the Marketplace) and contains JSON object (base64-encoded) with the following format.

Example:

1
{
2
merchantemailaddress: "merchant@example.com",
3
merchantid: "XVRKM94GQDXB2",
4
amount: "11000",
5
itemtotal: "8000",
6
taxtotal: "2000",
7
shippingamount: "1000",
8
invoiceid: "xxxxx",
9
orderdescription: "yyyyy",
10
orderitems: [
11
{
12
name: "zzzzz",
13
quantity: "1",
14
unitamount: "3000",
15
tax: "1000",
16
description: "xxxx",
17
category: "PHYSICAL_GOODS"
18
},
19
{
20
name: "xxxxx",
21
quantity: "2",
22
unitamount: "2500",
23
tax: "500",
24
description: "yyyyy",
25
category: "DIGITAL_GOODS"
26
}
27
]
28
}
  • Where MerchantID is PayPal PayerID of the merchant.

  • InvoiceID must be unique per MerchantID. Merchant cannot use the same InvoiceID twice.

  • Valid values for Category are DIGITAL_GOODS, PHYSICAL_GOODS and DONATION. In scope of one PayPal transaction it is allowed to use 1) DIGITAL_GOODS and/or PHYSICAL_GOODS; 2) DONATION. DONATION cannot be combined with DIGITAL_GOODS or PHYSICAL_GOODS.

  • ItemTotal is the summary of UnitAmount * Quantity of all Order Items related to this merchant.

  • TaxTotal is the summary of Tax of all Order Items related to this merchant.

  • Amount is the summary of ItemTotal, TaxTotal and ShippingAmount of this merchant.

mode

an8

O

If mode="redirect" is sent, it means that the merchant does not use PayPal Smart Button and Paygate should redirect the customer to PayPal.

if mode is not sent (or sent with any other value except "redirect"), it means that the merchant uses PayPal Smart Button and Paygate will not redirect the customer to PayPal (redirection will be handled by PayPal Smart Button).

Common notes:

  • We recommend to use the PayPal Smart Button for additional fraud protection and improved user experience

Parameters for PayPal payments

In case of using REST API

In case of using REST API you will always receive a link where the merchant has to redirect the consumer to complete the payment.

REST

Format

CND

Description

"paymentId": "..."

an32

M

May be "00000000000000000000000000000000" if not yet set by Computop Paygate

"_Links.self.type": "..."

an..20

M

"application/json"

"_Links.redirect.href": "..."

an..1024

M

Merchant needs to redirect consumer to this URL to complete payment

"_Links.redirect.type": "..."

an..20

M

"text/html"

Merchant can use inquire.aspx

In case of using Key-Value-Pair API

The following table gives the result parameters which Computop Paygate transmits to URLSuccess or URLFailure and URLNotify. If you have specified the Response=encrypt parameter, the following parameters are sent Blowfish encrypted to your system:

pls. be prepared to receive additional parameters at any time and do not check the order of parameters

the key (e.g. MerchantId, RefNr) should not be checked case-sentive

KeyFormatCNDDescription

mid

ans..30

M

MerchantID, assigned by Computop

PayID

an32

M

ID assigned by Paygate for the payment, e.g. for referencing in batch files as well as for capture or credit request.

XID

an32

M

ID for all single transactions (authorisation, capture, credit note) for one payment assigned by Paygate

TransID

ans..64

M

TransactionID provided by you which should be unique for each payment

Status

a..50

M

OK, AUTHORIZE_REQUEST or Timeout (only if Capture=Manual) on the URLSuccess page or FAILED on the URLFailure page.

AUTHORIZE_REQUEST – is returned actively only for request parameter "TxType=auth" or "PayPalMethod=shortcut". When using TxType=auth or without TxType the final status is returned directly.

Timeout – all open payments with status AUTHORIZE_REQUEST will be closed ~ 3hours later automatically and are reported as Timeout.

Description

ans..1024

M

Further details in the event that payment is rejected. Please do not use the Description but the Code parameter for the transaction status analysis!

Code

an8

M

Error code according to Paygate Response Codes (A4 Error codes)

MAC

an64

M

Hash Message Authentication Code (HMAC) with SHA-256 algorithm. Details can be found here:

refnr

ans..30

O

Merchant’s unique reference number

UserData

ans..1024

O

If specified at request, Paygate forwards the parameter with the payment result to the shop.

CodeExt

n..10

O

Error code from PayPal if agreed with Computop Helpdesk

Name

ans..50

M

First name and surname joined

FirstName

ans..50

M

First name of payer (PayerInfo, may differ from the account name)

LastName

ans..50

M

Last name of payer (PayerInfo, may differ from the account name)

E-Mail

ans..100

M

Email address of the purchaser

AddrStreet

ans..100

O

Street in the delivery address

AddrStreet2

ans..100

O

  1. Street name in the delivery address that contains additional information e.g. packing station or similar. In order to receive this as a response parameter, it needs to be activated separately by the Computop Helpdesk.

AddrCity

ans..40

O

Town/city in the delivery address

AddrState

ans..40

O

Federal State in the delivery address

AddrZip

ans..20

O

Postcode in the delivery address

AddrCountryCode

an2

O

Country code of the delivery country

Phone

n..20

O

Telephone number

BillingAgreementID

ans..19

O

Billing Agreement ID which can be used for subsequent transactions, based on this Billing Agreement.

BillingName

ans..32

O

First name and surname joined

BillingAddrStreet

ans..100

O

Street name of the invoicing address lodged with PayPal

BillingAddrStreet2

ans..100

O

  1. Street name of the invoicing address lodged with PayPal that contains additional information e.g. packing station or similar. In order to receive this as a response parameter, it needs to be activated separately by the Computop Helpdesk.

For the return of billing data, please contact your PayPal contact person directly, who must activate the return for both the live and the sandbox account.

BillingAddrCity

ans..40

O

Town/city name of the invoicing address saved with PayPal.

For the return of billing data, please contact your PayPal contact person directly, who must activate the return for both the live and the sandbox account.

BillingAddrState

ans..40

O

Federal state of the invoicing address saved with PayPal.

For the return of billing data, please contact your PayPal contact person directly, who must activate the return for both the live and the sandbox account.

BillingAddrZIP

ans..20

O

Postcode of the invoicing address saved with PayPal.

For the return of billing data, please contact your PayPal contact person directly, who must activate the return for both the live and the sandbox account.

BillingAddrCountryCode

an2

O

Country code of the billing address.

For the return of billing data, please contact your PayPal contact person directly, who must activate the return for both the live and the sandbox account.

payerStatus

an..10

O

Status of buyer with possible values "verified" or "unverified"

InfoText

ans..255

M

Message to the merchant

PayerID

ans..13

O

(if response is activated): Unique identification number of customer account at PayPal

GrossAmount

an..9

O

Final amount charged, including any shipping and taxes from your Merchant profile

FeeAmount

an..9

O

PayPal fee amount charged for the transaction

SettleAmount

an..9

O

Amount deposited in your PayPal account after a currency conversion

TaxAmount

an..9

O

Tax charged on the transaction

ExchangeRate

an..17

O

Exchange rate if a currency conversion occurred. Relevant only if you are billing in their non-primary currency. If the buyer chooses to pay with a currency other than the non-primary currency, the conversion occurs in the buyer's account.

mc_fee

an..9

C

Only in case of separate Notify from PayPal: Transaction fee associated with the payment. mc_gross minus mc_fee equals the amount deposited into the receiver_email account. Equivalent to payment_fee for USD payments. If this amount is negative, it signifies a refund or reversal, and either of those payment statuses can be for the full or partial amount of the original transaction fee.

mc_gross

an..9

C

Only in case of separate Notify from PayPal: Full amount of the customer's payment before transaction fee is subtracted. Equivalent to payment_gross for USD payments. If this amount is negative, it signifies a refund or reversal, and either of those payment statuses can be for the full or partial amount of the original transaction.

OrderStatus(n)

ans..255

O

In case of Multi-Seller Payment (Marketplace functionality), each OrderStatus(n) contains Status and Capture ID (to be used in case of Credit) for corresponding OrderDesc(n) sent in request. JSON object (base64-encoded) with the following format.

Examples:

1
{"status":"COMPLETED", "id":"3C679366HH908993F1", "invoiceid":"PU1_20230812"}

1
{"status":"FAILED", "id":"na", "invoiceid":""}

Status has been analysed, because a customer could not have enough money for all merchants. In this case PayPal will approve only some of OrderDesc(n) (only for some merchants).

TID

ans..17

O

In case of SALE, the parameter contains unique PayPal-generated Capture ID.

In case of AUTH, the parameter contains unique PayPal-generated Authorization ID.

TransactionID

ans..17

O

The parameter contains unique PayPal-generated Order ID

Return parameters for URLSuccess, URLFailure and URLNotify with PayPal

Notice: The address parameters are always transmitted to the shop but are empty if no address data has been exchanged.

Calling the interface for method "shortcut"

The PayPal "shortcut" method enables a changed transaction procedure which takes the customer back to the shop for payment confirmation. To complete this PayPal payment in the next step, use the following URL and parameters:

https://www.computop-paygate.com/paypalComplete.aspx

Please note the following process description which is triggered by sending "PayPalMethod=shortcut".

By sending "PayPalMethod=shortcut" the end customer will be redirected to PayPal, there he will execute a pre-confirmation (this is not yet the final payment confirmation) and the customer will be redirected back to the store.

The redirect / return is executed here on the URLFailure with the following response parameters. Please note that there is a change here to the older PayPal Classic API. For these the redirect / return is processed on the URLSuccess and via response the open status is reported as follows "Status=AUTHORIZE_REQUEST&Code=00000000&Description=REQUEST".

Please contact the Computop Helpdesk if if you as a retailer would like to process the redirect to URLSuccess and the code and description should be "Status=AUTHORIZE_REQUEST&Code=00000000&Description=REQUEST".

PayPal V2 Response Parameter - open status:

  • Status=AUTHORIZE_REQUEST

  • Code=21500985

  • Description=PENDING

Furthermore it should be noted that the merchant can change the amount for the paypalComplete request after the customer has returned to the open status. However, PayPal has its own restrictions so that the amount cannot be changed upwards arbitrarily. For more details on this topic, please contact your PayPal account manager.

Notice: For security reasons, Computop Paygate rejects all payment requests with formatting errors. Therefore, please use the correct data type for each parameter.

The following table describes the encrypted payment request parameters:

KeyFormatCNDDescription

MerchantID

ans..30

M

MerchantID, assigned by Computop. Additionally this parameter has to be passed in plain language too.

TransID

ans..64

M

TransactionID provided by you which should be unique for each payment

Amount

n..10

M

Amount in the smallest currency unit (e.g. EUR Cent). Please contact the Computop Helpdesk, if you want to capture amounts <100 (smallest currency unit).

Currency

a3

M

Currency, three digits DIN / ISO 4217, e.g. EUR, USD, GBP. Please find an overview here: A1 Currency table. Please note the global PayPal supported currencies at https://developer.paypal.com/api/rest/reference/currency-codes/.

refnr

ans..30

O

Merchant’s unique reference number

PayID

an32

M

ID assigned by Paygate for the payment.

Enter the PayID from the response from paypal.aspx received in the previous transaction procedure.

Address information. When you transfer these values you can also change an address.

Notice: If transferring FirstName, all other values should also be entered. If not transferring FirstName, other address parameters are not taken into account.

FirstName

ans..50

C

Mandatory in order to transfer address information Either the first name only or first and second name if a company name is used as a delivery address.

LastName

ans..50

C

Obligatory if FirstName is transmitted: Surname or name of the company of the delivery address

AddrStreet

ans..100

C

Obligatory if FirstName is transmitted: Street in the delivery address

AddrStreet2

ans..100

C

Obligatory if FirstName is transmitted: 2. Street name in the delivery address that contains additional information e.g. packing station or similar. In order to receive this as a response parameter, it needs to be activated separately by the Computop Helpdesk.

AddrCity

ans..40

C

Obligatory if FirstName is transmitted: Town/city in the delivery address

AddrState

ans..40

C

Obligatory if FirstName is transmitted: Federal state of the delivery address. The town submitted in AddrCity must be located in the given federal state, otherwise PayPal refused this payment. For possible values please refer to the PayPal-API-reference documentation.

AddrZip

ans..20

C

Obligatory if FirstName is transmitted: Postcode in the delivery address

AddrCountryCode

an2

C

Obligatory if FirstName is transmitted: Country code of the delivery country

Phone

n..20

C

Obligatory if FirstName is transmitted: Telephone number

Parameters for PayPal payments with method "shortcut"

The following table describes the result parameters with which the Computop Paygate responds to your system

pls. be prepared to receive additional parameters at any time and do not check the order of parameters

the key (e.g. MerchantId, RefNr) should not be checked case-sentive

KeyFormatCNDDescription

mid

ans..30

M

MerchantID, assigned by Computop

PayID

an32

M

ID assigned by Paygate for the payment, e.g. for referencing in batch files as well as for capture or credit request.

XID

an32

M

ID for all single transactions (authorisation, capture, credit note) for one payment assigned by Paygate

TransID

ans..64

M

TransactionID provided by you which should be unique for each payment

Status

a..50

M

OK (URLSuccess) or FAILED (URLFailure)

Description

ans..1024

M

Further details in the event that payment is rejected. Please do not use the Description but the Code parameter for the transaction status analysis!

Code

an8

M

Error code according to Paygate Response Codes (A4 Error codes)

refnr

ans..30

O

Merchant’s unique reference number

CodeExt

n..10

O

Error code from external partner. Needs to be agreed with Computop Helpdesk.

Response parameters for PayPal with method "shortcut"

Calling the interface for a separate authorization

For a PayPal payment the ORDER can be separated from the subsequent authorization and the following steps. Separate authorization is only possible after the order (TxType=Order) is completed.

For a separate authorization with PayPal, please use the following URL:

https://www.computop-paygate.com/Authorize.aspx

Notice: For security reasons, Computop Paygate rejects all payment requests with formatting errors. Therefore, please use the correct data type for each parameter.

The following table describes the encrypted payment request parameters:

KeyFormatCNDDescription

MerchantID

ans..30

M

MerchantID, assigned by Computop. Additionally this parameter has to be passed in plain language too.

PayID

an32

M

ID assigned by Paygate for the payment, e.g. for referencing in batch files as well as for capture or credit request.

TransID

ans..64

M

TransactionID provided by you which should be unique for each payment

TxType

ans..5

M

Transaction type Auth

Amount

n..10

M

Amount in the smallest currency unit (e.g. EUR Cent). Please contact the Computop Helpdesk, if you want to capture amounts <100 (smallest currency unit).

Currency

a3

M

Currency, three digits DIN / ISO 4217, e.g. EUR, USD, GBP. Please find an overview here: A1 Currency table. Please note the global PayPal supported currencies at https://developer.paypal.com/api/rest/reference/currency-codes/.

FirstName

ans..50

O

Either the first name only or first and second name if a company name is used as a delivery address

LastName

ans..50

O

Surname or name of the company of the delivery address

AddrStreet

ans..100

O

Street in the delivery address

AddrStreet2

ans..100

O

  1. Street name in the delivery address that contains additional information e.g. packing station or similar. In order to receive this as a response parameter, it needs to be activated separately by the Computop Helpdesk.

AddrCity

ans..40

O

Town/city in the delivery address

AddrState

ans..40

O

Federal state of the delivery address. The town submitted in AddrCity must be located in the given federal state, otherwise PayPal refused this payment. For possible values please refer to the PayPal-API-reference documentation.

AddrZip

ans..20

O

Postcode in the delivery address

AddrCountryCode

an2

O

Country code of the delivery country

Phone

n..20

O

Telephone number

Parameters for PayPal authorization

The following table describes the result parameters with which the Computop Paygate responds to your system

pls. be prepared to receive additional parameters at any time and do not check the order of parameters

the key (e.g. MerchantId, RefNr) should not be checked case-sentive

KeyFormatCNDDescription

mid

ans..30

M

MerchantID, assigned by Computop

PayID

an32

M

ID assigned by Paygate for the payment, e.g. for referencing in batch files as well as for capture or credit request.

XID

an32

M

ID for all single transactions (authorisation, capture, credit note) for one payment assigned by Paygate

TransID

ans..64

M

TransactionID provided by you which should be unique for each payment

Status

a..50

M

OK (URLSuccess) or FAILED (URLFailure)

Description

ans..1024

M

Further details in the event that payment is rejected. Please do not use the Description but the Code parameter for the transaction status analysis!

Code

an8

M

Error code according to Paygate Response Codes (A4 Error codes)

CodeExt

n..10

O

Error code from PayPal if agreed with Computop Helpdesk

Response parameters for PayPal authorization

Capture

To carry out a capture for PayPal via a Server-to-Server connection, please use the following URL:

https://www.computop-paygate.com/capture.aspx

Notice: For security reasons, Computop Paygate rejects all payment requests with formatting errors. Therefore, please use the correct data type for each parameter.

The following table describes the encrypted payment request parameters:

KeyRESTFormatCNDDescription

MerchantID

BasicAuth.Username

ans..30

M

MerchantID, assigned by Computop. Additionally this parameter has to be passed in plain language too.

PayID

"paymentId": "..."

an32

M

ID assigned by Paygate for the payment, e.g. for referencing in batch files as well as for capture or credit request.

TransID

"transactionId": "..."

ans..64

M

TransactionID provided by you which should be unique for each payment

MAC

–––

an64

M

Hash Message Authentication Code (HMAC) with SHA-256 algorithm. Details can be found here:

Amount

"amount": { "value": ...}

n..10

M

Amount in the smallest currency unit (e.g. EUR Cent). Please contact the Computop Helpdesk, if you want to capture amounts <100 (smallest currency unit).

Currency

"amount": { "currency": "..."}

a3

M

Currency, three digits DIN / ISO 4217, e.g. EUR, USD, GBP. Please find an overview here: A1 Currency table. Please note the global PayPal supported currencies at https://developer.paypal.com/api/rest/reference/currency-codes/.

refnr

"referenceNumber": "..."

ans..30

O

Merchant’s unique reference number

ReqId

"requestId": "..."

ans..32

O

To avoid double payments or actions (e.g. by ETM), enter an alphanumeric value which identifies your transaction and may be assigned only once. If the transaction or action is submitted again with the same ReqID, Computop Paygate will not carry out the payment or new action, but will just return the status of the original transaction or action.

Please note that the Computop Paygate must have a finalized transaction status for the first initial action (authentication/authorisation). This does not apply to 3-D Secure authentications that are terminated by a timeout. The 3-D Secure Timeout status does not count as a completed status in which the ReqID functionality on Paygate does not take effect. Submissions with identical ReqID for an open status will be processed regularly.

Notice: Please note that a ReqID is only valid for 12 month, then it gets deleted at the Paygate.

TID

"payment": {"payPal": { "generatedCaptureId": "..." }}

ans..17

O

Unique PayPal-generated Capture ID. The value is required for a refund after several partial captures.

Example: A merchant did 3 partial captures for an authorization. For each capture unique PayPal-generated Capture ID is returned in TID (e.g., TID=111, TID=222, TID=333). Then, a refund for second capture should be done. In this case the merchant needs to send TID=222 in refund request.

CompleteType

"payment": {"payPal": { "completeType": "..." }}

ans..3

O

If <YES> is transferred, the possible open order of PayPal is closed on capture. (Reason: a 115% capture is permissible on the part of PayPal. If a capture reached 100%, Paygate automatically sends a request to close the payment).

Parameters for PayPal captures

The following table describes the result parameters with which the Computop Paygate responds to your system

pls. be prepared to receive additional parameters at any time and do not check the order of parameters

the key (e.g. MerchantId, RefNr) should not be checked case-sentive

KeyRESTFormatCNDDescription

mid

"merchantId": "..."

ans..30

M

MerchantID, assigned by Computop

PayID

"paymentId": "..."

an32

M

ID assigned by Paygate for the payment, e.g. for referencing in batch files as well as for capture or credit request.

XID

"xId": "..."

an32

M

ID for all single transactions (authorisation, capture, credit note) for one payment assigned by Paygate

TransID

"transactionId": "..."

ans..64

M

TransactionID provided by you which should be unique for each payment

Status

"status": "OK"

"status": "FAILED"

a..50

M

OK (URLSuccess) or FAILED (URLFailure)

Description

"description": "..."

ans..1024

M

Further details in the event that payment is rejected. Please do not use the Description but the Code parameter for the transaction status analysis!

Code

"code": ...

an8

M

Error code according to Paygate Response Codes (A4 Error codes)

CodeExt

"externalErrorCode": ...

n..10

O

Error code from PayPal if agreed with Computop Helpdesk

Result parameters for PayPal captures

Credit with reference

To carry out a credit with a reference transaction for PayPal, please use the following URL:

https://www.computop-paygate.com/credit.aspx

Notice: For security reasons, Computop Paygate rejects all payment requests with formatting errors. Therefore, please use the correct data type for each parameter.

The following table describes the encrypted payment request parameters:

KeyRESTFormatCNDDescription

MerchantID

BasicAuth.Username

ans..30

M

MerchantID, assigned by Computop. Additionally this parameter has to be passed in plain language too.

PayID

"paymentId": "..."

an32

M

ID assigned by Paygate for the payment to be credited

TransID

"transactionId": "..."

ans..64

M

TransactionID provided by you which should be unique for each payment

MAC

–––

an64

M

Hash Message Authentication Code (HMAC) with SHA-256 algorithm. Details can be found here:

Amount

"amount": { "value": ...}

n..10

M

Amount in the smallest currency unit (e.g. EUR Cent). Please contact the Computop Helpdesk, if you want to capture amounts <100 (smallest currency unit).

Currency

"amount": { "currency": "..."}

a3

M

Currency, three digits DIN / ISO 4217, e.g. EUR, USD, GBP. Please find an overview here: A1 Currency table. Please note the global PayPal supported currencies at https://developer.paypal.com/api/rest/reference/currency-codes/.

RefNr

"referenceNumber": "..."

ans..30

O

Merchant reference number: here a separate reference number, e.g. an invoice number, can be transferred

ReqId

"requestId": "..."

ans..32

O

To avoid double payments or actions (e.g. by ETM), enter an alphanumeric value which identifies your transaction and may be assigned only once. If the transaction or action is submitted again with the same ReqID, Computop Paygate will not carry out the payment or new action, but will just return the status of the original transaction or action.

Please note that the Computop Paygate must have a finalized transaction status for the first initial action (authentication/authorisation). This does not apply to 3-D Secure authentications that are terminated by a timeout. The 3-D Secure Timeout status does not count as a completed status in which the ReqID functionality on Paygate does not take effect. Submissions with identical ReqID for an open status will be processed regularly.

Notice: Please note that a ReqID is only valid for 12 month, then it gets deleted at the Paygate.

TID

"payment": {"payPal": { "generatedCaptureId": "..." }}

ans..17

O

Unique PayPal-generated Capture ID. The value is required for a refund after several partial captures.

Example: A merchant did 3 partial captures for an authorization. For each capture unique PayPal-generated Capture ID is returned in TID (e.g., TID=111, TID=222, TID=333). Then, a refund for second capture should be done. In this case the merchant needs to send TID=222 in refund request.

Note

"reason": "..."

ans..768

C

Explanatory text for recipient

Subject

"payment": {"payPal": { "massPayEmailSubject": "..." }}

ans..255

C

MassPay: E-Mail subject to recipient

Notice: If you want to use the MassPay functionality, please contact the Computop Helpdesk to activate this function for you.

Parameters for PayPal credits with reference transaction

The following table describes the result parameters with which the Computop Paygate responds to your system

pls. be prepared to receive additional parameters at any time and do not check the order of parameters

the key (e.g. MerchantId, RefNr) should not be checked case-sentive

KeyRESTFormatCNDDescription

mid

"merchantId": "..."

ans..30

M

MerchantID, assigned by Computop

PayID

"paymentId": "..."

an32

M

ID assigned by Paygate for the payment, e.g. for referencing in batch files as well as for capture or credit request.

XID

"xId": "..."

an32

M

ID for all single transactions (authorisation, capture, credit note) for one payment assigned by Paygate

TransID

"transactionId": "..."

ans..64

M

TransactionID provided by you which should be unique for each payment

Status

"status": "OK"

"status": "FAILED"

a..50

M

OK (URLSuccess) or FAILED (URLFailure)

Description

"description": "..."

ans..1024

M

Further details in the event that payment is rejected. Please do not use the Description but the Code parameter for the transaction status analysis!

Code

"code": ...

an8

M

Error code according to Paygate Response Codes (A4 Error codes)

CodeExt

"externalErrorCode": ...

n..10

O

Error code from PayPal if agreed with Computop Helpdesk

FeeRefundAmount

"payment": {"feeAmount": ...}

n..10

O

The refunded amount of the PayPal transaction fees. Required for part credit notes to prior partial captures.

GrossRefundAmount

"payment": {"grossAmount": ...}

n..10

O

Amount refunded to the buyer in this refund transaction. Required for part credit notes to prior partial captures.

NetRefundAmount

"payment": {"netAmount": ...}

n..10

O

Amount deducted from your PayPal account to make this refund. Required for part credit notes to prior partial captures.

Response parameters for PayPal credits with reference transaction

Credit without reference

In order to initiate a credit without reference transaction for PayPal payment, please use the following URL:

https://www.computop-paygate.com/paypalcreditEx.aspx

Notice: For security reasons, Computop Paygate rejects all payment requests with formatting errors. Therefore, please use the correct data type for each parameter.

The following table describes the encrypted payment request parameters:

KeyRESTFormatCNDDescription

MerchantID

BasicAuth.Username

ans..30

M

MerchantID, assigned by Computop. Additionally this parameter has to be passed in plain language too.

TransID

"transactionId": "..."

ans..64

M

TransactionID provided by you which should be unique for each payment

refnr

"referenceNumber": "..."

ans..30

O

Merchant’s unique reference number

Amount

"amount": { "value": ...}

n..10

M

Amount in the smallest currency unit (e.g. EUR Cent). Please contact the Computop Helpdesk, if you want to capture amounts <100 (smallest currency unit).

Currency

"amount": { "currency": "..."}

a3

M

Currency, three digits DIN / ISO 4217, e.g. EUR, USD, GBP. Please find an overview here: A1 Currency table. Please note the global PayPal supported currencies at https://developer.paypal.com/api/rest/reference/currency-codes/.

PayerID

ans..13

O

Unique identification number of customer account at PayPal

ReqId

"requestId": "..."

ans..32

O

To avoid double payments or actions (e.g. by ETM), enter an alphanumeric value which identifies your transaction and may be assigned only once. If the transaction or action is submitted again with the same ReqID, Computop Paygate will not carry out the payment or new action, but will just return the status of the original transaction or action.

Please note that the Computop Paygate must have a finalized transaction status for the first initial action (authentication/authorisation). This does not apply to 3-D Secure authentications that are terminated by a timeout. The 3-D Secure Timeout status does not count as a completed status in which the ReqID functionality on Paygate does not take effect. Submissions with identical ReqID for an open status will be processed regularly.

Notice: Please note that a ReqID is only valid for 12 month, then it gets deleted at the Paygate.

Account

"payment": {"payPal": { "accountId": "..." }}

ans..128

O

For managing multiple PayPal accounts, Merchant account: ID or e-Mail address for which the request should be submitted to PayPal

Note

"reason": "..."

ans..768

C

MassPay: Explanatory text for recipient

If you want to use the MassPay functionality, please contact the Computop Helpdesk to activate this function for you.

Subject

"payment": {"payPal": { "massPayEmailSubject": "..." }}

ans..255

C

MassPay: E-Mail subject to recipient

Notice: If you want to use the MassPay functionality, please contact the Computop Helpdesk to activate this function for you.

Payer

ans..100

O

MassPay: Email address of the purchaser

If you want to use the MassPay functionality, please contact the Computop Helpdesk to activate this function for you.

Parameters for PayPal credits without reference transaction

The following table describes the result parameters with which the Computop Paygate responds to your system

pls. be prepared to receive additional parameters at any time and do not check the order of parameters

the key (e.g. MerchantId, RefNr) should not be checked case-sentive

KeyRESTFormatCNDDescription

mid

"merchantId": "..."

ans..30

M

MerchantID, assigned by Computop

PayID

"paymentId": "..."

an32

M

ID assigned by Paygate for the payment, e.g. for referencing in batch files as well as for capture or credit request.

XID

"xId": "..."

an32

M

ID for all single transactions (authorisation, capture, credit note) for one payment assigned by Paygate

TransID

"transactionId": "..."

ans..64

M

TransactionID provided by you which should be unique for each payment

Status

"status": "OK"

"status": "FAILED"

a..50

M

OK (URLSuccess) or FAILED (URLFailure)

Description

"description": "..."

ans..1024

M

Further details in the event that payment is rejected. Please do not use the Description but the Code parameter for the transaction status analysis!

Code

"code": ...

an8

M

Error code according to Paygate Response Codes (A4 Error codes)

CodeExt

"externalErrorCode": ...

n..10

O

Error code from PayPal if agreed with Computop Helpdesk

FeeRefundAmount

"payment": {"feeAmount": ...}

n..10

O

The refunded amount of the PayPal transaction fees. Required for part credit notes to prior partial captures.

GrossRefundAmount

"payment": {"grossAmount": ...}

n..10

O

Amount refunded to the buyer in this refund transaction. Required for part credit notes to prior partial captures.

NetRefundAmount

"payment": {"netAmount": ...}

n..10

O

Amount deducted from your PayPal account to make this refund. Required for part credit notes to prior partial captures.

Response parameters for PayPal credits without reference transaction

Reversal

In order to cancel a transaction with PayPal, please use the following URL:

https://www.computop-paygate.com/reverse.aspx

Notice: For security reasons, Computop Paygate rejects all payment requests with formatting errors. Therefore, please use the correct data type for each parameter.

The following table describes the encrypted payment request parameters:

KeyRESTFormatCNDDescription

MerchantID

BasicAuth.Username

ans..30

M

MerchantID, assigned by Computop. Additionally this parameter has to be passed in plain language too.

PayID

"paymentId": "..."

an32

M

ID assigned by Paygate for the payment to be reversed

TransID

"transactionId": "..."

ans..64

M

TransactionID provided by you which should be unique for each payment

MAC

–––

an64

M

Hash Message Authentication Code (HMAC) with SHA-256 algorithm. Details can be found here:

Amount

"amount": { "value": ...}

n..10

M

Amount in the smallest currency unit (e.g. EUR Cent). Please contact the Computop Helpdesk, if you want to capture amounts <100 (smallest currency unit).

Currency

"amount": { "currency": "..."}

a3

M

Currency, three digits DIN / ISO 4217, e.g. EUR, USD, GBP. Please find an overview here: A1 Currency table. Please note the global PayPal supported currencies at https://developer.paypal.com/api/rest/reference/currency-codes/.

ReqId

"requestId": "..."

ans..32

O

To avoid double payments or actions (e.g. by ETM), enter an alphanumeric value which identifies your transaction and may be assigned only once. If the transaction or action is submitted again with the same ReqID, Computop Paygate will not carry out the payment or new action, but will just return the status of the original transaction or action.

Please note that the Computop Paygate must have a finalized transaction status for the first initial action (authentication/authorisation). This does not apply to 3-D Secure authentications that are terminated by a timeout. The 3-D Secure Timeout status does not count as a completed status in which the ReqID functionality on Paygate does not take effect. Submissions with identical ReqID for an open status will be processed regularly.

Notice: Please note that a ReqID is only valid for 12 month, then it gets deleted at the Paygate.

Parameters for PayPal reversals

The following table describes the result parameters with which the Computop Paygate responds to your system

pls. be prepared to receive additional parameters at any time and do not check the order of parameters

the key (e.g. MerchantId, RefNr) should not be checked case-sentive

KeyRESTFormatCNDDescription

mid

"merchantId": "..."

ans..30

M

MerchantID, assigned by Computop

PayID

"paymentId": "..."

an32

M

ID assigned by Paygate for the payment, e.g. for referencing in batch files as well as for capture or credit request.

XID

"xId": "..."

an32

M

ID for all single transactions (authorisation, capture, credit note) for one payment assigned by Paygate

TransID

"transactionId": "..."

ans..64

M

TransactionID provided by you which should be unique for each payment

Status

"status": "OK"

"status": "FAILED"

a..50

M

OK (URLSuccess) or FAILED (URLFailure)

Description

"description": "..."

ans..1024

M

Further details in the event that payment is rejected. Please do not use the Description but the Code parameter for the transaction status analysis!

Code

"code": ...

an8

M

Error code according to Paygate Response Codes (A4 Error codes)

CodeExt

"externalErrorCode": ...

n..10

O

Error code from PayPal if agreed with Computop Helpdesk

Result parameters for PayPal reversals

Reference Transactions

Prerequisites

  • Option "Reference Transactions“ has to be activated in your PayPal account. Please request the activation at PayPal directly.

Process

The process contains two steps.

Billing Agreement Creation (initial Billing Agreement transaction)

  1. Call PayPalOrders.aspx with TxType=BAID (refer to ). In response Paygate returns URL. All parameters except the following are optional in case of TxType=BAID.

  2. By the URL customer logs in to PayPal account and approves the Billing Agreement.

  3. Once the Billing Agreement is approved by the customer, Billing Agreement ID will be send using URLNotify.

Billing Agreement Usage

  1. Call PayPalRefTrans.aspx (described below, as server-to-server request) with BillingAgreementID="Billing Agreement ID" created on previous step. Customer does not need to login to PayPal account for transaction approval anymore.

Revoking of Billing Agreement

  • A customer can revoke Billing Agreement ID in own PayPal account.

  • If a customer revokes Billing Agreement ID no further subsequent reference transactions (using this Billing Agreement ID) are possible. It is also not possible to reactivate this Billing Agreement ID.

Request

In order to initiate a PayPal subscription payment, please use the following URL:

https://www.computop-paygate.com/paypalreftrans.aspx

Notice: For security reasons, Computop Paygate rejects all payment requests with formatting errors. Therefore, please use the correct data type for each parameter.

The following table describes the encrypted payment request parameters:

KeyFormatCNDDescription

MerchantID

ans..30

M

MerchantID, assigned by Computop. Additionally this parameter has to be passed in plain language too.

TransID

ans..64

M

TransactionID provided by you which should be unique for each payment

Amount

n..10

M

Amount in the smallest currency unit (e.g. EUR Cent). Please contact the Computop Helpdesk, if you want to capture amounts <100 (smallest currency unit).

Currency

a3

M

Currency, three digits DIN / ISO 4217, e.g. EUR, USD, GBP. Please find an overview here: A1 Currency table. Please note the global PayPal supported currencies at https://developer.paypal.com/api/rest/reference/currency-codes/.

refnr

ans..30

O

Merchant’s unique reference number

OrderDesc

ans..30

O

Description of purchased goods, unit prices etc.

BillingAgreementID

an19

M

Identification number of the invoice agreement. When the buyer confirms the invoice agreement it is validated and remains valid until revoked by the buyer.

Parameters for PayPal Reference Transactions

Response

The following table describes the result parameters with which the Computop Paygate responds to your system

pls. be prepared to receive additional parameters at any time and do not check the order of parameters

the key (e.g. MerchantId, RefNr) should not be checked case-sentive

KeyFormatCNDDescription

mid

ans..30

M

MerchantID, assigned by Computop

PayID

an32

M

ID assigned by Paygate for the payment, e.g. for referencing in batch files as well as for capture or credit request.

XID

an32

M

ID for all single transactions (authorisation, capture, credit note) for one payment assigned by Paygate

TransID

ans..64

M

TransactionID provided by you which should be unique for each payment

Status

a..50

M

OK (URLSuccess) or FAILED (URLFailure)

Description

ans..1024

M

Further details in the event that payment is rejected. Please do not use the Description but the Code parameter for the transaction status analysis!

Code

an8

M

Error code according to Paygate Response Codes (A4 Error codes)

CodeExt

n..10

O

Error code from PayPal if agreed with Computop Helpdesk

refnr

ans..30

O

Merchant’s unique reference number

OrderID

ans..17

O

Unique PayPal-generated OrderID

TID

ans..17

O

Unique PayPal-generated CaptureID

Name

ans..50

M

First name and surname joined

FirstName

ans..50

M

First name of payer (PayerInfo, may differ from the account name)

LastName

ans..50

M

Last name of payer (PayerInfo, may differ from the account name)

E-Mail

ans..100

M

Email address of the purchaser

BillingName

ans..32

O

First name and surname joined

BillingAddrCountryCode

an2

O

Country code of the billing address.

For the return of billing data, please contact your PayPal contact person directly, who must activate the return for both the live and the sandbox account.

PayerID

ans..13

O

(if response is activated): Unique identification number of customer account at PayPal

Result parameters for PayPal Reference Transactions

Batch processing via the interface

Basic information about using Batch files and about their structure can be found in the Batch Manager manual. Within batch processing not alle functions are available which are usually available for the online interface.

This section describes the parameters which must be transferred within the data set (Record) for executing a PayPal payment and which information can be found within the response file about the payment status.

For Batch calls there must be considered batch versions, from which optional parameters depend. All version designations starting with „2.“ pertain calls for a group of enterprises. That means within a batch file for a particular MerchantID can be transferred transactions for other merchants with a separate Sub-MID.

Following table gives an overview of all batch versions that are possible for a specific action and their specialities:

Action

Version

Description

Authorize

1.0 / 2.0

Standard version without return of parameter Code

1.4 / 2.4

with TID

Capture

1.0 / 2.0

Standard version without return of parameter Code

1.x / 2.x

with RefNr (valid for all versions other than 1.0)

1.4 / 2.4

with TID

Credit

1.0 / 2.0

Standard version without return of parameter Code

1.x / 2.x

with RefNr (valid for all versions other than 1.0)

1.4 / 2.4

with TID

CreditEx

1.0 / 2.0

Standard version without return of parameter Code

1.x / 2.x

with RefNr (valid for all versions other than 1.0)

Reverse

1.0 / 2.0

Standard version without return of parameter Code

1.4 / 2.4

with TID

ABO/REFTRANS

1.0 / 2.0

ABO - Classic PayPal API

REFTRANS - Order V2 PayPal API

Standard version without return of parameter Code

1.x / 2.x

with RefNr (valid for all versions other than 1.0)

Description of the possible batch versions

The structure for a PayPal payment within a Batch file to be submitted is the following:

1
HEAD,<MerchantID>,<Date>,<Version>
2
PAYPAL,Authorize,<Amount>,<Currency>,<TransID>,<PayID>
3
PAYPAL,Capture,<Amount>,<Currency>,<TransID>,(<RefNr>,)<PayID>,(<TID>)
4
PAYPAL,Credit,<Amount>,<Currency>,<TransID>,(<RefNr>,)<PayID>,(<TID>)
5
PAYPAL,CreditEx,<TransID>,(<RefNr>,)<Amount>,<Currency>,<payer>,<note>
6
PAYPAL,Reverse,<Amount>,<Currency>,<TransID>,(<RefNr>,)<PayID>,(<TID>)
7
PAYPAL,REFTRANS,<Amount>,<Currency>,<TransID>,(<RefNr>),(<OrderDesc>),(<Capture>),(<TxType>),<BillingAgreementId>
8
FOOT,<CountRecords>,<SumAmount>

Example for Master MID function:

1
HEAD,[Master]MerchantID,Date,2.x
2
Type,Action,[Slave]MID,Amount,Currency,TransID,Data (depends on Action)
3
FOOT,CountRecords,SumAmount

Notice: In Version 1.4 it is also possible to transfer CompleteType together with a Capture action:

PAYPAL,Capture,<Amount>,<Currency>,<TransID>,(<RefNr>,)<PayID>(,<CompleteType>,<TID>)

The following table describes the individual fields and values used within the data set (record) in the batch file:

KeyFormatCNDDescription

Type

a..11

M

HEAD for Header, FOOT for Footer, PAYPAL for PayPal

Action

a..20

M

The parameter Action defines the type of transaction:

Authorize

Capture

Credit

CreditEx (credit note without previous capture; please agree this with Computop Helpdesk beforehand)

Reverse (cancellation)

ABO (subscription, Classic API)

REFTRANS (subscription, Order V2 API)

Amount

n..10

M

Amount in the smallest currency unit (e.g. EUR Cent). Please contact the Computop Helpdesk, if you want to capture amounts <100 (smallest currency unit).

Currency

a3

M

Currency, three digits DIN / ISO 4217, e.g. EUR, USD, GBP. Please find an overview here: A1 Currency table. Please note the global PayPal supported currencies at https://developer.paypal.com/api/rest/reference/currency-codes/.

TransID

ans..64

M

TransactionID provided by you which should be unique for each payment

refnr

ans..30

O

Merchant’s unique reference number

payer

ans..100

O

MassPay: Email address of the purchaser: In this case you transfer the received email parameter from the Response

If you want to use the MassPay functionality, please contact the Computop Helpdesk to activate this function for you.

note

ans..758

O

Explanatory text for recipient

PayID

an32

M

ID assigned by Paygate for this transaction

TID

ans..17

O

PayPal unique transaction number. Required for a number of authorisations or part captures, part credit notes or part cancellations.

OrderDesc

ans..127

O

Description of purchased goods, unit prices etc.

Capture

a..6

O

Auto or Manual: determines whether the requested amount is settled immediately or at a later stage.

For REFTRANS only Auto is possible.

TxType

ans..5

OC

Obligatory for Capture=Manual: Transaction type with possible values Order and Auth

BillingAgreementID

an19

OC

Identification number of the invoice agreement. When the buyer confirms the invoice agreement it is validated and remains valid until revoked by the buyer.

Mandatory in case of ABO and REFTRANS.

Description of fields within the record for Batch files

The record area within the response file for Batch transactions looks as follows:

1
HEAD,<MerchantID>,<Date>,<Version>
2
PAYPAL,Authorize,<Amount>,<Currency>,<TransID>,<PayID>,<Status>,<Code>,<CodeExt>
3
PAYPAL,Capture,<Amount>,<Currency>,<TransID>,(<RefNr>,)<PayID>,(<TID>,)<Status>,<Code>,<CodeExt>
4
PAYPAL,Credit,<Amount>,<Currency>,<TransID>,(<RefNr>,)<PayID>,(<TID>,)<Status>,<Code>,<CodeExt>
5
PAYPAL,CreditEx,<TransID>,(<RefNr>,)<Amount>,<Currency>,<payer>,<note>,<Status>,<Code>,<CodeExt>
6
PAYPAL,Reverse,<Amount>,<Currency>,<TransID>,(<RefNr>,)<PayID>,(<TID>,)<Status>,<Code>,<CodeExt>
7
PAYPAL,REFTRANS,<Amount>,<Currency>,<TransID>,(<RefNr>),(<OrderDesc>),(<Capture>),(<TxType>),<BillingAgreementId>,<PayID>,<Status>,<Code>,<CodeExt>
8
FOOT,<CountRecords>,<SumAmount>

The following table describes the response parameters which the Batch Manager saves in the Record area for each transaction (standard parameters not explained here, such as <TransID> or <RefNR> and request parameters are returned unchanged and correspond to the call as specified before):

KeyFormatCNDDescription

Action

a..20

M

The parameter Action defines the type of transaction:

Authorize

Capture

Credit

CreditEx (credit note without previous capture; please agree this with Computop Helpdesk beforehand)

Reverse (cancellation)

ABO (subscription, Classic API)

REFTRANS (subscription, Order V2 API)

PayID

an32

M

ID assigned by Paygate for this transaction

Status

a..50

M

OK (URLSuccess) or FAILED (URLFailure)

Code

an8

M

Error code according to Paygate Response Codes (A4 Error codes)

CodeExt

n..10

O

Error code from PayPal if agreed with Computop Helpdesk

Description of result parameters within the record for Batch files

Paygate

Documentation (EN)

Dokumentation (DE)

Paygate Status