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"
2. Click "Create account" and choose "Business (Merchant Account)" & Germany as "Country / Region".
3. Choose "View/Edit account"
4. Take "Email ID" and "System Generated Password" and use them as Login/Pass for Sandbox on the next step.
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.
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 go to "Testing tools" --> "Sandbox Accounts".
2. Select the appropriate Sandbox merchant account and notify Merchant Services about "Account ID".
PayPal Production
PayerID can be found under your PayPal account by https://paypal.com/myaccount/settings/ , as follows. PayerID uniquely identifies merchant in PayPal.
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/reference/#link-buttons.
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.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
</head>
<body>
<!-- Set up a container element for the button -->
<div id="paypal-button-container"></div>
<!-- Include the PayPal JavaScript SDK -->
<!-- Replace <PayerID> with your value, available under your PayPal account -->
<!-- Replace <Currency> with the currency which should be used, e.g., EUR -->
<!-- When going live, replace client-id with the live client-id provided by Computop -->
<!-- When going live, replace data-partner-attribution-id with the live data-partner-attribution-id provided by Computop -->
<script type="text/javascript" src="https://www.paypal.com/sdk/js?client-id=ARCsDK7xBFxa5pnGxk8qvB0STB07fyi_yHDRrb5al6gxahj73Pxg9X2l7onP9J2IN-LqcVJojys94FLK&merchant-id=<PayerID>¤cy=<Currency>&disable-funding=giropay,sofort,sepa,card&intent=capture" data-partner-attribution-id="Computop_PSP_PCP_Test"></script>
<!-- Initialize and show PayPal button -->
<script type="text/javascript">
let mid = "YOUR MERCHANTID";
let len = "LEN OF UNENCRYPTED BLOWFISH STRING";
let data = "BLOWFISH ENCRYPTED STRING";
let payid;
if (len != '' && data != '') {
// Set the request parameter MerchantID, Len and Data
const params = new URLSearchParams({
MerchantID: mid,
Len: len,
Data: data
});
// Render the PayPal button into #paypal-button-container
paypal.Buttons({
// Call your server to set up the transaction
createOrder: function(data, actions) {
return fetch('https://www.computop-paygate.com/ExternalServices/paypalorders.aspx', {
method: 'POST',
body: params
}).then(function (res) {
return res.text();
}).then(function(orderData) {
let qData = new URLSearchParams(orderData)
payid = qData.get('PayID');
return qData.get('orderid');
});
},
// Call cbPayPal.aspx for continue sequence
onApprove: function (data, actions) {
var rd = "MerchantId=" + mid + "&PayId=" + payid + "&OrderId=" + data.orderID;
// Build an invisible form and directly submit it
const form = document.createElement('form');
form.method = 'POST';
form.action = 'https://www.computop-paygate.com/cbPayPal.aspx?rd=' + window.btoa(rd);
form.style.display = 'none';
// Add form to body
document.body.appendChild(form);
// Submit form
form.submit();
},
onCancel: function (data, actions) {
var rd = "MerchantId=" + mid + "&PayId=" + payid + "&OrderId=" + data.orderID;
// Build an invisible form and directly submit it
const form = document.createElement('form');
form.method = 'POST';
form.action = "https://www.computop-paygate.com/cbPayPal.aspx?rd=" + window.btoa(rd) + "&ua=cancel&token=" + data.orderID;
form.style.display = 'none';
// Add form to body
document.body.appendChild(form);
// Submit form
form.submit();
},
onError: function (data, actions) {
var rd = "MerchantId=" + mid + "&PayId=" + payid + "&OrderId=" + data.orderID;
// Build an invisible form and directly submit it
const form = document.createElement('form');
form.method = 'POST';
form.action = "https://www.computop-paygate.com/cbPayPal.aspx?rd=" + window.btoa(rd) + "&ua=cancel&token=" + data.orderID;
form.style.display = 'none';
// Add form to body
document.body.appendChild(form);
// Submit form
form.submit();
}
}).render('#paypal-button-container');
}
</script>
</body>
</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¤cy=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.
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¤cy=EUR&disable-funding=giropay,sofort,sepa,card&enable-funding=paylater"></script>
As a result the following two buttons will appear.
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/#components
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¤cy=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¤cy=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¤cy=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.
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
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) Abbreviation Description CND condition M mandatory O optional C conditional Notice: Please note that the names of parameters can be returned in upper or lower case.Definitions
Data formats
Abbreviations
Comment If a parameter is mandatory, then it must be present If a parameter is optional, then it can be present, but it is not required If a parameter is conditional, then there is a conditional rule which specifies whether it is mandatory or optional
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:
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. "paymentId": "..." May be "00000000000000000000000000000000" if not yet set by Computop Paygate "application/json" Merchant can use inquire.aspxREST Format CND Description an32 M "_Links.self.type": "..." an..20 M "_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"
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. mid, RefNr) should not be checked case-sentive
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".
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:
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. mid, RefNr) should not be checked case-sentive
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:
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. mid, RefNr) should not be checked case-sentive
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:
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. mid, RefNr) should not be checked case-sentive
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:
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. mid, RefNr) should not be checked case-sentive
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:
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. mid, RefNr) should not be checked case-sentive
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:
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. mid, RefNr) should not be checked case-sentive
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)
- 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.
- By the URL customer logs in to PayPal account and approves the Billing Agreement.
- Once the Billing Agreement is approved by the customer, Billing Agreement ID will be send using URLNotify.
Billing Agreement Usage
- 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. The merchant can only be informed about the cancellation if additional option IPN “instant payment notification” is activated for merchant account. The activation has to be done by the Computop Helpdesk. Please keep in mind that after IPN activation the merchant will receive notifications for each status change of a PayPal payment.
- 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:
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. mid, RefNr) should not be checked case-sentive
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:
Description of the possible batch versions
The structure for a PayPal payment within a Batch file to be submitted is the following:
HEAD,<MerchantID>,<Date>,<Version> PAYPAL,Authorize,<Amount>,<Currency>,<TransID>,<PayID> PAYPAL,Capture,<Amount>,<Currency>,<TransID>,(<RefNr>,)<PayID>,(<TID>) PAYPAL,Credit,<Amount>,<Currency>,<TransID>,(<RefNr>,)<PayID>,(<TID>) PAYPAL,CreditEx,<TransID>,(<RefNr>,)<Amount>,<Currency>,<payer>,<note> PAYPAL,Reverse,<Amount>,<Currency>,<TransID>,(<RefNr>,)<PayID>,(<TID>) PAYPAL,REFTRANS,<Amount>,<Currency>,<TransID>,(<RefNr>),(<OrderDesc>),(<Capture>),(<TxType>),<BillingAgreementId> FOOT,<CountRecords>,<SumAmount>
Example for Master MID function:
HEAD,[Master]MerchantID,Date,2.x Type,Action,[Slave]MID,Amount,Currency,TransID,Data (depends on Action) 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:
Description of fields within the record for Batch files
The record area within the response file for Batch transactions looks as follows:
HEAD,<MerchantID>,<Date>,<Version> PAYPAL,Authorize,<Amount>,<Currency>,<TransID>,<PayID>,<Status>,<Code>,<CodeExt> PAYPAL,Capture,<Amount>,<Currency>,<TransID>,(<RefNr>,)<PayID>,(<TID>,)<Status>,<Code>,<CodeExt> PAYPAL,Credit,<Amount>,<Currency>,<TransID>,(<RefNr>,)<PayID>,(<TID>,)<Status>,<Code>,<CodeExt> PAYPAL,CreditEx,<TransID>,(<RefNr>,)<Amount>,<Currency>,<payer>,<note>,<Status>,<Code>,<CodeExt> PAYPAL,Reverse,<Amount>,<Currency>,<TransID>,(<RefNr>,)<PayID>,(<TID>,)<Status>,<Code>,<CodeExt> PAYPAL,REFTRANS,<Amount>,<Currency>,<TransID>,(<RefNr>),(<OrderDesc>),(<Capture>),(<TxType>),<BillingAgreementId>,<PayID>,<Status>,<Code>,<CodeExt> 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):
Description of result parameters within the record for Batch files