Transaction Service API
The Transaction Service allows easy integration for processing and retrieving information for Card and ACH transactions. Requests are made through POST
, PUT
, or GET
requests.
Authentication and authorization for the TransactionService
will be done with a Base64 encoded username:password
, passed in through the BASIC HTTP Authorization Header.
General Service Notes
POST
|
Create a new entity. |
PUT
|
Update and overwrite an existing entity. |
PATCH
|
Update portions of an existing entity. In general, if supplied value is null , the field will not be changed.
|
GET
|
Retrieve a single entity or a list of entities. |
RESPONSE
|
In general, fields will only be returned if their value is not null or empty. |
Ach Processing
-DEBIT Request
POST
an AchTransaction
to create a new ACH Transaction
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/debits
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/achtransactions/debits
Response
AchTransaction
object
-BULK DEBIT Request
POST
a TransactionBulk
to create and process a list of
new ACH Transactions
Test
URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/debits/bulk
Live
URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/achtransactions/debits/bulk
Response
TransactionBulk
object
When the endpoint begins processing the transactions in the background (async), the HTTP Status
will
be 202 ACCEPTED
-CREDIT Request
POST
an AchTransaction
to create a new credit ACH Transaction
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/credits
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/achtransactions/credits
Response
AchTransaction
object
-CREDIT Existing Request
POST
an AchTransaction
to credit an existing ACH Transaction with the originalTransactionId
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/credits/{originalTransactionId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/achtransactions/credits/{originalTransactionId}
Response
AchTransaction
object
-VOID Existing Request
PUT
an AchVoidTransaction
to void an existing ACH Transaction with the originalTransactionId
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/voids/{originalTransactionId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/achtransactions/voids/{originalTransactionId}
Response
AchTransaction
object
-AchTransaction Object
Attribute | Description |
paymentMethod
Alpha5
Readonly
|
The payment method of the Transaction. For AchTransactions this value is CHECK . Always present.
|
arrivalId
NumericString20
Readonly
|
The arrival id of the transaction. Always present. |
transactionId
NumericString20
Readonly
|
The id of the transaction. Only present when transactionStatus is APPROVED .
|
relatedId
NumericString20
Readonly
|
The id of the related transaction. When the transaction transactionType is CREDIT , this value will be the transactionId of the original debit transaction. It will be blank in all other scenarios.
|
uniqueRequestId
Alphanumeric50
|
An optional id provided for the transaction. This value will be used as an additional mechanism for verifying against duplicate transactions. When a duplicate uniqueRequestId is found, the requestErrorList will contain an apiFieldNameList with the related arrivalId . If the original transaction was APPROVED this will also include the transactionId . These ids can be used to GET the original transaction. This feature is not supported when VOIDing a transaction.
|
accountNumber
Alphanumeric45
|
Account or reference number. This is often the customer account number from your system. |
firstName
Alphanumeric45
|
The first name of your client. |
lastName
Alphanumeric45
|
The last name of your client. |
streetAddressOne
Alphanumeric80
|
The first line of the address. |
streetAddressTwo
Alphanumeric45
|
The second line of the address. |
city
Alphanumeric45
|
The city associated with the transaction. |
state
Alpha2
Conditional
|
The abbreviation of the state. Must be provided if required by payment gateway processor based on industry requirements. |
zip
NumericString5
Conditional
|
The zip code associated with the transaction. Must be provided if required by payment gateway processor based on industry requirements. |
country
Alpha2
|
The abbreviation of the country. |
zipPlusFour
NumericString4
|
The four digit extension of the zip code. |
country
Alpha2
|
The abbreviation of the country. |
memo
Alphanumeric50
|
Custom memo field. |
phoneNumber
NumericString10
|
An un-formatted phone number. |
phoneNumberType
NumericString10
|
The type of phone number, if known. If not submitted as part of the original payment, HOME will be assumed.
Valid value(s):
CELL
HOME
WORK
|
emailAddress
Alphanumeric75
Conditional
|
The email address of the payer. Required if sendReceiptToEmailAddress is true.
|
sendReceiptToEmailAddress
BooleanN/A
Required
|
Specify if the service should send a transaction receipt to the payer email. This field is not stored in the database and will not be returned on GET requests.
|
customReceiptLabels
ObjectN/A
|
A Name/Value list of CustomReceiptLabels to show on the Receipt. If a label is sent, it must be accompanied by a value.
|
customReceiptText
Alphanumeric5000
|
Custom text to show on the Receipt. If not provided, the service will use the company default. This field is not stored in the database and will not be returned on GET requests.
|
customReceiptValues
ObjectN/A
|
A Name/Value list of CustomReceiptValues that specifies fields on a receipt to override.
|
flowId
NumericString20
|
The related Flow transaction (often a signature). See Flow Service. |
transactionType
Alpha6
|
The type of transaction that was requested.
Valid value(s):
DEBIT
CREDIT
|
paymentAmount
NumericString11
Conditional
|
The payment amount of the transaction. Either a paymentAmount or feeAmount is required
|
feeAmount
NumericString11
Conditional
|
The fee amount of the transaction. Either a feeAmount or paymentAmount is required
|
transactionAmount
NumericString11
Readonly
|
The total amount of the transaction. |
creditAmount
NumericString11
Readonly
|
The total outgoing payment amount for the transaction record. |
debitAmount
NumericString11
Readonly
|
The total amount that is expected to be delivered from the payer’s account into the merchant’s account for the transaction. |
netAmount
NumericString11
Readonly
|
The overall sum of the debit and credit for the transaction; if this is a credit and a negative dollar amount, a "-" will display with the amount, e.g. "-12.00" |
dateCreated
Date19
Readonly
|
The date the transaction was received.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
dateScheduled
Date10
Required
|
The date the transaction is scheduled to be processed. This date must be today or later.
Format: ISO-8601 (YYYY-MM-DD)
|
dateProcessed
Date19
Readonly
|
The date the transaction was processed.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
transactionDate
Date19
Readonly
|
The date the transaction was processed. Alias for dateProcessed .
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
dateNachaVerified
Date19
Readonly
|
The date the bank account data was verified. This verification only happens the first time unique bank payment information (bankRoutingNumber and bankAccountNumber ) is provided under these conditions: The verification feature is enabled, and the processing vendor supports it (such as Payliance), and the accountDirective is for a "WEB" entryCode . Please contact our Customer Success team to learn more.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
transactionOrigin
Alpha3
Required
|
The origin of the transaction. This should be set to EXT .NOTE: There are other possible values. Please contact our Customer Success team to learn more. |
entryCode
Alpha3
Readonly
|
The entry code that the transaction was processed with. Only present on transactions with a transactionStatus of APPROVED .
|
bankName
Alphanumeric45
Readonly
|
The name of the account holder's bank. Only present for transactions with a transactionStatus of APPROVED .
|
bankAccountToken
Alphanumeric20
Conditional
|
A Token which represents the account holder's bank data (bankAccountNumber , bankRoutingNumber , bankAccountType ) to be used for processing this transaction. Either this or a bankAccountNumber is required.
NOTE: This can be generated from the TokenizationService |
isReusable
BooleanN/A
|
Indicates whether the bankAccountToken is authorized for reuse. If false, this token may only be used for a single transaction.Default value: true
|
bankAccountNumber
NumericString20
Conditional
|
The account holder's bank account number. Either this or a bankAccountToken is required. During DEBIT or CREDIT processing, this value will be Tokenized and the generated token will be returned in the bankAccountToken field.
DEPRECATED: use bankAccountToken instead
|
bankRoutingNumber
NumericString9
Conditional
|
The routing number of the account holder's bank. Required if providing a bankAccountNumber . If provided with a bankAccountToken , this value will be updated on the Token.
|
bankAccountType
Alpha8
Conditional
|
The type of bank account that is used to make the payment. Required if providing a bankAccountNumber . If provided with a bankAccountToken , this value will be updated on the Token.
Valid value(s):
CHECKING , SAVINGS |
bankAccountNumberLastFour
NumericString4
Readonly
|
The last four numbers of the account holder's bank account number. |
checkNumber
NumericString10
|
The check number. |
currentStatus
Alpha12
Readonly
|
The current status of the ACH transaction.
Valid value(s):
WAITING - transaction will be included in next batchPOST_DATED - transaction will be included in a future batchSUBMITTED - transaction has been submitted for processingACKNOWLEDGED - transaction has been accepted for processingFUNDED - money has been deposited into your accountDEDUCTION - money has been taken from your accountVOID - transaction was cancelled prior to submission for processingRETURNED - an exception occurred while processing transactionCORRECTION - transaction was automatically corrected during processing |
currentStatusDate
Date19
Readonly
|
The date the transaction entered the current processing status.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
currentReturnCode
Alpha4
|
The current return code for the ACH transaction, if applicable. |
currentReturnCodeDetail
Alphanumeric255
|
Explanation of the currentReturnCode .
|
transactionStatus
Alphanumeric8
Readonly
|
The status of the transaction request.
Valid value(s):
APPROVED - Transaction was successfully handled and has been, or will be, submitted to the vendor for processing. See ProcessingStatuses for current processing status.ERROR - An error has occurred and the transaction failed processing. These transactions can typically be resubmitted once the issues have been corrected. See RequestErrorList for a list of errors. |
processingStatuses
ListN/A
Readonly
|
A list of ProcessingStatus objects.
|
batchId
NumericString10
Readonly
|
The batch the transaction was assigned to. If the transaction still has a status of WAITING , this value will be blank.
|
batchTransmit
Date19
Readonly
|
The date when the transaction was added to a batch. If the transaction still has a status of WAITING , this value will be blank.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
settlementId
Alphanumeric20
Readonly
|
An identifier by which the transaction was settled, and a debit or credit was done into your bank account. This value will be provided when the transaction status is FUNDED or DEDUCTION .
|
roundTripNVPS
ListN/A
|
List of RoundTripNVP objects. These are Name/Value pass-through values.
Constraint(s): Max of 10
RoundTripNVP objects per request.
|
requestErrorList
ListN/A
Readonly
|
A list of RequestError objects containing errors.
Constraint(s): Only returned when errors occur.
|
accountDirective
Alphanumeric10
Required
|
The account directive to use for processing the payment.
Format: XXX-X
|
transactionType
Alpha5
|
The types of Transactions that are allowed are:
Valid value(s):
DEBIT CREDIT |
allowDuplicate
BooleanN/A
|
By default the system will look for and block duplicate transactions. If a duplicate transaction is intended, setting this value to true will allow processing of the duplicate transaction.
|
scheduleId
NumericString10
|
The id for the schedule that the payment was processed for. Constraint(s): Only used for DEBIT transactions.
|
locationId
NumericString10
|
The id for the Location that the payment was processed for. |
hierarchyData
Object
Readonly
|
A HierarchyData object containing Location and Group data. This object is populated if a valid locationId is provided.
|
notificationEvent
String15
|
The type of notification event to send after the payment is processed. _PROCESSED or _FAILED will be appended to the provided type based on the result of the transaction.
If this field is not provided, no notificationEvent will be sent. example: CHECK is provided and the transaction processed successfully, a notificationEvent of CHECK_PROCESSED will be sent.
Valid value(s):
CARD CASH CHECK SCHEDULE_CARD SCHEDULE_CHECK |
postBackUrl
URL500
Conditional
|
A URL to POST when an AchTransaction is finished attempting to process.POSTed body will be json with at least these fields from the AchTransaction object:arrivalId , transactionId , paymentMethod , transactionStatus
Constraint(s): Must be a secure HTTPS URL
Required if postBackAuthHeader is provided
|
postBackAuthHeader
AlphaNumeric512
Conditional
|
An Authorization Header that will be provided when we POST to the provided postBackUrl .
Required if
postBackUrl is provided
|
-Ach ProcessingStatus
Attribute | Description |
status
Alpha12
|
The status of the ACH transaction
Valid value(s):
WAITING - transaction will be included in next batchPOST_DATED - transaction will be included in a future batchSUBMITTED - transaction has been submitted for processingACKNOWLEDGED - transaction has been accepted for processingFUNDED - money has been deposited into your accountDEDUCTION - money has been taken from your accountVOID - transaction was cancelled prior to submission for processingRETURNED - an exception occurred while processing transactionCORRECTION - transaction was automatically corrected during processing |
achReturnCode
Alpha4
|
The return code for the ACH transaction, if applicable. |
achReturnCodeDetail
Alphanumeric255
|
Explanation of the achReturnCode .
|
changeDate
Date19
|
Date and time this ACH status was recorded.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
-AchVoidTransaction
Attribute | Description |
emailAddress
Alphanumeric75
Conditional
|
The email address of the payer. Required if sendReceiptToEmailAddress is true.
|
sendReceiptToEmailAddress
BooleanN/A
Required
|
Specify if the service should send a transaction receipt to the payer email. This field is not stored in the database and will not be returned on GET requests.
|
customReceiptLabels
ObjectN/A
|
A Name/Value list of CustomReceiptLabels to show on the Receipt. If a label is sent, it must be accompanied by a value.
|
customReceiptText
Alphanumeric5000
|
Custom text to show on the Receipt. If not provided, the service will use the company default. This field is not stored in the database and will not be returned on GET requests.
|
customReceiptValues
ObjectN/A
|
A Name/Value list of CustomReceiptValues that specifies fields on a receipt to override.
|
requestErrorList
ListN/A
Readonly
|
A list of RequestError objects containing errors.
Constraint(s): Only returned when errors occur.
|
notificationEvent
String15
|
The type of notification event to send after the payment is processed. _PROCESSED or _FAILED will be appended to the provided type based on the result of the transaction.
If this field is not provided, no notificationEvent will be sent. example: CHECK is provided and the transaction processed successfully, a notificationEvent of CHECK_PROCESSED will be sent.
Valid value(s):
CARD CASH CHECK SCHEDULE_CARD SCHEDULE_CHECK |
postBackUrl
URL500
Conditional
|
A URL to POST when an AchTransaction is finished attempting to process.POSTed body will be json with at least these fields from the AchTransaction object:arrivalId , transactionId , paymentMethod , transactionStatus
Constraint(s): Must be a secure HTTPS URL
Required if postBackAuthHeader is provided
|
postBackAuthHeader
AlphaNumeric512
Conditional
|
An Authorization Header that will be provided when we POST to the provided postBackUrl .
Required if
postBackUrl is provided
|
Card Processing
-SALE Request
POST
a CardTransaction
to create and process a new Card Transaction
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/sales
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/cardtransactions/sales
Response
CardTransaction
object
-BULK SALE Request
POST
a TransactionBulk
to create and process a list of new Card Transactions
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/sales/bulk
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/cardtransactions/sales/bulk
Response
TransactionBulk
object
When the endpoint begins processing the transactions in the background (async), the HTTP Status
will be 202 ACCEPTED
-CREDIT Existing Request
POST
a CardTransaction
to credit a Card Transaction with the originalTransactionId
. When processing a CREDIT
transaction, the original cardToken
will always be used.
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/credits/{originalTransactionId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/cardtransactions/credits/{originalTransactionId}
Response
CardTransaction
object
-VOID Existing Request
POST
a CardVoidTransaction
to void a Card Transaction with the originalTransactionId
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/voids/{originalTransactionId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/cardtransactions/voids/{originalTransactionId}
Response
CardTransaction
object
-VERIFY Request
POST
a CardTransaction
to verify a Card
Test
URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/verify
Live
URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/cardtransactions/verify
Response
CardTransaction
object
-CardTransaction Object
Attribute | Description |
paymentMethod
Alpha5
Readonly
|
The payment method of the Transaction. For CardTransactions this value is CARD . Always present.
|
accountNumber
Alphanumeric45
Required
|
Account or reference number. This is often the customer account number from your system. |
firstName
Alphanumeric45
Required
|
The first name of the payer. |
lastName
Alphanumeric45
Required
|
The last name of the payer. |
transactionType
Alpha8
Required
|
The type of transaction that was requested.
Valid value(s):
SALE
VOID
CREDIT
POSTAUTH
VERIFY
|
paymentAmount
NumericString11
Conditional
|
The payment amount of the transaction. For transactionType VERIFY , paymentAmount and feeAmount should be omitted. For All other transactionType Either a paymentAmount or feeAmount is required. Always required when processing with a Zero Cost Processing accountDirective .
|
feeAmount
NumericString11
Conditional
|
The fee amount of the transaction. For transactionType VERIFY , paymentAmount and feeAmount should be omitted. For all other transactionType Either a feeAmount or paymentAmount is required
|
creditAmount
NumericString11
Readonly
|
The total outgoing payment amount for the transaction record. |
debitAmount
NumericString11
Readonly
|
The total amount that is expected to be delivered from the payer’s account into the merchant’s account for the transaction. |
netAmount
NumericString11
Readonly
|
The overall sum of the debit and credit for the transaction; if this is a credit and a negative dollar amount, a "-" will display with the amount, e.g. "-12.00" |
transactionOrigin
Alpha3
Required
|
The origin of the transaction. To process a swiped card transaction, this should be set to SCN . Otherwise, this should be set to EXT .NOTE: There are other possible values. Please contact our Customer Success team to learn more. |
accountDirective
Alphanumeric10
Required
|
The method of payment to use for processing.
Format: XXX-X
|
cardToken
Alphanumeric16
Conditional
|
The card token that represents the card to be used for processing this transaction. This is required unless processing a swipe transaction with magStripeData , or when processing a CREDIT transaction. This value must not be supplied for a CREDIT transaction.NOTE: This can be generated from the TokenizationService |
isReusable
BooleanN/A
|
Indicates whether the cardToken has been authorized for reuse. If false, this token may only be used for a single transaction.Default value: true
|
expirationMonth
Numeric2
|
The expiration month of the credit card to be used for processing. If this is not a swiped transaction with magStripeData , and this field is not included, the expiration date from the original creation of the cardToken will be used.
Format: MM
|
expirationYear
Numeric4
|
The expiration year of the credit card to be used for processing. If this is not a swiped transaction with magStripeData , and this field is not included, the expiration date from the original creation of the cardToken will be used.
Format: YYYY
|
securityCode
Numeric4
|
The security code or cvv2 of the credit card to be used for processing. This field is not returned. |
postAuthCode
Alphanumeric9
Conditional
|
The postAuth code, acquired from the vendor, to be used for processing this transaction. This is required for POSTAUTH transactions, and will be ignored otherwise.
|
canRetryDecline
Boolean5
|
Option to specify if a transactionStatus of DECLINED can attempt to retry tomorrow. Only some DECLINED reasons will retry such as "Insufficient Funds", but others like "Fraud account" will not be retried.
If a CardTransaction can be retried, a new CardTransaction will be created with a transactionStatus of POST_DATED and a dateScheduled of tomorrow. The post back body sent to the postBackUrl will include the retryArrivalId which is the arrivalId for the new POST_DATED CardTransaction .
There can be up to three total attempts which are the original plus two additional retry attempts if needed. |
dialog
AlphaNumeric5000
Conditional
|
It may be necessary to store the exact dialog that a user acknowledged when creating a payment, for reporting or auditing purposes. When a value is provided, the dialog is stored with the transaction and a dialogId is returned. Integrators can retrieve a transaction's dialog at a later point in time with the Search Dialog Endpoint using the dialogId .
Some payment gateway processors, such as Pay N Seconds , require this. For Pay N Seconds the dialog text comes from the Dialog Templates .
|
dialogId
NumericString20
Readonly
|
This value is generated when passing in a dialog . Use the Search Dialog Endpoint to retrieve the dialog
|
magStripeData
AlphanumericN/A
Conditional
|
The encrypted mag-stripe data for a swiped card transaction. This is required instead of the cardToken to process a swiped card. This value must not be supplied for a CREDIT transaction. This field is not returned.
|
streetAddressOne
Alphanumeric80
|
The first line of the address. |
streetAddressTwo
Alphanumeric45
|
The second line of the address. |
city
Alphanumeric45
|
The city associated with the transaction. |
state
Alpha2
Conditional
|
The abbreviation of the state. Some payment gateway processors require this. |
zip
NumericString5
|
The zip code associated with the transaction. |
zipPlusFour
NumericString4
|
The four digit extension of the zip code. |
country
Alpha2
|
The abbreviation of the country. |
memo
Alphanumeric50
|
Custom memo field. |
phoneNumber
NumericString10
|
An un-formatted phone number. |
phoneNumberType
NumericString10
|
The type of phone number, if known. If not submitted as part of the original payment, HOME will be assumed.
Valid value(s):
CELL
HOME
WORK
|
emailAddress
Alphanumeric75
Conditional
|
The email address of the payer. Required if sendReceiptToEmailAddress is true.
|
sendReceiptToEmailAddress
BooleanN/A
Required
|
Specify if the service should send a transaction receipt to the payer email. This field is not stored in the database and will not be returned on GET requests.
|
customReceiptLabels
ObjectN/A
|
A Name/Value list of CustomReceiptLabels to show on the Receipt. If a label is sent, it must be accompanied by a value.
|
customReceiptText
Alphanumeric5000
|
Custom text to show on the Receipt. If not provided, the service will use the company default. This field is not stored in the database and will not be returned on GET requests.
|
customReceiptValues
ObjectN/A
|
A Name/Value list of CustomReceiptValues that specifies fields on a receipt to override.
|
flowId
NumericString20
|
The related Flow transaction (often a signature). See Flow Service. |
roundTripNVPS
ListN/A
|
List of RoundTripNVP objects. These are Name/Value pass-through values.
Constraint(s): Max of 10
RoundTripNVP objects per request.
|
allowDuplicate
BooleanN/A
|
By default, the system will look for and block duplicate transactions. If a duplicate transaction is intentional and intended, setting this to true will allow processing of the duplicate transaction.
|
arrivalId
NumericString20
Readonly
|
The arrival id of the transaction. Always present. |
transactionId
NumericString20
Readonly
|
The id of the transaction. Only present when transactionStatus is APPROVED . This will be used as the originalTransactionId when processing a CREDIT or VOID request.
|
relatedId
NumericString20
Readonly
|
The id of the related transaction. When the transaction transactionType is VOID or CREDIT , this value will be the transactionId of the original sale transaction. It will be blank in all other scenarios.
|
bulkId
NumericString10
Readonly
|
The id of the Bulk processing request if the transaction was processed using the BULK Sale Endpoint .
|
uniqueRequestId
Alphanumeric50
|
An optional id provided for the transaction. This value will be used as an additional mechanism for verifying against duplicate transactions. When a duplicate uniqueRequestId is found, the requestErrorList will contain an apiFieldNameList with the related arrivalId . If the original transaction was APPROVED this will also include the transactionId . These ids can be used to GET the original transaction. This feature is not supported when VOIDing a transaction.
|
transactionAmount
NumericString11
Readonly
|
The total amount of the transaction. |
dateCreated
Date19
Readonly
|
The date the transaction was received.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
dateScheduled
Date10
|
The date the transaction is scheduled to be processed. This date must be today or later.
When provided, the transactionType must be SALE . While this date is in the future, the transactionStatus will be POST_DATED . When the transaction processes, the transactionStatus will update based on the results of the processing attempt.
Format: ISO-8601 (YYYY-MM-DD)
|
dateProcessed
Date19
Readonly
|
The date the transaction was processed.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
transactionDate
Date19
Readonly
|
The date the transaction was processed. Alias for dateProcessed .
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
cardType
Alpha50
Readonly
|
The type of card used for the transaction. Only present for transactions with a transactionStatus of APPROVED .
|
cardNumberLastFour
NumericString4
Readonly
|
The last four digits of the card number. |
transactionStatus
Alphanumeric8
Readonly
|
The status of the transaction request.
Valid value(s):
APPROVED - Transaction was processed successfully.POST_DATED - Temporary status while a Card or PayPal Transaction has a future dateScheduled .ERROR - An error has occurred and the transaction failed processing. These transactions can typically be resubmitted once the issues have been corrected. See RequestErrorList for a list of errors.DECLINED - The transaction was sent to the vendor, but the vendor declined the transaction. These transactions will typically not be accepted regardless of how many times they are retried. See RequestErrorList for a list of errors. |
authorizationCode
AlphanumericN/A
Readonly
|
An authorization code may be provided by the processing vendor for a successfully processed transaction. |
avsCode
Alpha3
Readonly
|
The address verification result code as returned from the vendor. |
avsDescription
AlphaN/A
Readonly
|
The address verification result description as returned from the vendor. |
binType
Alpha6
Readonly
|
Specifies if the card used was a DEBIT or CREDIT type. This value will only be present for some USAePay SALE transactions when doing a GET or search starting Jan 1st, 2023, this is not available with the initial response data.
|
securityCodeResult
Alpha1
Readonly
|
Result of the CVV2/CVC2/CID verification system.
Valid value(s):
M - MatchN - No matchP - Not processedS - Should be on card but not so indicatedU - Issuer not certifiedX - No response from association(blank) - No CVV2/CVC data available for transaction
|
hasSecurityCode
BooleanN/A
Readonly
|
Was the security code provided in the original transaction request. |
hasMagStripData
BooleanN/A
Readonly
|
Was the cardMagStripData provided in the original transaction request. |
requestErrorList
ListN/A
Readonly
|
A list of RequestError objects containing errors.
Constraint(s): Only returned when errors occur.
|
scheduleId
NumericString10
|
The id for the schedule that the payment was processed for. Constraint(s): Only used for SALE transactions.
|
locationId
NumericString10
|
The id for the Location that the payment was processed for. |
hierarchyData
Object
Readonly
|
A HierarchyData object containing Location and Group data. This object is populated if a valid locationId is provided.
|
notificationEvent
String15
|
The type of notification event to send after the payment is processed. _PROCESSED or _FAILED will be appended to the provided type based on the result of the transaction.
If this field is not provided, no notificationEvent will be sent. example: CARD is provided and the transaction processed successfully, a notificationEvent of CARD_PROCESSED will be sent.
Valid value(s):
CARD CASH CHECK SCHEDULE_CARD SCHEDULE_CHECK |
postBackUrl
URL500
Conditional
|
A URL to POST when an CardTransaction is finished attempting to process.POSTed body will be json with at least these fields from the CardTransaction object:arrivalId , transactionId , paymentMethod , transactionStatus
Constraint(s): Must be a secure HTTPS URL
Required if postBackAuthHeader is provided
|
postBackAuthHeader
AlphaNumeric512
Conditional
|
An Authorization Header that will be provided when we POST to the provided postBackUrl .
Required if
postBackUrl is provided
|
-CardVoidTransaction
Attribute | Description |
memo
Alphanumeric50
|
Custom memo field. |
transactionOrigin
Alpha3
Required
|
The origin of the transaction. For a VOID transaction, this should always be set to EXT .NOTE: There are other possible values. Please contact our Customer Success team to learn more. |
transactionType
Alpha8
Required
|
The type of transaction that was requested.
Valid value(s):
VOID
|
roundTripNVPS
ListN/A
|
List of RoundTripNVP objects. These are Name/Value pass-through values.
Constraint(s): Max of 10
RoundTripNVP objects per request.
|
emailAddress
Alphanumeric75
Conditional
|
The email address of the payer. Required if sendReceiptToEmailAddress is true.
|
sendReceiptToEmailAddress
BooleanN/A
Required
|
Specify if the service should send a transaction receipt to the payer email. This field is not stored in the database and will not be returned on GET requests.
|
customReceiptLabels
ObjectN/A
|
A Name/Value list of CustomReceiptLabels to show on the Receipt. If a label is sent, it must be accompanied by a value.
|
customReceiptText
Alphanumeric5000
|
Custom text to show on the Receipt. If not provided, the service will use the company default. This field is not stored in the database and will not be returned on GET requests.
|
customReceiptValues
ObjectN/A
|
A Name/Value list of CustomReceiptValues that specifies fields on a receipt to override.
|
requestErrorList
ListN/A
Readonly
|
A list of RequestError objects containing errors.
Constraint(s): Only returned when errors occur.
|
notificationEvent
String15
|
The type of notification event to send after the payment is processed. _PROCESSED or _FAILED will be appended to the provided type based on the result of the transaction.
If this field is not provided, no notificationEvent will be sent. example: CARD is provided and the transaction processed successfully, a notificationEvent of CARD_PROCESSED will be sent.
Valid value(s):
CARD CASH CHECK SCHEDULE_CARD SCHEDULE_CHECK |
postBackUrl
URL500
Conditional
|
A URL to POST when an CardTransaction is finished attempting to process.POSTed body will be json with at least these fields from the CardTransaction object:arrivalId , transactionId , paymentMethod , transactionStatus
Constraint(s): Must be a secure HTTPS URL
Required if postBackAuthHeader is provided
|
postBackAuthHeader
AlphaNumeric512
Conditional
|
An Authorization Header that will be provided when we POST to the provided postBackUrl .
Required if
postBackUrl is provided
|
Cash Processing
-SALE Request
POST
a CashTransaction
to create a new Cash Transaction
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cashtransactions/sales
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/cashtransactions/sales
Response
CashTransaction
object
-VOID Existing Request
POST
a CashVoidTransaction
to void a Cash Transaction with the originalTransactionId
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cashtransactions/voids/{originalTransactionId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/cashtransactions/voids/{originalTransactionId}
Response
CashTransaction
object
-CashTransaction Object
Attribute | Description |
paymentMethod
Alpha5
Readonly
|
The payment method of the Transaction. For CashTransactions this value is CASH . Always present.
|
accountNumber
Alphanumeric45
Required
|
Account or reference number. This is often the customer account number from your system. |
firstName
Alphanumeric45
Required
|
The first name of the payer. |
lastName
Alphanumeric45
Required
|
The last name of the payer. |
transactionType
Alpha8
Required
|
The type of transaction that was requested.
Valid value(s):
SALE
VOID
|
paymentAmount
NumericString11
Conditional
|
The payment amount of the transaction. Either a paymentAmount or feeAmount is required
|
feeAmount
NumericString11
Conditional
|
The fee amount of the transaction. Either a feeAmount or paymentAmount is required
|
creditAmount
NumericString11
Readonly
|
The total outgoing payment amount for the transaction record. |
debitAmount
NumericString11
Readonly
|
The total amount that is expected to be delivered from the payer’s account into the merchant’s account for the transaction. |
netAmount
NumericString11
Readonly
|
The overall sum of the debit and credit for the transaction; if this is a credit and a negative dollar amount, a "-" will display with the amount, e.g. "-12.00" |
transactionOrigin
Alpha3
Required
|
The origin of the transaction. This should be set to EXT .NOTE: There are other possible values. Please contact our Customer Success team to learn more. |
accountDirective
Alphanumeric10
Required
|
The method of payment to use for processing.
Format: XXX-X
|
streetAddressOne
Alphanumeric80
|
The first line of the address. |
streetAddressTwo
Alphanumeric45
|
The second line of the address. |
city
Alphanumeric45
|
The city associated with the transaction. |
state
Alpha2
|
The abbreviation of the state. |
zip
NumericString5
Conditional
|
The zip code associated with the transaction. Some payment gateway processors require this. |
zipPlusFour
NumericString4
|
The four digit extension of the zip code. |
country
Alpha2
|
The abbreviation of the country. |
memo
Alphanumeric50
|
Custom memo field. |
phoneNumber
NumericString10
|
An un-formatted phone number. |
phoneNumberType
NumericString10
|
The type of phone number, if known. If not submitted as part of the original payment, HOME will be assumed.
Valid value(s):
CELL
HOME
WORK
|
emailAddress
Alphanumeric75
Conditional
|
The email address of the payer. Required if sendReceiptToEmailAddress is true.
|
sendReceiptToEmailAddress
BooleanN/A
Required
|
Specify if the service should send a transaction receipt to the payer email. This field is not stored in the database and will not be returned on GET requests.
|
customReceiptLabels
ObjectN/A
|
A Name/Value list of CustomReceiptLabels to show on the Receipt. If a label is sent, it must be accompanied by a value.
|
customReceiptText
Alphanumeric5000
|
Custom text to show on the Receipt. If not provided, the service will use the company default. This field is not stored in the database and will not be returned on GET requests.
|
customReceiptValues
ObjectN/A
|
A Name/Value list of CustomReceiptValues that specifies fields on a receipt to override.
|
flowId
NumericString20
|
The related Flow transaction (often a signature). See Flow Service. |
roundTripNVPS
ListN/A
|
List of RoundTripNVP objects. These are Name/Value pass-through values.
Constraint(s): Max of 10
RoundTripNVP objects per request.
|
allowDuplicate
BooleanN/A
|
By default, the system will look for and block duplicate transactions. If a duplicate transaction is intentional and intended, setting this to true will allow processing of the duplicate transaction.
|
arrivalId
NumericString20
Readonly
|
The arrival id of the transaction. Always present. |
transactionId
NumericString20
Readonly
|
The id of the transaction. Only present when transactionStatus is APPROVED . This will be used as the originalTransactionId when processing a VOID request.
|
relatedId
NumericString20
Readonly
|
The id of the related transaction. When the transaction transactionType is VOID , this value will be the transactionId of the original sale transaction. It will be blank in all other scenarios.
|
uniqueRequestId
Alphanumeric50
|
An optional id provided for the transaction. This value will be used as an additional mechanism for verifying against duplicate transactions. When a duplicate uniqueRequestId is found, the requestErrorList will contain an apiFieldNameList with the related arrivalId . If the original transaction was APPROVED this will also include the transactionId . These ids can be used to GET the original transaction. This feature is not supported when VOIDing a transaction.
|
transactionAmount
NumericString11
Readonly
|
The total amount of the transaction. |
dateCreated
Date19
Readonly
|
The date the transaction was received.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
dateProcessed
Date19
Readonly
|
The date the transaction was processed.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
transactionDate
Date19
Readonly
|
The date the transaction was processed. Alias for dateProcessed .
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
transactionStatus
Alphanumeric8
Readonly
|
The status of the transaction request.
Valid value(s):
APPROVED - Transaction was processed successfully.ERROR - An error has occurred and the transaction failed processing. These transactions can typically be resubmitted once the issues have been corrected. See RequestErrorList for a list of errors. |
requestErrorList
ListN/A
Readonly
|
A list of RequestError objects containing errors.
Constraint(s): Only returned when errors occur.
|
scheduleId
NumericString10
|
The id for the schedule that the payment was processed for. Constraint(s): Only used for SALE transactions.
|
locationId
NumericString10
|
The id for the Location that the payment was processed for. |
hierarchyData
Object
Readonly
|
A HierarchyData object containing Location and Group data. This object is populated if a valid locationId is provided.
|
notificationEvent
String15
|
The type of notification event to send after the payment is processed. _PROCESSED or _FAILED will be appended to the provided type based on the result of the transaction.
If this field is not provided, no notificationEvent will be sent. example: CARD is provided and the transaction processed successfully, a notificationEvent of CARD_PROCESSED will be sent.
Valid value(s):
CARD CASH CHECK SCHEDULE_CARD SCHEDULE_CHECK |
postBackUrl
URL500
Conditional
|
A URL to POST when an CashTransaction is finished attempting to process.POSTed body will be json with at least these fields from the CashTransaction object:arrivalId , transactionId , paymentMethod , transactionStatus
Constraint(s): Must be a secure HTTPS URL
Required if postBackAuthHeader is provided
|
postBackAuthHeader
AlphaNumeric512
Conditional
|
An Authorization Header that will be provided when we POST to the provided postBackUrl .
Required if
postBackUrl is provided
|
-CashVoidTransaction
Attribute | Description |
memo
Alphanumeric50
|
Custom memo field. |
transactionOrigin
Alpha3
Required
|
The origin of the transaction. This should be set to EXT .NOTE: There are other possible values. Please contact our Customer Success team to learn more. |
transactionType
Alpha8
Required
|
The type of transaction that was requested.
Valid value(s):
VOID
|
roundTripNVPS
ListN/A
|
List of RoundTripNVP objects. These are Name/Value pass-through values.
Constraint(s): Max of 10
RoundTripNVP objects per request.
|
emailAddress
Alphanumeric75
Conditional
|
The email address of the payer. Required if sendReceiptToEmailAddress is true.
|
sendReceiptToEmailAddress
BooleanN/A
Required
|
Specify if the service should send a transaction receipt to the payer email. This field is not stored in the database and will not be returned on GET requests.
|
customReceiptLabels
ObjectN/A
|
A Name/Value list of CustomReceiptLabels to show on the Receipt. If a label is sent, it must be accompanied by a value.
|
customReceiptText
Alphanumeric5000
|
Custom text to show on the Receipt. If not provided, the service will use the company default. This field is not stored in the database and will not be returned on GET requests.
|
customReceiptValues
ObjectN/A
|
A Name/Value list of CustomReceiptValues that specifies fields on a receipt to override.
|
requestErrorList
ListN/A
Readonly
|
A list of RequestError objects containing errors.
Constraint(s): Only returned when errors occur.
|
notificationEvent
String15
|
The type of notification event to send after the payment is processed. _PROCESSED or _FAILED will be appended to the provided type based on the result of the transaction.
If this field is not provided, no notificationEvent will be sent. example: CARD is provided and the transaction processed successfully, a notificationEvent of CARD_PROCESSED will be sent.
Valid value(s):
CARD CASH CHECK SCHEDULE_CARD SCHEDULE_CHECK |
postBackUrl
URL500
Conditional
|
A URL to POST when an CashTransaction is finished attempting to process.POSTed body will be json with at least these fields from the CashTransaction object:arrivalId , transactionId , paymentMethod , transactionStatus
Constraint(s): Must be a secure HTTPS URL
Required if postBackAuthHeader is provided
|
postBackAuthHeader
AlphaNumeric512
Conditional
|
An Authorization Header that will be provided when we POST to the provided postBackUrl .
Required if
postBackUrl is provided
|
PayPal Processing
-SALE Request
POST
a PayPalTransaction
to create and process a new PayPal Transaction
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/sales
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/sales
Response
PayPalTransaction
object
-CREDIT Existing Request
POST
a PayPalTransaction
to credit a PayPalTransaction Transaction with the originalTransactionId
. When processing a CREDIT
transaction, the original vaultId
will always be used.
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/credits/{originalTransactionId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/credits/{originalTransactionId}
Response
PayPalTransaction
object
-PayPalTransaction Object
Attribute | Description |
paymentMethod
Alpha5
Readonly
|
The payment method of the Transaction. For PayPalTransaction this value is PAYPAL . Always present.
|
accountNumber
Alphanumeric45
Required
|
Account or reference number. This is often the customer account number from your system. |
firstName
Alphanumeric45
Required
|
The first name of the payer. |
lastName
Alphanumeric45
Required
|
The last name of the payer. |
transactionType
Alpha8
Required
|
The type of transaction that was requested.
Valid value(s):
SALE
CREDIT
|
paymentAmount
NumericString11
Conditional
|
The payment amount of the transaction. Either a feeAmount or paymentAmount is required
|
feeAmount
NumericString11
Conditional
|
The fee amount of the transaction. Either a feeAmount or paymentAmount is required
|
creditAmount
NumericString11
Readonly
|
The total outgoing payment amount for the transaction record. |
debitAmount
NumericString11
Readonly
|
The total amount that is expected to be delivered from the payer’s account into the merchant’s account for the transaction. |
netAmount
NumericString11
Readonly
|
The overall sum of the debit and credit for the transaction; if this is a credit and a negative dollar amount, a "-" will display with the amount, e.g. "-12.00" |
transactionOrigin
Alpha3
Required
|
The origin of the transaction. This should be set to EXT .NOTE: There are other possible values. Please contact our Customer Success team to learn more. |
accountDirective
Alphanumeric10
Required
|
The method of payment to use for processing.
Format: XXX-X
|
vaultId
Alphanumeric16
Required
|
Reference to the PayPal payment information to be used for processing this transaction.
NOTE: This can be generated from the PayPal Vault endpoint |
streetAddressOne
Alphanumeric80
|
The first line of the address. |
streetAddressTwo
Alphanumeric45
|
The second line of the address. |
city
Alphanumeric45
|
The city associated with the transaction. |
state
Alpha2
Conditional
|
The abbreviation of the state. Some payment gateway processors require this. |
zip
NumericString5
|
The zip code associated with the transaction. |
zipPlusFour
NumericString4
|
The four digit extension of the zip code. |
country
Alpha2
|
The abbreviation of the country. |
memo
Alphanumeric50
|
Custom memo field. |
phoneNumber
NumericString10
|
An un-formatted phone number. |
phoneNumberType
NumericString10
|
The type of phone number, if known. If not submitted as part of the original payment, HOME will be assumed.
Valid value(s):
CELL
HOME
WORK
|
emailAddress
Alphanumeric75
Conditional
|
The email address of the payer. Required if sendReceiptToEmailAddress is true.
|
sendReceiptToEmailAddress
BooleanN/A
Required
|
Specify if the service should send a transaction receipt to the payer email. This field is not stored in the database and will not be returned on GET requests.
|
customReceiptLabels
ObjectN/A
|
A Name/Value list of CustomReceiptLabels to show on the Receipt. If a label is sent, it must be accompanied by a value.
|
customReceiptText
Alphanumeric5000
|
Custom text to show on the Receipt. If not provided, the service will use the company default. This field is not stored in the database and will not be returned on GET requests.
|
customReceiptValues
ObjectN/A
|
A Name/Value list of CustomReceiptValues that specifies fields on a receipt to override.
|
flowId
NumericString20
|
The related Flow transaction (often a signature). See Flow Service. |
roundTripNVPS
ListN/A
|
List of RoundTripNVP objects. These are Name/Value pass-through values.
Constraint(s): Max of 10
RoundTripNVP objects per request.
|
allowDuplicate
BooleanN/A
|
By default, the system will look for and block duplicate transactions. If a duplicate transaction is intentional and intended, setting this to true will allow processing of the duplicate transaction.
|
arrivalId
NumericString20
Readonly
|
The arrival id of the transaction. Always present. |
transactionId
NumericString20
Readonly
|
The id of the transaction. Only present when transactionStatus is APPROVED . This will be used as the originalTransactionId when processing a CREDIT request.
|
relatedId
NumericString20
Readonly
|
The id of the related transaction. When the transaction transactionType is CREDIT , this value will be the transactionId of the original sale transaction. It will be blank in all other scenarios.
|
uniqueRequestId
Alphanumeric50
|
An optional id provided for the transaction. This value will be used as an additional mechanism for verifying against duplicate transactions. When a duplicate uniqueRequestId is found, the requestErrorList will contain an apiFieldNameList with the related arrivalId . If the original transaction was APPROVED this will also include the transactionId . These ids can be used to GET the original transaction. This feature is not supported when VOIDing a transaction.
|
transactionAmount
NumericString11
Readonly
|
The total amount of the transaction. |
dateCreated
Date19
Readonly
|
The date the transaction was received.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
dateScheduled
Date10
|
The date the transaction is scheduled to be processed. This date must be today or later.
When provided, the transactionType must be SALE . While this date is in the future, the transactionStatus will be POST_DATED . When the transaction processes, the transactionStatus will update based on the results of the processing attempt.
Format: ISO-8601 (YYYY-MM-DD)
|
dateProcessed
Date19
Readonly
|
The date the transaction was processed.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
transactionDate
Date19
Readonly
|
The date the transaction was processed. Alias for dateProcessed .
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
transactionStatus
Alphanumeric8
Readonly
|
The status of the transaction request.
Valid value(s):
APPROVED - Transaction was processed successfully.POST_DATED - Temporary status while a Card or PayPal Transaction has a future dateScheduled .ERROR - An error has occurred and the transaction failed processing. These transactions can typically be resubmitted once the issues have been corrected. See RequestErrorList for a list of errors.DECLINED - The transaction was sent to the vendor, but the vendor declined the transaction. These transactions will typically not be accepted regardless of how many times they are retried. See RequestErrorList for a list of errors. |
requestErrorList
ListN/A
Readonly
|
A list of RequestError objects containing errors.
Constraint(s): Only returned when errors occur.
|
scheduleId
NumericString10
|
The id for the schedule that the payment was processed for. Constraint(s): Only used for SALE transactions.
|
locationId
NumericString10
|
The id for the Location that the payment was processed for. |
hierarchyData
Object
Readonly
|
A HierarchyData object containing Location and Group data. This object is populated if a valid locationId is provided.
|
notificationEvent
String15
|
The type of notification event to send after the payment is processed. _PROCESSED or _FAILED will be appended to the provided type based on the result of the transaction.
If this field is not provided, no notificationEvent will be sent. example: CARD is provided and the transaction processed successfully, a notificationEvent of CARD_PROCESSED will be sent.
Valid value(s):
CARD CASH CHECK PAYPAL SCHEDULE_CARD SCHEDULE_CHECK |
postBackUrl
URL500
Conditional
|
A URL to POST when an CardTransaction is finished attempting to process.POSTed body will be json with at least these fields from the CardTransaction object:arrivalId , transactionId , paymentMethod , transactionStatus
Constraint(s): Must be a secure HTTPS URL
Required if postBackAuthHeader is provided
|
postBackAuthHeader
AlphaNumeric512
Conditional
|
An Authorization Header that will be provided when we POST to the provided postBackUrl .
Required if
postBackUrl is provided
|
TransactionBulk Object
Attribute | Description |
bulkId
NumericString10
Readonly
|
The auto-generated ID for the bulk batch of Transactions. |
status
Alpha20
Readonly
|
Status of the Bulk Process
Valid value(s):
|
dateStart
Date19
Readonly
|
Date the processing started.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
dateEnd
Date19
Readonly
|
Date the processing ended.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
elapsedMs
NumericN/A
Readonly
|
Number of milliseconds the processing took to finish. |
username
Alphanumeric75
|
The user that is performing the bulk. |
description
Alphanumeric100
|
Bulk description. |
transactionCountRequest
NumericN/A
Readonly
|
Number of transactions requested to process. |
transactionCountSuccess
NumericN/A
Readonly
|
Number of transactions successfully processed. |
transactionCountFail
NumericN/A
Readonly
|
Number of transactions which failed to process. |
postBackUrl
URL500
|
A URL to POST when a bulk process is COMPLETED .
Constraint(s): Must be a secure HTTPS URL
POSTed body will be json with at least these fields from the TransactionBulk object:bulkId , status , dateStart , dateEnd description , transactionCountRequest , transactionCountSuccess To retrieve the transactions use the bulkIdList parameter on the Transaction Search Endpoint
|
postBackAuthHeader
AlphaNumeric512
Conditional
|
An Authorization Header that will be provided when we POST to the provided postBackUrl .Required if postBackUrl is provided.
|
cardTransactionList
List5000
Conditional
|
A list of CardTransaction objects to process. Required if processing Bulk Card Sales. This list is not returned because the transactions will be processed async by the service. To retrieve the transactions use the bulkIdList parameter on the Transaction Search Endpoint .
|
achTransactionList
List5000
Conditional
|
A list of AchTransaction objects to process. Required if processing Bulk Ach Debits This list is not returned because the transactions will be processed async by the service. To retrieve the transactions use the bulkIdList parameter on the Transaction Search Endpoint .
|
requestErrorList
ListN/A
Readonly
|
A list of RequestError objects containing errorsConstraint(s): Only returned if status is ERROR
|
RoundTripNVP
Attribute | Description |
rtName
Alphanumeric75
Required
|
The name of a round trip name value pair. |
rtValue
Alphanumeric75
Required
|
The value of a round trip name value pair. |
SearchRoundTripNVP
Attribute | Description |
rtName
Alphanumeric75
Required
|
The name of a round trip name value pair to filter a search by. Constraint(s): Each name must be unique
|
rtValueList
ListN/A
Required
|
A list of values of a round trip name value pair to filter a search by If the list contains a value of -1 , the results will also be filtered to include transactions that do not contain a RoundTripNVP with the specified nameIf the list contains a value of 0 , the results will also be filtered to include transactions that contain a RoundTripNVP whose value is null for the specified name. This functionality is designed for legacy signatures as the service now requires all RoundTripNVP objects to contain both a name and value.
Constraint(s): Each value must not exceed 75 characters
|
CustomReceiptLabels
Attribute | Description |
PAYMENT
Alphanumeric30
|
Default value: Payment .
|
FEE
Alphanumeric30
|
Default value: Fee .
|
TOTAL
Alphanumeric30
|
Default value: Total .
|
ACCOUNT_NUMBER
Alphanumeric30
|
Default value: Account Number .
|
MEMO
Alphanumeric30
|
Default value: Memo .
|
CHECK_NUMBER
Alphanumeric30
|
Default value: Check Number . Applies to AchTransactions .
|
BANK_ACCOUNT_TYPE
Alphanumeric30
|
Default value: Bank Account Type . Applies to AchTransactions .
|
DATE_SCHEDULED
Alphanumeric30
|
Default value: Date Scheduled .
|
CustomReceiptValues
Attribute | Description |
COMPANY_NAME
Alphanumeric50
|
A custom company name that will appear on receipts in place of the default name. |
HierarchyData
Attribute | Description |
locationId
NumericString
Readonly
|
The internal id for a Location that the payment was processed for |
customLocationId
AlphaNumeric
Readonly
|
A custom id for the Location |
locationName
AlphaNumeric
Readonly
|
The name of the Location |
groupId
NumericString
Readonly
|
The internal id for the Group that the Location is a member of (if applicable) |
customGroupId
AlphaNumeric
Readonly
|
A custom id for the Group |
groupName
AlphaNumeric
Readonly
|
The name of the Group |
Patch CardTransaction
PATCH
a CardTransaction
object to update an existing POST_DATED
or APPROVED
CardTransaction
for a specific arrivalId
.
Patch CardTransaction Notes
- For a
POST_DATED
CardTransaction
any writable field can be updated. - For an
APPROVED
CardTransaction
only theroundTripNVPS
can be updated. - To Cancel a
POST_DATED
CardTransaction
, append the URL with the param?cancelTransaction=true
- When cancelled, thetransactionStatus
will change toERROR
and therequestErrorList
will indicate the Transaction was manually cancelled.
Test URL:
https://transactiondemo.pdc4u.com/api/v1_0/cardtransactions/{arrivalId}
Live URL:
https://transaction.pdc4u.com/api/v1_0/cardtransactions/{arrivalId}
Response
The updated CardTransaction
. Below are notes for any field(s) with special handling:
Attribute | Description |
roundTripNVPS
ListN/A
|
List of RoundTripNVP objects. These are Name/Value pass-through values.Any RoundTripNVP with a new rtName will add to the existing list. Any RoundTripNVP with an rtName that matches an existing RoundTripNVP will save the updated rtValue .
Constraint(s): Max of 10
RoundTripNVP objects per request.
|
Patch PayPalTransaction
PATCH
a PayPalTransaction
object to update an existing POST_DATED
or APPROVED
PayPalTransaction
for a specific arrivalId
.
Patch PayPalTransaction Notes
- For a
POST_DATED
PayPalTransaction
any writable field can be updated. - For an
APPROVED
PayPalTransaction
only theroundTripNVPS
can be updated. - To Cancel a
POST_DATED
PayPalTransaction
, append the URL with the param?cancelTransaction=true
- When cancelled, thetransactionStatus
will change toERROR
and therequestErrorList
will indicate the Transaction was manually cancelled.
Test URL:
https://transactiondemo.pdc4u.com/api/v1_0/paypaltransactions/{arrivalId}
Live URL:
https://transaction.pdc4u.com/api/v1_0/paypaltransactions/{arrivalId}
Response
The updated PayPalTransaction
. Below are notes for any field(s) with special handling:
Attribute | Description |
roundTripNVPS
ListN/A
|
List of RoundTripNVP objects. These are Name/Value pass-through values.Any RoundTripNVP with a new rtName will add to the existing list. Any RoundTripNVP with an rtName that matches an existing RoundTripNVP will save the updated rtValue .
Constraint(s): Max of 10
RoundTripNVP objects per request.
|
Receipt
Request
POST
a Receipt
object to send a receipt
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/receipts
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/transactions/receipts
Response
A Receipt
object will be returned which contains the generated HTML. The service will only email the receipt if at least one valid recipient is provided. If there were validation or processing errors, this object will have a list of RequestError
objects.
Receipt
Attribute | Description |
transactionId
Numeric20
Required
|
The id of the Transaction to generate and/or send a receipt. |
emailTo
ListN/A
|
A list of TO email addresses. Each address can be up to 75 characters. |
emailCC
ListN/A
|
A list of CC email addresses. Each address can be up to 75 characters. |
emailBCC
ListN/A
|
A list of BCC email addresses. Each address can be up to 75 characters. |
customReceiptLabels
ObjectN/A
|
A Name/Value lists of CustomReceiptLabels to show on the Receipt. If a label is sent, it must be accompanied by a value.
|
customReceiptText
Alphanumeric5000
|
Custom text to show on the Receipt. If not provided, the service will use the company default. This value will not be stored or returned with any response. |
customReceiptValues
ObjectN/A
|
A Name/Value list of CustomReceiptValues that specifies fields on a receipt to override.
|
receiptHtml
AlphanumericN/A
|
Generated HTML for displaying the receipt. |
requestErrorList
ListN/A
Readonly
|
A list of RequestError objects containing errors.
Constraint(s): Only returned when errors occur.
|
Reporting
-Single Transaction
GET
a single AchTransaction
or CardTransaction
or CashTransaction
for a specific transactionId
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/{transactionId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/transactions/{transactionId}
Response
AchTransaction
or CardTransaction
or CashTransaction
object
-Related Transactions
GET
a list of related AchTransaction
or CardTransaction
or CashTransaction
objects for a specific transactionId
. Information about the requested transaction will be returned in the response along with any related transactions.
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/{transactionId}/relatedtransactions
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/transactions/{transactionId}/relatedtransactions
Response
List of related AchTransaction
or CardTransaction
or CashTransaction
objects
-Search Transactions
POST
TransactionSearchParameters
to get a transactionList
of AchTransaction
and/or CardTransaction
and/or CashTransaction
and/or PayPalTransaction
objects matching the TransactionSearchParameters
provided
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/search
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/transactions/search
Response
TransactionSearch
object with a transactionList
of AchTransaction
and/or CardTransaction
and/or CashTransaction
and/or PayPalTransaction
objects matching the TransactionSearchParameters
TransactionSearchParameters
Attribute | Description |
searchOptions
ObjectN/A
|
Options to provide related to the search. For example, use this to send a timeout and activate background (async) searching. See TransactionSearchOptions
|
transactionIdList
List - Alphanumeric20
|
List of Transaction IDs. NOTE: This option will ignore other search options. |
arrivalIdList
List - Alphanumeric20
|
List of Arrival IDs. NOTE: This option will ignore other search options. However, this is ignored if transactionIdList is also provided.
|
startDate
Date19
|
The starting date and time for the report range.
Format: URL Encoded ISO-8601 (YYYY-MM-dd HH:mm:ss)
Default: 6 Months Ago
|
endDate
Date19
|
The ending date and time for the report range.
Format: URL Encoded ISO-8601 (YYYY-MM-dd HH:mm:ss)
|
dateSearched
Alpha20
|
The date which startDate and endDate will apply.
Valid value(s):
Default:
CREATED |
firstName
Alphanumeric45
|
The first name of the account holder. |
lastName
Alphanumeric45
|
The last name of the account holder. |
lastFour
Numeric4
|
The last four numbers of the account holder's bank account number or credit card number. NOTE: This option will only return AchTransactions or CardTransactions
|
achHistoricalSummaryType
Alpha12
|
Search for AchTransactions based on TransactionType and historical ACH Status.
Valid value(s):
NOTE: This option will only return
AchTransactions and will ignore the search options achProcessingStatusList , transactionTypeList and dateSearched
|
achProcessingStatusList
List - Alpha12
|
Search for AchTransactions that have a specific currentStatus .
Valid value(s):
NOTE: This option will only return
AchTransactions
|
achBatchIdList
List - Numeric10
|
Search for AchTransactions that have a specific ACH Batch ID. Searching for a Batch ID of 0 (zero) will find AchTransactions without a Batch ID. NOTE: This option will ignore a provided date range unless it contains only 0 (zero) and will only return AchTransactions .
|
achSettlementIdList
List - AlphaNumeric20
|
Search for AchTransactions that have a specific ACH Settlement ID. NOTE: This option will ignore a provided date range and only return FUNDED or DEDUCTION AchTransactions .
|
paymentMethodList
List - Alpha5
|
List of Payment Methods.
Valid value(s):
Default: All
PaymentMethods |
transactionTypeList
List - Alpha8
|
A list of transaction types.
Valid value(s):
Default: All
NOTE: If the search includes TransactionTypes VOID , this will also search the AchTransaction currentStatus for VOID .
|
transactionStatusList
List - Alpha8
|
A list of transaction statuses.
Valid value(s):
Default:
APPROVED |
accountDirectiveList
List - Alphanumeric10
|
List of account directives used to process the payment Format: XXX-X
|
accountNumberList
List - Alphanumeric45
|
List of account numbers. |
memoList
List - Alphanumeric50
|
List of memos. |
emailList
List - Alphanumeric75
|
List of email addresses. |
bulkIdList
List - Numeric10
|
List of Bulk IDs to find transactions that were processed using a BULK Transaction Endpoint. |
groupIdList
List - Numeric10
|
List of Group IDs. Searching for a Group ID of 0 (zero) will find Transactions without a Group ID.
|
locationIdList
List - Numeric10
|
List of Location IDs. Searching for a Location ID of 0 (zero) will find Transactions without a Location ID.
|
scheduleIdList
List - Numeric10
|
List of Schedule IDs. |
transactionOriginList
List - Alphanumeric3
|
List of Transaction Origins. This will typically be EXT and/or SCN .NOTE: There are other possible values. Please contact our Customer Success team to learn more. |
flowIdList
List - NumericN/A
|
List of Flow IDs. If 0 (zero) is included in this list, the results will include transactions without a FlowId present. |
recordStart
Numeric20
|
The record count to start on.
Default: 0
|
recordCount
Numeric4
|
How many records to return.
Default: 2000
Maximum: 5000 NOTE: This recordCount limit is separate for APPROVED and DECLINED/ERROR Transactions . If the requested transactionStatusList contains a mix of APPROVED and DECLINED and/or ERROR , then the count of Transactions returned could be double the recordCount amount, up to an overall max of 10,000.
|
searchRoundTripNVPList
ListN/A
|
List of SearchRoundTripNVP objects.
|
locationId
Numeric10
|
Location ID. DEPRECATED: use locationIdList
|
scheduleId
Numeric10
|
Schedule ID. DEPRECATED: use scheduleIdList
|
accountNumber
Alphanumeric45
|
Account number. DEPRECATED: use accountNumberList
|
transactionOrigin
Alphanumeric3
|
The origin of the transaction. DEPRECATED: use transactionOriginList
|
employeeList
List - Alphanumeric75
|
List of employees. DEPRECATED: Use searchRoundTripNVPList with a rtName of "employee"
|
--Transaction Search Options
Attribute | Description |
timeoutMs
Numeric900000
|
The amount of time (in milliseconds) to wait for the search results before the search finishes in the background (async). Please allow a couple additional seconds for general overhead of the request before/after the actual searching. For example, providing a timeoutMs of 13 seconds may actually take 15 seconds for the request to respond.NOTE: If the search takes longer than the provided timeoutMs the HTTP Status will be 202 ACCEPTED
|
username
Alphanumeric75
|
The user that is performing the search. This is used as a reference and to help search for previously performed searches.
NOTE: Only used if a timeoutMs is provided.
|
description
Alphanumeric100
|
A description for the search for reference and to help search for previously performed searches.
NOTE: Only used if a timeoutMs is provided.
|
postBackUrl
URL500
|
A URL to POST when a search is COMPLETED .
Constraint(s): Must be a secure HTTPS URL
POSTed body will be json with at least these fields from the TransactionSearch object:reportId , status , description , transactionListCount The reportId can be used to GET the full transactionList from the GET TransactionSearch endpoint
NOTE: Only used if a timeoutMs is provided.
|
postBackAuthHeader
AlphaNumeric512
Conditional
|
An Authorization Header that will be provided when we POST to the provided postBackUrl .Required if postBackUrl is provided.
NOTE: Only used if a timeoutMs is provided.
|
timezone
AlphaN/A
|
Return transaction dates in this timezone.
Valid value(s): Timezone name
Examples:
|
exportFileType
AlphaN/A
Conditional
|
Option to have the search results exported to a file of the requested type. If provided, the exportColumnMap is required. To download the generated file use the Download Saved Report Endpoint .
Valid value(s):
Required if
exportColumnMap is provided.
NOTE: Only used if a timeoutMs is provided.
|
exportColumnMap
ObjectN/A
Conditional
|
Object used to specify which columns will be exported in the requested exportFileType . This is a set of key/value pairs where the key is the internal field name and the value will be used as the column header on the exported file. To see a list of possible field names refer to the AchTransaction and/or CardTransaction and/or CashTransaction and/or PayPalTransaction object definitions or use the Export Field List Endpoint . For fields that are lists (such as roundTripNVPS ) or nested objects (such as hierarchyData ) the column will be a JSON string. A single field may be extracted from a nested object by specifying it as {objectName}.{fieldName} , for example hierarchyData.locationName . For roundTripNVPS a specific rtName can be extracted when specified like roundTripNVPS.{rtName} , for example roundTripNVPS.employee .
Required if exportFileType is provided.
Both the Key and Value are required and the value must be 50 characters or fewer. NOTE: Only used if a timeoutMs is provided.
|
-Bulk Search
POST
TransactionBulkSearchParameters
to get a list of TransactionBulk
objects matching the TransactionBulkSearchParameters
provided
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/v1_0/transactions/bulk/search
Live URL:
https://transaction.pdc4u.com/TransactionService/v1_0/transactions/bulk/search
Response
List of TransactionBulk
objects that match the TransactionBulkSearchParameters
TransactionBulkSearchParameters
Attribute | Description |
dateStart
Date19
|
The starting date and time for the report range.
Format: URL Encoded ISO-8601 (YYYY-MM-dd HH:mm:ss)
|
dateEnd
Date19
|
The ending date and time for the report range.
Format: URL Encoded ISO-8601 (YYYY-MM-dd HH:mm:ss)
|
usernameList
List - Alphanumeric75
|
List of usernames provided with the TransactionBulk
|
descriptionList
List - Alphanumeric100
|
List of descriptions provided with the TransactionBulk
|
statusList
List - Alpha10
|
A list of transaction bulk statuses. Valid Values: See TransactionBulk status Default: All Statuses
|
recordStart
Numeric20
|
The record count to start on.
Default: 0
|
recordCount
Numeric4
|
How many records to return.
Default: 2000
Maximum: 5000
|
-Single Saved Report
GET
a single TransactionSearch
for a specific reportId
. You may include an optional recordStart
and/or a recordCount
parameter from the SavedSearchReportParameters
object as part of the url to further refine a saved report.
POST to regenerate a single TransactionSearch
for a specific reportId
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/savedreports/{reportId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/transactions/savedreports/{reportId}
Response
TransactionSearch
object
-Download Saved Report
GET a file for a specific reportId
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/savedreports/{reportId}/download
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/transactions/savedreports/{reportId}/download
Response
A "text/plain" file download for a COMPLETED
TransactionSearch
which requested an exportFileType
. If the TransactionSearch
did not request an exportFileType
or the status is not COMPLETED
, an HTTP 404
will be provided. The file will be available for up to 72 hours before the TransactionSearch
and file are PURGED
.
-Search Saved Reports
POST
SavedReportSearchParameters
to get a list of TransactionSearch
objects matching the SavedReportSearchParameters
provided
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/v1_0/transactions/savedreports/search
Live URL:
https://transaction.pdc4u.com/TransactionService/v1_0/transactions/savedreports/search
Response
List of TransactionSearch
objects that match the SavedReportSearchParameters
SavedReportSearchParameters
Attribute | Description |
reportIdList
List - Alphanumeric50
|
List of Report IDs to search for. NOTE: This option will ignore other search options. |
dateStart
Date19
|
The starting date and time for the report range.
Format: URL Encoded ISO-8601 (YYYY-MM-dd HH:mm:ss)
|
dateEnd
Date19
|
The ending date and time for the report range.
Format: URL Encoded ISO-8601 (YYYY-MM-dd HH:mm:ss)
|
usernameList
List - Alphanumeric75
|
List of usernames provided with the TransactionSearchOptions
|
descriptionList
List - Alphanumeric100
|
List of descriptions provided with the TransactionSearchOptions
|
statusList
List - Alpha10
|
A list of transaction search statuses. Valid Values: See TransactionSearch status Default: All Statuses
|
exportFileTypeList
List - AlphaN/A
|
List of file types provided with the TransactionSearchOptions
Valid value(s):
|
recordStart
Numeric20
|
The record count to start on.
Default: 0
|
recordCount
Numeric4
|
How many records to return.
Default: 2000
Maximum: 5000
|
-TransactionSearch Object
Attribute | Description |
reportId
AlphanumericN/A
Readonly
|
The id of the TransactionSearch.
The reportId can be used to GET the full transactionList from the GET TransactionSearch endpoint
NOTE: Only returned if the TransactionSearchOptions timeoutMs was provided.
|
status
Alpha10
Readonly
|
The status of the TransactionSearch.
Valid value(s):
NOTE: Only returned if the TransactionSearchOptions timeoutMs was provided.
|
description
Alphanumeric100
Readonly
|
The description of the TransactionSearch provided with the TransactionSearchOptions .
NOTE: Only returned if the TransactionSearchOptions timeoutMs and description was provided.
|
dateStart
Date19
Readonly
|
The date the TransactionSearch started.
Format: URL Encoded ISO-8601 (YYYY-MM-dd HH:mm:ss)
NOTE: Only returned if the TransactionSearchOptions timeoutMs was provided.
|
dateEnd
Date19
Readonly
|
The date the TransactionSearch ended.
Format: URL Encoded ISO-8601 (YYYY-MM-dd HH:mm:ss)
NOTE: Only returned if the TransactionSearchOptions timeoutMs was provided.
|
elapsedMs
NumericN/A
Readonly
|
The number of milliseconds the TransactionSearch took to finish.
NOTE: Only returned if the TransactionSearchOptions timeoutMs was provided.
|
exportFileType
AlphaN/A
Readonly
|
Requested File Type. To download the generated file use the Download Saved Report Endpoint .
Valid value(s):
|
exportColumnMap
ObjectN/A
Readonly
|
Requested columns for the exportFileType
|
requestErrorList
ListN/A
Readonly
|
A list of RequestError objects containing errorsNOTE: Only returned if status is ERROR
|
transactionListCount
NumericN/A
Readonly
|
The number of transactions contained in the transactionList .
|
transactionList
ListN/A
Readonly
|
A list of AchTransaction and/or CardTransaction and/or CashTransaction and/or PayPalTransaction objects matching the TransactionSearchParameters
|
-Export Field List
GET ExportFieldList
for Field Names to be used with the exportColumnMap
parameter of the TransactionSearchOptions
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/v1_0/transactions/savedreports/fieldnamelist
Live URL:
https://transaction.pdc4u.com/TransactionService/v1_0/transactions/savedreports/fieldnamelist
Response
ExportFieldList
object
ExportFieldList
Attribute | Description |
fieldNameList
List - Alphanumeric
|
All possible field names for AchTransaction , CardTransaction , CashTransaction , and PayPalTransaction objects
|
transactionFieldNameList
List - Alphanumeric
|
Field names shared across AchTransaction , CardTransaction , CashTransaction , and PayPalTransaction objects
|
achTransactionFieldNameList
List - Alphanumeric
|
Specific field names for AchTransaction
|
cardTransactionFieldNameList
List - Alphanumeric
|
Specific field names for CardTransaction
|
cashTransactionFieldNameList
List - Alphanumeric
|
Specific field names for CashTransaction
|
paypalTransactionFieldNameList
List - Alphanumeric
|
Specific field names for PayPalTransaction
|
-Summary Totals
POST
TransactionSummarySearchParameters
for a TransactionSummarySearch
object which contains Transaction Summary Totals.
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/v1_0/transactions/summary
Live URL:
https://transaction.pdc4u.com/TransactionService/v1_0/transactions/summary
Response
TransactionSummarySearch
object
TransactionSummarySearchParameters
Attribute | Description |
startDate
Date19
Required
|
The starting date and time for the report range.
Format: URL Encoded ISO-8601 (YYYY-MM-dd HH:mm:ss)
|
endDate
Date19
|
The ending date and time for the report range.
Format: URL Encoded ISO-8601 (YYYY-MM-dd HH:mm:ss)
|
columnGroupList
List - Alpha
|
The fields to show and group the Transactions by. A field will show in the TransactionSummary object.
Valid value(s):
|
paymentMethodList
List - Alpha
|
List of payment methods.
Valid value(s):
Default: All
PaymentMethods |
transactionTypeList
List - Alpha
|
A list of transaction types.
Valid value(s):
Default: All
NOTE: If the search includes TransactionTypes VOID , this will also search the AchTransaction currentStatus for VOID .
|
cardTypeList
List - Alpha
|
A list of card types.
Valid value(s):
NOTE: Using this option will only return
CardTransactions
|
cardBinTypeList
List - Alpha
|
A list of card types.
Valid value(s):
NOTE: Using this option will only return
CardTransactions
|
accountDirectiveList
List - Alphanumeric10
|
List of account directives used to process the payment Format: XXX-X
|
groupIdList
List - Numeric10
|
List of Group IDs. Searching for a Group ID of 0 (zero) will find Transactions without a Group ID.
|
locationIdList
List - Numeric10
|
List of Location IDs. Searching for a Location ID of 0 (zero) will find Transactions without a Location ID.
|
transactionOriginList
List - Alphanumeric3
|
List of Transaction Origins. This will typically be EXT and/or SCN .NOTE: There are other possible values. Please contact our Customer Success team to learn more. |
searchRoundTripNVPList
List
|
List of SearchRoundTripNVP objects.
|
TransactionSummarySearch
Attribute | Description |
totalTransactionCount
Numeric
Readonly
|
Total Count for all Transactions matching the TransactionSummarySearchParameters
|
totalPaymentAmount
Numeric
Readonly
|
Total Payment Amount for all Transactions matching the TransactionSummarySearchParameters
|
totalFeeAmount
Numeric
Readonly
|
Total Fee Amount for all Transactions matching the TransactionSummarySearchParameters
|
transactionSummaryListSize
Numeric
Readonly
|
Size of the transactionSummaryList
|
transactionSummaryList
List - Object
Readonly
|
List of TransactionSummary group objects with fields shown based on the provided columnGroupList
|
TransactionSummary
Attribute | Description |
transactionCount
Numeric
Readonly
|
Total Count for Transactions in the group |
paymentAmount
Numeric
Readonly
|
Total Payment Amount for Transactions in the group |
feeAmount
Numeric
Readonly
|
Total Fee Amount for Transactions in the group |
day
Alphanumeric
Readonly
|
The dateCreated formatted as YYYY-MM-dd for Transactions in the group.
Only shown if columnGroupList contains day .
|
month
Alphanumeric
Readonly
|
The dateCreated formatted as YYYY-MM for Transactions in the group.
Only shown if columnGroupList contains month .
|
year
Alphanumeric
Readonly
|
The dateCreated formatted as YYYY for Transactions in the group.
Only shown if columnGroupList contains year .
|
paymentMethod
Alphanumeric
Readonly
|
The paymentMethod for Transactions in the group.
Only shown if columnGroupList contains paymentMethod .
|
transactionType
Alphanumeric
Readonly
|
The transactionType for Transactions in the group.
Only shown if columnGroupList contains transactionType .
|
cardType
Alphanumeric
Readonly
|
The cardType for Transactions in the group.
Only shown if columnGroupList contains cardType .
|
locationId
Numeric
Readonly
|
The locationId for Transactions in the group.
Only shown if columnGroupList contains locationId .
|
accountDirective
Alphanumeric
Readonly
|
The accountDirective for Transactions in the group.
Only shown if columnGroupList contains accountDirective .
|
transactionOrigin
Alphanumeric
Readonly
|
The transactionOrigin for Transactions in the group.
Only shown if columnGroupList contains transactionOrigin .
|
roundTripNVPS.{rtName}
Alphanumeric
Readonly
|
The roundTripNVPS.{rtName} for Transactions in the group.
Only shown if columnGroupList contains roundTripNVPS.{rtName} .
|
-Ach Recent Batch Search
POST
BatchSearchParameters
to get a list of recent AchBatch
objects matching the BatchSearchParameters
provided
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/v1_0/achtransactions/recentbatches/search
Live URL:
https://transaction.pdc4u.com/TransactionService/v1_0/achtransactions/recentbatches/search
Response
List of recent AchBatch
objects that match your BatchSearchParameters
BatchSearchParameters
Attribute | Description |
startDate
Date19
|
The starting date and time for the report range.
Format: ISO-8601 (yyyy-MM-dd HH:mm:ss)
|
endDate
Date19
|
The ending date and time for the report range.
Format: ISO-8601 (yyyy-MM-dd HH:mm:ss)
|
recordStart
Numeric20
|
The starting index of ACH batch record results.
Default: 0
|
recordCount
Numeric4
|
The number of records to retrieve.
Default: 100. Max: 5000. Values that exceed this limit will be forced to 5000.
|
AchBatch Object
Attribute | Description |
batchId
NumericN/A
Readonly
|
The id of the ACH batch. |
batchName
AlphanumericN/A
Readonly
|
The name of the ACH batch. |
batchDate
DateN/A
Readonly
|
The the date the ACH batch was submitted to the bank.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
transactionCount
NumericN/A
Readonly
|
The number of transactions contained within the ACH batch. |
-Ach Recent Settlement Search
POST
SettlementSearchParameters
to get a list of recent AchSettlement
objects matching the SettlementSearchParameters
provided
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/v1_0/achtransactions/recentsettlements/search
Live URL:
https://transaction.pdc4u.com/TransactionService/v1_0/achtransactions/recentsettlements/search
Response
List of recent AchSettlement
objects that match your SettlementSearchParameters
SettlementSearchParameters
Attribute | Description |
startDate
Date19
|
The starting date and time for the report range.
Format: ISO-8601 (yyyy-MM-dd HH:mm:ss)
|
endDate
Date19
|
The ending date and time for the report range.
Format: ISO-8601 (yyyy-MM-dd HH:mm:ss)
|
recordStart
Numeric20
|
The starting index of Settlement list record results.
Default: 0
|
recordCount
Numeric4
|
The number of records to retrieve.
Default: 100. Max: 5000. Values that exceed this limit will be forced to 5000.
|
AchSettlement Object
Attribute | Description |
settlementId
AlphaNumericN/A
Readonly
|
The id of the ACH Settlement. |
settlementDate
DateN/A
Readonly
|
The the date of the ACH Settlement.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
transactionCount
NumericN/A
Readonly
|
The number of transactions contained within the ACH Settlement. |
-Ach Report Summary
POST
an AchReportSummary
object to generate an Ach Report Summary
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/reportsummary
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/achtransactions/reportsummary
Response
An AchReportSummary
object will be returned which contains the generated HTML. If there were validation or processing errors, this object will have a list of RequestError
objects.
AchReportSummary
Attribute | Description |
startDate
Date19
Required
|
The starting date and time for the report range.
Format: ISO-8601 (yyyy-MM-dd HH:mm:ss)
|
endDate
Date19
Required
|
The ending date and time for the report range.
Format: ISO-8601 (yyyy-MM-dd HH:mm:ss)
|
reportHtml
AlphanumericN/A
Readonly
|
Generated HTML for displaying the report. |
-RDFI Search: Receiving Depository Financial Institution
GET
a list of RDFI - Receiving Depository Financial Institution
objects by providing RdfiSearchParameters
as a Query String.
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/rdfi?{search}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/achtransactions/rdfi?{search}
Response
List of RDFI
objects that match your RdfiSearchParameters
RdfiSearchParameters
Attribute | Description |
bankNameOrRoutingNumber
AlphaNumeric2
Required
|
The Bank Name or Routing Number to search for. NOTE: This must be at least 2 characters. |
RDFI Object
Attribute | Description |
bankRoutingNumber
NumericN/A
Readonly
|
The Routing Number of the Bank |
bankName
AlphaNumericN/A
Readonly
|
The Name of the Bank |
Zero Cost Fees
Obtain the expected fee amount for a given accountDirective
configured for zero cost processing and paymentAmount
Card
POST
an ExpectedFeeList
object
Response will be an ExpectedFeeList
in the same order as provided in the request
In case of an error, a RequestErrorList
will be included with the response. the ApiFieldName
will be
expectedFeeListIndex
with a value referencing the array index (Zero based) of ExpectedFeeList with the error.
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/fees/card/zerocostlist
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/fees/card/zerocostlist
ExpectedFeeList
Attribute | Description |
expectedFeeList
List - Object
Required
|
List of ExpectedFee objects
|
ExpectedFee
Attribute | Description |
accountDirective
Alphanumeric10
Required
|
Account directive configured with zero cost processing
Format: XXX-X
NOTE: The accountDirective must be the same for each element of the list
|
paymentAmount
NumericString11
Required
|
The intended transaction payment amount |
state
Alpha2
Conditional
|
The abbreviation of the state. Some payment gateway processors require this. |
origin
Alpha3
|
The origin of the transaction. This should be set to EXT .NOTE: There are other possible values. Please contact our Customer Success team to learn more. |
relatedId
NumericString11
|
The transactionId for the original Transaction being CREDITed . This is used to look up any related Transactions for the expectedFeeAmount to correctly calculate when comparing the original SALE paymentAmount to any other partial CREDIT(s) and potential rounding issues.
|
zeroCostFeePercent
NumericString11
Readonly
|
The percentage fee configured on the accountDirective
|
expectedFeeAmount
NumericString11
Readonly
|
The expected fee based on the paymentAmount and zeroCostFeePercent
|
isZeroAllowed
Boolean5
Readonly
|
Boolean to indicate if a Transaction feeAmount could be zero. Otherwise, the Transaction feeAmount must be the expectedFeeAmount .
|
requestErrorList
ListN/A
Readonly
|
A list of RequestError objects containing errorsConstraint(s): Only returned if errors occur |
Dialog Templates
Specific dialogs must be used for some transactions. The payment processor Pay N Seconds
requires that a dialog be displayed and acknowledged by the user before a payment is created.
Contact us to request access to the Pay N Seconds
dialog templates.
-Generate Dialog
POST
TransactionDialog
for a TransactionDialog
object which contains the generated Dialog.
Test URL:
https://transactiondemo.pdc4u.com/v1_0/transactions/dialogtemplates
Live URL:
https://transaction.pdc4u.com/v1_0/transactions/dialogtemplates
Response
TransactionDialog
object
TransactionDialog
Attribute | Description |
templateId
AlphaNumeric20
Required
|
See Dialog Templates for more information and a list of possible values.
|
templateVariableMap
ObjectN/A
Required
|
This object is a set of key/value pairs where the key is the template placeholder and the value will be used instead of the placeholder. Each placeholder is required. See Dialog Templates for more information.
|
name
AlphaNumeric
Readonly
|
The name for the Template |
description
AlphaNumeric
Readonly
|
The description for the Template |
template
AlphaNumeric
Readonly
|
The Template with placeholder values |
templateVariableList
List - Alpha
Readonly
|
A list of the required placeholder values in the the template
|
dialog
AlphaNumeric
Readonly
|
The generated Dialog with Template placeholders replaced with values from the templateVariableMap
|
-Search Dialog Templates
POST
TransactionDialogTemplateSearchParameters
for a TransactionDialogTemplateSearch
object which contains a list of Dialogs or Templates.
Test URL:
https://transactiondemo.pdc4u.com/v1_0/transactions/dialogtemplates/search
Live URL:
https://transaction.pdc4u.com/v1_0/transactions/dialogtemplates/search
Response
TransactionDialogTemplateSearch
object
TransactionDialogTemplateSearchParameters
Attribute | Description |
templateIdList
List - AlphaNumeric20
|
List of templateIds. |
dialogIdList
List - Numeric20
|
List of dialogIds.
Note: Using this option will show the generated dialog rather than the template and templateVariableList .
|
arrivalIdList
List - Numeric20
|
List of arrivalIds.
Note: Using this option will show the generated dialog rather than the template and templateVariableList .
|
scheduleIdList
List - Numeric10
|
List of scheduleIds.
Note: Using this option will show the generated dialog rather than the template and templateVariableList .
|
TransactionDialogTemplateSearch
Attribute | Description |
dialogTemplateListSize
Numeric
Readonly
|
Size of the dialogTemplateList
|
dialogTemplateList
List - Object
Readonly
|
List of TransactionDialogTemplate objects based on the provided TransactionDialogTemplateSearchParameters
|
TransactionDialogTemplate
Attribute | Description |
templateId
Numeric
Readonly
|
The ID for the Template |
name
AlphaNumeric
Readonly
|
The name for the Template |
description
AlphaNumeric
Readonly
|
The description for the Template |
template
AlphaNumeric
Readonly
|
The Template with placeholder values |
templateVariableList
List - Alpha
Readonly
|
A list of the required placeholder values in the the template
|
dialogId
Numeric
Readonly
|
The ID for a generated Dialog |
arrivalId
Numeric
Readonly
|
The Transaction arrivalId which used the generated Dialog |
scheduleId
Numeric
Readonly
|
The Transaction scheduleId which used the generated Dialog |
dialog
AlphaNumeric
Readonly
|
The generated Dialog with Template placeholders replaced with values from the templateVariableMap
|
Account Directives Migration
Migrate WAITING
AchTransactions not yet in a batch, and all POST_DATED
transactions, from one accountDirective
to another. Returns a MigrationResponse
Send an HTTP PATCH
with an AccountDirectiveMigration
object in the body to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/migrations/accountdirectives
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/migrations/accountdirectives
AccountDirectiveMigration
Attribute | Description |
oldAccountDirective
Alphanumeric String
10
Required
|
The accountDirective assigned to the targeted transactions.
|
newAccountDirective
Alphanumeric String
10
Required
|
The desired accountDirective to assign to the targeted transactions. |
MigrationResponse
Attribute | Description |
response
String
|
A description of the processing status. |
requestErrorList
List
|
A list of RequestError objects. Only returned on unsuccessful migrations.
|
PostBack Transaction Events
Basic information about a Transaction can be sent back to your system for some Transaction events. The information returned can be used to securely GET
further details from Transaction Service. The PostBackBody
will always come as JSON
using an HTTPs
POST
.
If something goes wrong attempting to postback to your system, we will automatically retry on this schedule:
- Attempt #1 - Immediate
- Attempt #2 - 5 minutes after 1st attempt
- Attempt #3 - 15 minutes after 1st attempt
- Attempt #4 - 1 hour after 1st attempt
- Attempt #5 - 24 hours after 1st attempt (final attempt)
To be considered successful, we expect your server to return HTTP STATUS 200
. Once that is received or after Attempt #5 we will no longer try to post the data.
To enable sending, please log into your app.pdcflow.com account and navigate to CONFIGURE > NOTIFICATIONS. This is where you can configure PostBacks for each Transaction event:
Event | Description |
---|---|
CARD_FAILED
|
A card payment has failed to process. |
CARD_PROCESSED
|
A card payment processed successfully. |
CASH_FAILED
|
A cash payment has failed to process. |
CASH_PROCESSED
|
A cash payment processed successfully. |
CHECK_FAILED
|
A check payment has failed to process. |
CHECK_PROCESSED
|
A check payment processed successfully. |
PAYPAL_FAILED
|
A PayPal payment has failed to process. |
PAYPAL_PROCESSED
|
A PayPal payment processed successfully. |
SCHEDULE_CARD_FAILED
|
A card payment on a schedule has failed to process. |
SCHEDULE_CARD_PROCESSED
|
A card payment on a schedule has processed successfully. |
SCHEDULE_CHECK_FAILED
|
A check payment on a schedule has failed to process. |
SCHEDULE_CHECK_PROCESSED
|
A check payment on a schedule has processed successfully. |
CHECK_EXCEPTION_REPORT
|
A daily email that includes summaries of the previous day's ACH transactions.
NOTE: The PostBackBody for this event will be a list of PostBackBody Check Exception Report
|
PostBackBody Transaction
Attribute | Description |
---|---|
arrivalId
Numeric20
|
The PDC Transaction Arrival ID, always present. Use this to pull further details on a payment from Transaction Service. Generally only needed if the payment request failed. |
transactionId
Numeric20
|
The PDC Transaction ID. Only populated on a successful APPROVED transaction. Use this to pull further details on a payment, check the status, issue a CREDIT, etc. from Transaction Service.
|
paymentMethod
Alpha5
|
The method of payment, always present.
Valid value(s):
CARD , CASH , CHECK , PAYPAL |
transactionStatus
Alpha8
|
Result of the payment attempt, always present.
Valid value(s):
APPROVED - Transaction was processed successfully.DECLINED - The transaction was sent to the vendor, but the vendor declined the transaction. These transactions will typically not be accepted regardless of how many times they are retried.ERROR - An error has occurred and the transaction failed processing. These transactions can typically be resubmitted once the issues have been corrected. |
PostBackBody Check Exception Report
Attribute | Description |
---|---|
reportType
Alpha
|
ACH Report Type.
Valid value(s):
|
reportUrl
URL
|
URL to view the full report. |
PayPal Vault
POST
PayPalVault
to create a new PayPalVault
object.
Test URL:
https://transactiondemo.pdc4u.com/v1_0/paypaltransactions/vault
Live URL:
https://transaction.pdc4u.com/v1_0/paypaltransactions/vault
Response
PayPalVault
object
PayPalVault
Attribute | Description |
vaultId
AlphaNumeric20
Readonly
|
The auto-generated ID for the PayPal vault which is a reference to the payment details on PayPal. This value will be used to process a PayPalTransaction once the vault payment details have been provided.
|
dateCreated
Date19
Readonly
|
The date the vault was created. Ready to be authorized by the consumer.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
approveUrl
URL500
Readonly
|
The URL provided by PayPal which you will use to redirect the consumer to. On this page the consumer will provide, or select, their payment details on PayPal. If they successfully provide their payment details, we will redirect them to the provided successUrl , otherwise we will redirect to the provided cancelUrl .
|
accountDirective
Alphanumeric10
Required
|
The account directive associated with the vault.
Format: XXX-X
|
successUrl
URL500
Required
|
A URL which will be used to redirect the consumer when they successfully provide their payment details to PayPal.
Constraint(s): Must be a secure HTTPS URL
|
cancelUrl
URL500
Required
|
A URL which will be used to redirect the consumer if they cancel while attempting to provide their payment details to PayPal.
Constraint(s): Must be a secure HTTPS URL
|
locationId
NumericString10
|
The id for the Location that the vault is created for. |
dateTokenized
Date19
Readonly
|
The date the PayPal payment details were tokenzied which means they are authorized and ready to be used.
Format: ISO-8601 (YYYY-MM-DD HH:mm:ss)
|
emailAddress
Alphanumeric100
Readonly
|
The email address associated with the PayPal account. |
requestErrorList
ListN/A
Readonly
|
A list of RequestError objects containing errors.
Constraint(s): Only returned when errors occur.
|
-Get PayPal Vault
GET
a single PayPalVault
using a specific vaultId
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/vault/{vaultId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/vault/{vaultId}
Response
PayPalVault
object
REST Fault
RequestErrorList
Attribute | Description |
requestErrorList
ListN/A
|
A list of RequestError objects containing errors.
Constraint(s): Only returned when errors occur.
|
RequestError
Attribute | Description |
code
Alpha3
|
The code for the validation error. |
errorCode
Numeric5
|
The error code of the validation error. |
description
AlphanumericN/A
|
The description of the validation error. |
retriable
Boolean5
|
Boolean to specify if the same request can be retried. This indicates a temporary failure. |
apiFieldNameList
ListN/A
|
List of ApiFieldName with the specified RequestError
|
ApiFieldName
Attribute | Description |
apiFieldName
Alphanumeric
|
The name of the Api Field. |
apiFieldValue
Alphanumeric
|
The value of the Api Field. When the Api Field is a list, this will show the specific list value which failed. |
Sample Code
This section offers some client implementation examples in different languages. Keep in mind, these are only minimalistic examples used to demonstrate the Transaction Service REST API and are not meant for production use.
Result Status Codes
Expected Http Status codes
Status '200':
Description = 'Success.'
Status: '400':
Description = 'Malformed request. The request is either incorrectly formatted, or there are validation errors.'
Status '401':
Description = 'Invalid credentials.'
Status '403':
Description = 'Service not activated.'
Status '404':
Description = 'The requested signature/document/image was not found.'
Status '405':
Description = 'POST, GET, PUT request not supported for resource.'
Status '498'
Description = 'JWT validation token is expired'
Status '500':
Description = 'An internal error has occurred.'
Status '503':
Description = 'The requested service (Credit Card, ACH) is not activated.'
All requests will return a status code. For example, in the case of status code 400
, check for a requestErrorList
in the response, containing information on validation failure.
-Sample ACH Debit
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/debits/';
$transaction = [
'sendReceiptToEmailAddress' => false,
'accountDirective' => '2222-1',
'transactionType' => 'DEBIT',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'dateScheduled' => 'yyyy-mm-dd',
'bankRoutingNumber' => '987654321',
'bankAccountToken' => 'aSampleToken1234',
'bankAccountType' => 'CHECKING',
'checkNumber' => '1234',
'customReceiptLabels' => [
'PAYMENT' => "Amount to pay"
],
'customReceiptValues' => [
'COMPANY_NAME' => 'My Custom Company Name'
]
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($transaction, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '2222-1',
'transactionType' => 'DEBIT',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'dateScheduled' => 'yyyy-mm-dd',
'bankRoutingNumber' => '987654321',
'bankAccountToken' => 'aSampleToken1234',
'bankAccountType' => 'CHECKING',
'checkNumber' => '1234',
'customReceiptLabels' => {
'PAYMENT' => 'Amount to pay'
},
'customReceiptValues' => {
'COMPANY_NAME' => 'My Custom Company Name'
}
}
$data = JSON::XS->new->utf8->encode ($transaction);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/debits/';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '2222-1',
'transactionType' => 'DEBIT',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'dateScheduled' => 'yyyy-mm-dd',
'bankRoutingNumber' => '987654321',
'bankAccountToken' => 'aSampleToken1234',
'bankAccountType' => 'CHECKING',
'checkNumber' => '1234',
'customReceiptLabels' => [
'PAYMENT' => 'Amount to pay'
],
'customReceiptValues' => {
'COMPANY_NAME' => 'My Custom Company Name'
}
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/debits/'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = data.to_json.length
payload = transaction.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
This will process an ACH DEBIT transaction.
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/debits
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/achtransactions/debits
-Sample ACH Credit
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/credits/';
$transaction = [
'sendReceiptToEmailAddress' => false,
'accountDirective' => '2222-1',
'transactionType' => 'CREDIT',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'dateScheduled' => 'yyyy-mm-dd',
'bankRoutingNumber' => '987654321',
'bankAccountToken' => 'aSampleToken1234',
'bankAccountType' => 'CHECKING',
'checkNumber' => '1234',
'customReceiptLabels' => [
'PAYMENT' => "Amount to pay"
],
'customReceiptValues' => [
'COMPANY_NAME' => 'My Custom Company Name'
]
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($transaction, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '2222-1',
'transactionType' => 'CREDIT',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'dateScheduled' => 'yyyy-mm-dd',
'bankRoutingNumber' => '987654321',
'bankAccountToken' => 'aSampleToken1234',
'bankAccountType' => 'CHECKING',
'checkNumber' => '1234',
'customReceiptLabels' => {
'PAYMENT' => 'Amount to pay'
},
'customReceiptValues' => {
'COMPANY_NAME' => 'My Custom Company Name'
}
}
$data = JSON::XS->new->utf8->encode ($transaction);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/credits/';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '2222-1',
'transactionType' => 'CREDIT',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'dateScheduled' => 'yyyy-mm-dd',
'bankRoutingNumber' => '987654321',
'bankAccountToken' => 'aSampleToken1234',
'bankAccountType' => 'CHECKING',
'checkNumber' => '1234',
'customReceiptLabels' => [
'PAYMENT' => 'Amount to pay'
],
'customReceiptValues' => {
'COMPANY_NAME' => 'My Custom Company Name'
}
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/credits/'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = data.to_json.length
payload = transaction.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
This will process an ACH CREDIT transaction.
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/credits
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/achtransactions/credits
-Sample ACH Credit Existing
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/credits/{originalTransactionId}';
$transaction = [
'sendReceiptToEmailAddress' => false,
'accountDirective' => '2222-1',
'transactionType' => 'CREDIT',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'dateScheduled' => 'yyyy-mm-dd',
'bankRoutingNumber' => '987654321',
'bankAccountToken' => 'aSampleToken1234',
'bankAccountType' => 'CHECKING',
'checkNumber' => '1234',
'customReceiptLabels' => [
'PAYMENT' => "Amount to pay"
],
'customReceiptValues' => [
'COMPANY_NAME' => 'My Custom Company Name'
]
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($transaction, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '2222-1',
'transactionType' => 'CREDIT',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'dateScheduled' => 'yyyy-mm-dd',
'bankRoutingNumber' => '987654321',
'bankAccountToken' => 'aSampleToken1234',
'bankAccountType' => 'CHECKING',
'checkNumber' => '1234',
'customReceiptLabels' => {
'PAYMENT' => 'Amount to pay'
},
'customReceiptValues' => {
'COMPANY_NAME' => 'My Custom Company Name'
}
}
$data = JSON::XS->new->utf8->encode ($transaction);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/credits/{originalTransactionId}';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '2222-1',
'transactionType' => 'CREDIT',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'dateScheduled' => 'yyyy-mm-dd',
'bankRoutingNumber' => '987654321',
'bankAccountToken' => 'aSampleToken1234',
'bankAccountType' => 'CHECKING',
'checkNumber' => '1234',
'customReceiptLabels' => [
'PAYMENT' => 'Amount to pay'
],
'customReceiptValues' => {
'COMPANY_NAME' => 'My Custom Company Name'
}
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/credits/{originalTransactionId}'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = data.to_json.length
payload = transaction.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
This will CREDIT an existing ACH transaction.
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/credits/{originalTransactionId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/achtransactions/credits/{originalTransactionId}
-Sample ACH Void Existing
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/voids/{originalTransactionId}';
$transaction = [
'sendReceiptToEmailAddress' => false,
'customReceiptLabels' => [
'PAYMENT' => "Amount to pay"
],
'customReceiptValues' => [
'COMPANY_NAME' => 'My Custom Company Name'
]
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($transaction, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '2222-1',
'transactionType' => 'CREDIT',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'dateScheduled' => 'yyyy-mm-dd',
'bankRoutingNumber' => '987654321',
'bankAccountToken' => 'aSampleToken1234',
'bankAccountType' => 'CHECKING',
'checkNumber' => '1234',
'customReceiptLabels' => {
'PAYMENT' => 'Amount to pay'
},
'customReceiptValues' => {
'COMPANY_NAME' => 'My Custom Company Name'
}
}
$data = JSON::XS->new->utf8->encode ($transaction);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/voids/{originalTransactionId}';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '2222-1',
'transactionType' => 'CREDIT',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'dateScheduled' => 'yyyy-mm-dd',
'bankRoutingNumber' => '987654321',
'bankAccountToken' => 'aSampleToken1234',
'bankAccountType' => 'CHECKING',
'checkNumber' => '1234',
'customReceiptLabels' => [
'PAYMENT' => 'Amount to pay'
],
'customReceiptValues' => {
'COMPANY_NAME' => 'My Custom Company Name'
}
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/voids/{originalTransactionId}'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = data.to_json.length
payload = transaction.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
This will VOID an existing ACH transaction.
Send an HTTP PUT
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/voids/{originalTransactionId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/achtransactions/voids/{originalTransactionId}
-Sample Card SALE
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/sales/';
$transaction = [
'sendReceiptToEmailAddress' => false,
'accountDirective' => '111-1',
'transactionType' => 'SALE',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'cardToken' => 'ThisIsAToken22224',
'expirationMonth' => '12',
'expirationYear' => '2022',
'customReceiptLabels' => [
'PAYMENT' => "Amount to pay"
],
'customReceiptValues' => [
'COMPANY_NAME' => 'My Custom Company Name'
]
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($transaction, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '111-1',
'transactionType' => 'SALE',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'cardToken' => 'ThisIsAToken2224',
'expirationMonth' => '12',
'expirationYear' => '2022',
'customReceiptLabels' => {
'PAYMENT' => 'Amount to pay'
},
'customReceiptValues' => {
'COMPANY_NAME' => 'My Custom Company Name'
}
}
$data = JSON::XS->new->utf8->encode ($transaction);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/sales';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '111-1',
'transactionType' => 'SALE',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'cardToken' => 'ThisIsAToken2224',
'expirationMonth' => '12',
'expirationYear' => '2022',
'customReceiptLabels' => [
'PAYMENT' => 'Amount to pay'
],
'customReceiptValues' => {
'COMPANY_NAME' => 'My Custom Company Name'
}
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/sales/'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = data.to_json.length
payload = transaction.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
This will process a Card SALE transaction.
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/sales
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/cardtransactions/sales
-Sample Card CREDIT Existing
<?php
$originalTransactionId = 12;
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/credits/' . $originalTransactionId;
$transaction = [
'sendReceiptToEmailAddress' => false,
'accountDirective' => '111-1',
'transactionType' => 'CREDIT',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '115.00',
'cardToken' => 'ThisIsAToken22224',
'expirationMonth' => '12',
'expirationYear' => '2022'
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($transaction, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $originalTranasctionId = '12';
my $transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '111-1',
'transactionType' => 'CREDIT',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'cardToken' => 'ThisIsAToken2224',
'expirationMonth' => '12',
'expirationYear' => '2022'
}
$data = JSON::XS->new->utf8->encode ($transaction);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/credits/' . $originalTransactionId;
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
originalTransactionId = '12'
transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '111-1',
'transactionType' => 'CREDIT',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'cardToken' => 'ThisIsAToken2224',
'expirationMonth' => '12',
'expirationYear' => '2022'
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/credits/' + originalTransactionId
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = data.to_json.length
payload = transaction.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
Card transaction processing will use this method. This will process a card CREDIT transaction.
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/credits/{originalTransactionId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/cardtransactions/credits/{originalTransactionId}
-Sample Card VOID Existing
<?php
$originalTransactionId = 12;
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/voids/' . $originalTransactionId;
$cardVoidTransaction = [
'sendReceiptToEmailAddress' => false,
'transactionType' => 'VOID',
'transactionOrigin' => 'EXT',
'memo' => 'I am writing a memo'
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($cardVoidTransaction, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $originalTranasctionId = '12';
my $cardVoidTransaction = [
'sendReceiptToEmailAddress' => false,
'transactionOrigin' => 'EXT',
'memo' => 'I am writing a memo',
];
$data = JSON::XS->new->utf8->encode ($cardVoidTransaction);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/voids/' . $originalTransactionId;
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
originalTransactionId = '12'
voidTransaction = {
'sendReceiptToEmailAddress' => false,
'transactionOrigin' => 'EXT',
'memo' => 'Void this transaction'
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/voids/' + originalTransactionId
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = 0
payload = cardVoidTransaction.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
Card transaction processing will use this method. This will VOID a card transaction.
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/voids/{originalTransactionId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/cardtransactions/voids/{originalTransactionId}
-Sample Cash SALE
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cashtransactions/sales/';
$transaction = [
'sendReceiptToEmailAddress' => false,
'accountDirective' => '111-1',
'transactionType' => 'SALE',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'customReceiptLabels' => [
'PAYMENT' => "Amount to pay"
],
'customReceiptValues' => [
'COMPANY_NAME' => 'My Custom Company Name'
]
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($transaction, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '111-1',
'transactionType' => 'SALE',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'customReceiptLabels' => {
'PAYMENT' => 'Amount to pay'
},
'customReceiptValues' => {
'COMPANY_NAME' => 'My Custom Company Name'
}
}
$data = JSON::XS->new->utf8->encode ($transaction);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cashtransactions/sales';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '111-1',
'transactionType' => 'SALE',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'customReceiptLabels' => [
'PAYMENT' => 'Amount to pay'
],
'customReceiptValues' => {
'COMPANY_NAME' => 'My Custom Company Name'
}
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cashtransactions/sales/'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = data.to_json.length
payload = transaction.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
This will process a Cash SALE transaction.
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cashtransactions/sales
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/cashtransactions/sales
-Sample Cash VOID Existing
<?php
$originalTransactionId = 12;
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cashtransactions/voids/' . $originalTransactionId;
$cashVoidTransaction = [
'sendReceiptToEmailAddress' => false,
'transactionType' => 'VOID',
'transactionOrigin' => 'EXT',
'memo' => 'I am writing a memo'
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($cashVoidTransaction, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $originalTranasctionId = '12';
my $cashVoidTransaction = [
'sendReceiptToEmailAddress' => false,
'transactionOrigin' => 'EXT',
'memo' => 'I am writing a memo',
];
$data = JSON::XS->new->utf8->encode ($cashVoidTransaction);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cashtransactions/voids/' . $originalTransactionId;
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
originalTransactionId = '12'
voidTransaction = {
'sendReceiptToEmailAddress' => false,
'transactionOrigin' => 'EXT',
'memo' => 'Void this transaction'
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cashtransactions/voids/' + originalTransactionId
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = 0
payload = voidTransaction.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
This will VOID a cash transaction.
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cashtransactions/voids/{originalTransactionId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/cashtransactions/voids/{originalTransactionId}
-Sample PayPal SALE
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/sales/';
$transaction = [
'sendReceiptToEmailAddress' => false,
'accountDirective' => '111-1',
'transactionType' => 'SALE',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'vaultId' => 'vaultId1234',
'customReceiptLabels' => [
'PAYMENT' => "Amount to pay"
],
'customReceiptValues' => [
'COMPANY_NAME' => 'My Custom Company Name'
]
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($transaction, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '111-1',
'transactionType' => 'SALE',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'vaultId' => 'vaultId1234',
'customReceiptLabels' => {
'PAYMENT' => 'Amount to pay'
},
'customReceiptValues' => {
'COMPANY_NAME' => 'My Custom Company Name'
}
}
$data = JSON::XS->new->utf8->encode ($transaction);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/sales';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '111-1',
'transactionType' => 'SALE',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00',
'vaultId' => 'vaultId1234',
'customReceiptLabels' => [
'PAYMENT' => 'Amount to pay'
],
'customReceiptValues' => {
'COMPANY_NAME' => 'My Custom Company Name'
}
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/sales/'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = data.to_json.length
payload = transaction.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
This will process a PayPal SALE transaction.
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/sales
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/sales
-Sample PayPal CREDIT Existing
<?php
$originalTransactionId = 12;
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/credits/' . $originalTransactionId;
$transaction = [
'sendReceiptToEmailAddress' => false,
'accountDirective' => '111-1',
'transactionType' => 'CREDIT',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '115.00'
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($transaction, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $originalTranasctionId = '12';
my $transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '111-1',
'transactionType' => 'CREDIT',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00'
}
$data = JSON::XS->new->utf8->encode ($transaction);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/credits/' . $originalTransactionId;
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
originalTransactionId = '12'
transaction = {
'sendReceiptToEmailAddress' => false,
'accountDirective' => '111-1',
'transactionType' => 'CREDIT',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'allowDuplicate' => 'true',
'paymentAmount' => '215.00'
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/credits/' + originalTransactionId
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = data.to_json.length
payload = transaction.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
This will process a PayPal CREDIT transaction.
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/credits/{originalTransactionId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/credits/{originalTransactionId}
-Sample Bulk Transaction
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/sales/bulk';
$data = [
'description' => 'Bulk Transaction Description',
'cardTransactionList' => [
[
'accountDirective' => '111-1',
'transactionType' => 'SALE',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'paymentAmount' => '215.00',
'cardToken' => 'ThisIsAToken22224',
'expirationMonth' => '12',
'expirationYear' => '2022',
'sendReceiptToEmailAddress' => false
],
[
'accountDirective' => '111-1',
'transactionType' => 'SALE',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'paymentAmount' => '215.00',
'cardToken' => 'ThisIsAToken22224',
'expirationMonth' => '12',
'expirationYear' => '2022',
'sendReceiptToEmailAddress' => false
]
]
]
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($request, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $data = {
'description' => 'Bulk Transaction Description',
'cardTransactionList' => {
{
'accountDirective' => '111-1',
'transactionType' => 'SALE',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'paymentAmount' => '215.00',
'cardToken' => 'ThisIsAToken22224',
'expirationMonth' => '12',
'expirationYear' => '2022',
'sendReceiptToEmailAddress' => false
},
{
'accountDirective' => '111-1',
'transactionType' => 'SALE',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'paymentAmount' => '215.00',
'cardToken' => 'ThisIsAToken22224',
'expirationMonth' => '12',
'expirationYear' => '2022',
'sendReceiptToEmailAddress' => false
}
}
}
$data = JSON::XS->new->utf8->encode ($request);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/sales/bulk';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
data = {
'description' => 'Bulk Transaction Description',
'cardTransactionList' => {
{
'accountDirective' => '111-1',
'transactionType' => 'SALE',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'paymentAmount' => '215.00',
'cardToken' => 'ThisIsAToken22224',
'expirationMonth' => '12',
'expirationYear' => '2022',
'sendReceiptToEmailAddress' => false
},
{
'accountDirective' => '111-1',
'transactionType' => 'SALE',
'firstName' => 'First',
'lastName' => 'Last',
'accountNumber' => '1234',
'transactionOrigin' => 'EXT',
'paymentAmount' => '215.00',
'cardToken' => 'ThisIsAToken22224',
'expirationMonth' => '12',
'expirationYear' => '2022',
'sendReceiptToEmailAddress' => false
}
}
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/sales/bulk'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = data.to_json.length
payload = data.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
POST
a TransactionBulk
object to create and process a list of new Card Transactions
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/cardtransactions/sales/bulk
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/cardtransactions/sales/bulk
-Sample Patch CardTransaction
<?php
$url = 'https://transactiondemo.pdc4u.com/v1_0/cardtransactions/123456';
$patch = [
'accountNumber' => '123456',
'firstName' => 'UpdatedFirstName',
'roundTripNVPS' => [
[
'rtName'=>'myName',
'rtValue'=>'myValue'
]
]
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_PATCH, 1);
$data = json_encode($patch, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_PATCHFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
PATCH
a CardTransaction
object to update an existing POST_DATED
or APPROVED
CardTransaction
for a specific arrivalId
.
Test URL:
https://transactiondemo.pdc4u.com/v1_0/cardtransactions/{arrivalId}
Live URL:
https://transaction.pdc4u.com/v1_0/cardtransactions/{arrivalId}
-Sample Patch PayPalTransaction
<?php
$url = 'https://transactiondemo.pdc4u.com/v1_0/paypaltransactions/123456';
$patch = [
'accountNumber' => '123456',
'firstName' => 'UpdatedFirstName',
'roundTripNVPS' => [
[
'rtName'=>'myName',
'rtValue'=>'myValue'
]
]
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_PATCH, 1);
$data = json_encode($patch, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_PATCHFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
PATCH
a PayPalTransaction
object to update an existing POST_DATED
or APPROVED
PayPalTransaction
for a specific arrivalId
.
Test URL:
https://transactiondemo.pdc4u.com/v1_0/paypaltransactions/{arrivalId}
Live URL:
https://transaction.pdc4u.com/v1_0/paypaltransactions/{arrivalId}
-Sample Receipt Generation
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/receipts';
$receipt = [
'transactionId' => 12,
'emailTo' => ["toEmail1@example.com", "toEmail2@example.com"],
'emailCC' => ["ccEmail1@example.com", "ccEmail2@example.com"],
'emailBCC' => ["bccEmail1@example.com", "bccEmail2@example.com"],
'customReceiptLabels' => [
'PAYMENT' => 'Amount to pay'
],
'customReceiptText' => "My Custom Text",
'customReceiptValues' => [
'COMPANY_NAME' => "My Custom Company Name"
]
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($receipt, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/receipts
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/transactions/receipts
-Sample Ach Report Summary Request
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/reportsummary';
$request = [
'startDate' => 'yyyy-MM-dd HH:mm:ss',
'endDate' => 'yyyy-MM-dd HH:mm:ss'
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($request, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/reportsummary
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/achtransactions/reportsummary
-Sample Transaction Retrieval
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/{transactionId}';
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $uri = URI->new("https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/{transactionID}");
my $req = HTTP::Request->new( 'GET', $uri );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
my $lwp = LWP::UserAgent->new;
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
url = "https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/{transactionID}"
c = Curl::Easy.new( url )
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
c.perform
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
GET
a single AchTransaction
or CardTransaction
or CashTransaction
for a specific transactionId
Send an HTTP GET
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/{transactionId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/transactions/{transactionId}
-Sample Related Transaction Request
<?php
$transactionId = "1323445";
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/' . $transactionId . '/relatedtransactions';
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $uri = URI->new("https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/{transactionid}/relatedtransactions");
my $req = HTTP::Request->new( 'GET', $uri );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
my $lwp = LWP::UserAgent->new;
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
url = "https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/{transactionid}/relatedtransactions"
c = Curl::Easy.new( url )
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
c.perform
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
GET
a list of related AchTransaction
or CardTransaction
objects for a specific transactionId
Send an HTTP GET
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/{transactionId}/relatedtransactions
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/transactions/{transactionId}/relatedtransactions
-Sample Transaction Search
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/search';
$searchParameters = [
'searchOptions' => [
'timeoutMs' => 13000,
'username' => 'Some Username',
'description' => 'Some Description',
'postBackUrl' => 'https://www.example.com'
'postBackAuthHeader' => 'BEARER abc123...',
'exportFileType' => 'CSV',
'exportColumnMap' => [
'transactionId' => 'Transaction ID',
'paymentMethod' => 'Payment Method',
'transactionStatus' => 'Status',
'transactionAmount' => 'Total',
'roundTripNVPS.employee' => 'Employee ID',
'hierarchyData.locationName' => 'Location'
]
],
'firstName' => 'First',
'lastName' => 'Last',
'lastFour' => '1111',
'searchRoundTripNVPList' => [
[
'rtName' => 'employee',
'rtValueList' => [
"admin@demo.com",
"billing@demo.com"
]
],
[
'rtName' => 'purchaseOrderNumber',
'rtValueList' => [
"123456",
"-1",
"0"
]
]
]
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($searchParameters, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $searchParameters = {
'searchOptions' => {
'timeoutMs' => 13000,
'username' => 'Some Username',
'description' => 'Some Description',
'postBackUrl' => 'https://www.example.com'
'postBackAuthHeader' => 'BEARER abc123...',
'exportFileType' => 'CSV',
'exportColumnMap' => [
'transactionId' => 'Transaction ID',
'paymentMethod' => 'Payment Method',
'transactionStatus' => 'Status',
'transactionAmount' => 'Total',
'roundTripNVPS.employee' => 'Employee ID',
'hierarchyData.locationName' => 'Location'
]
},
'firstName' => 'First',
'lastName' => 'Last',
'lastFour' => '1111',
'searchRoundTripNVPList' => [
{
'rtName' => 'employee',
'rtValueList' => [
"admin@demo.com",
"billing@demo.com"
]
},
{
'rtName' => 'purchaseOrderNumber',
'rtValueList' => [
"123456",
"-1",
"0"
]
}
]
}
$data = JSON::XS->new->utf8->encode ($searchParameters);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/search';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
searchParameters = {
'searchOptions' => {
'timeoutMs' => 13000,
'username' => 'Some Username',
'description' => 'Some Description',
'postBackUrl' => 'https://www.example.com'
'postBackAuthHeader' => 'BEARER abc123...',
'exportFileType' => 'CSV',
'exportColumnMap' => {
'transactionId' => 'Transaction ID',
'paymentMethod' => 'Payment Method',
'transactionStatus' => 'Status',
'transactionAmount' => 'Total',
'roundTripNVPS.employee' => 'Employee ID',
'hierarchyData.locationName' => 'Location'
}
},
'firstName' => 'First',
'lastName' => 'Last',
'lastFour' => '1111',
'searchRoundTripNVPList' => [
{
'rtName' => 'employee',
'rtValueList' => [
"admin@demo.com",
"billing@demo.com"
]
},
{
'rtName' => 'purchaseOrderNumber',
'rtValueList' => [
"123456",
"-1",
"0"
]
}
]
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/search'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = data.to_json.length
payload = searchParameters.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
POST
TransactionSearchParameters
to get a list of AchTransaction
or CardTransaction
objects matching the TransactionSearchParameters
provided
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/search
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/transactions/search
-Sample Transaction Bulk Search
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/bulk/search';
$searchParameters = [
'dateStart' => 'YYYY-MM-dd HH:mm:ss',
'dateEnd' => 'YYYY-MM-dd HH:mm:ss',
'statusList' => [
'PROCESSING',
'COMPLETED'
]
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($searchParameters, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $searchParameters = {
'dateStart' => 'YYYY-MM-dd HH:mm:ss',
'dateEnd' => 'YYYY-MM-dd HH:mm:ss',
'statusList' => [
'PROCESSING',
'COMPLETED'
]
}
$data = JSON::XS->new->utf8->encode ($searchParameters);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/bulk/search';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
searchParameters = {
'dateStart' => 'YYYY-MM-dd HH:mm:ss',
'dateEnd' => 'YYYY-MM-dd HH:mm:ss',
'statusList' => [
'PROCESSING',
'COMPLETED'
]
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/bulk/search'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = data.to_json.length
payload = searchParameters.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
POST
TransactionBulkSearchParameters
get a list of TransactionBulk objects matching the TransactionBulkSearchParameters
provided
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/bulk/search
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/transactions/bulk/search
-Sample GET Saved Transaction Search
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/savedreports/{reportId}';
$curl = curl_init();
curl_setopt($curl, CURLOPT_GET, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/savedreports/{reportId}';
my $req = HTTP::Request->new( 'GET', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/savedreports/{reportId}'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
c.headers = headers
c.http_get()
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
GET
a single saved TransactionSearch for a specific reportId
Send an HTTP GET
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/savedreports/{reportId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/transactions/savedreports/{reportId}
-Sample Saved Transaction Search
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/savedreports/search';
$searchParameters = [
'dateStart' => 'YYYY-MM-dd HH:mm:ss',
'dateEnd' => 'YYYY-MM-dd HH:mm:ss',
'statusList' => [
'PROCESSING',
'COMPLETED'
]
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($searchParameters, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $searchParameters = {
'dateStart' => 'YYYY-MM-dd HH:mm:ss',
'dateEnd' => 'YYYY-MM-dd HH:mm:ss',
'statusList' => [
'PROCESSING',
'COMPLETED'
]
}
$data = JSON::XS->new->utf8->encode ($searchParameters);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/savedreports/search';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
searchParameters = {
'dateStart' => 'YYYY-MM-dd HH:mm:ss',
'dateEnd' => 'YYYY-MM-dd HH:mm:ss',
'statusList' => [
'PROCESSING',
'COMPLETED'
]
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/savedreports/search'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = data.to_json.length
payload = searchParameters.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
POST
SavedReportSearchParameters
get a list of TransactionSearch objects matching the SavedReportSearchParameters
provided
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/savedreports/search
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/transactions/savedreports/search
-Sample Summary Search
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/summary';
$searchParameters = [
'startDate' => 'YYYY-MM-dd HH:mm:ss',
'columnGroupList' => [
'month',
'roundTripNVPS.employee'
],
'searchRoundTripNVPList' => [
[
'rtName' => 'employee',
'rtValueList' => [
"admin@demo.com",
"billing@demo.com"
]
]
]
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($searchParameters, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $searchParameters = {
'startDate' => 'YYYY-MM-dd HH:mm:ss',
'columnGroupList' => [
'month',
'roundTripNVPS.employee'
],
'searchRoundTripNVPList' => [
{
'rtName' => 'employee',
'rtValueList' => [
"admin@demo.com",
"billing@demo.com"
]
}
]
}
$data = JSON::XS->new->utf8->encode ($searchParameters);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/summary';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
searchParameters = {
'startDate' => 'YYYY-MM-dd HH:mm:ss',
'columnGroupList' => [
'month',
'roundTripNVPS.employee'
],
'searchRoundTripNVPList' => [
{
'rtName' => 'employee',
'rtValueList' => [
"admin@demo.com",
"billing@demo.com"
]
}
]
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/transactions/summary'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = data.to_json.length
payload = searchParameters.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
POST
TransactionSummarySearchParameters
for a TransactionSummarySearch
object which contains Transaction Summary Totals.
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/v1_0/transactions/summary
Live URL:
https://transaction.pdc4u.com/TransactionService/v1_0/transactions/summary
-Sample Recent ACH Batch Search
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/recentbatches/search';
$searchParameters = [
'recordStart' => '0',
'recordCount' => '100'
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($searchParameters, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $searchParameters = {
'recordStart' => '0',
'recordCount' => '100'
}
$data = JSON::XS->new->utf8->encode ($searchParameters);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/recentbatches/search';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
searchParameters = {
'recordStart' => '0',
'recordCount' => '100'
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/recentbatches/search'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = data.to_json.length
payload = searchParameters.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
POST
BatchSearchParameters
to get a list of recent AchBatch
objects matching the BatchSearchParameters
provided
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/v1_0/achtransactions/recentbatches/search
Live URL:
https://transaction.pdc4u.com/TransactionService/v1_0/achtransactions/recentbatches/search
-Sample Recent ACH Settlement Search
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/recentsettlements/search';
$searchParameters = [
'recordStart' => '0',
'recordCount' => '100'
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($searchParameters, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $searchParameters = {
'recordStart' => '0',
'recordCount' => '100'
}
$data = JSON::XS->new->utf8->encode ($searchParameters);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/recentsettlements/search';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
searchParameters = {
'recordStart' => '0',
'recordCount' => '100'
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/recentsettlements/search'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = data.to_json.length
payload = searchParameters.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
POST
SettlementSearchParameters
to get a list of recent AchSettlement
objects matching the SettlementSearchParameters
provided
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/v1_0/achtransactions/recentsettlements/search
Live URL:
https://transaction.pdc4u.com/TransactionService/v1_0/achtransactions/recentsettlements/search
-Sample RDFI Search
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/rdfi?bankNameOrRoutingNumber=123';
$authorization = "Authorization: BASIC " . base64_encode('companyUsername'.':'.'companyPassword');
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
$authorization
]);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5); //num seconds to try connecting
curl_setopt($curl, CURLOPT_TIMEOUT, 30); //max number of seconds to allow execution
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $uri = URI->new("https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/rdfi?bankNameOrRoutingNumber=123");
my $req = HTTP::Request->new( 'GET', $uri );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
my $lwp = LWP::UserAgent->new;
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/rdfi?bankNameOrRoutingNumber=123'
c = Curl::Easy.new( url )
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
c.perform
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
GET
a list of RDFI - Receiving Depository Financial Institution
objects by providing RdfiSearchParameters
as a Query String.
Send an HTTP GET
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/achtransactions/rdfi?{search}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/achtransactions/rdfi?{search}
-Sample ExpectedFee Retrieval
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/fees/card/zerocostlist';
$expectedFeeList = ['expectedFeeList': [
[
'accountDirective' => '123-1',
'paymentAmount' => '100.00'
],
[
'accountDirective' => '123-1',
'paymentAmount' => '130.00'
]
]];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($expectedFee, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $expectedFee);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($expectedFee),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $expectedFeeList = {'expectedFeeList': {
{
'accountDirective' => '123-1',
'paymentAmount' => '100.00'
},
{
'accountDirective' => '123-1',
'paymentAmount' => '130.00'
}
}}
$data = JSON::XS->new->utf8->encode ($expectedFee);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/fees/card/zerocostlist';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($expectedFee) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
expectedFeeList = {'expectedFeeList': {
{
'accountDirective' => '123-1',
'paymentAmount' => '100.00'
},
{
'accountDirective' => '123-1',
'paymentAmount' => '130.00'
}
}}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/fees/card/zerocostlist'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = expectedFee.to_json.length
payload = expectedFee.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
POST
an ExpectedFeeList
object in the body
Send an HTTP POST
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/fees/card/zerocostlist
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/fees/card/zerocostlist
-Sample Generate Dialog
<?php
$url = 'https://transactiondemo.pdc4u.com/v1_0/transactions/dialogtemplates';
$request = [
'templateId' => 'PNS_2',
'templateVariableMap' => [
'billingDescriptor' => 'My Company Name'
]
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($expectedFee, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($request),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $request = {
'templateId' => 'PNS_2',
'templateVariableMap' => [
'billingDescriptor' => 'My Company Name'
]
}
$data = JSON::XS->new->utf8->encode ($request);
my $url = 'https://transactiondemo.pdc4u.com/v1_0/transactions/dialogtemplates';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($request) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
request = {
'templateId' => 'PNS_2',
'templateVariableMap' => [
'billingDescriptor' => 'My Company Name'
]
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/v1_0/transactions/dialogtemplates'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = request.to_json.length
payload = request.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
POST
TransactionDialog
for a TransactionDialog
object which contains the generated Dialog.
Test URL:
https://transactiondemo.pdc4u.com/v1_0/transactions/dialogtemplates
Live URL:
https://transaction.pdc4u.com/v1_0/transactions/dialogtemplates
-Sample Search Dialog Template
<?php
$url = 'https://transactiondemo.pdc4u.com/v1_0/transactions/dialogtemplates/search';
$request = [
'templateIdList' => ['PNS_1'],
'dialogIdList' => ['1']
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($expectedFee, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($request),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $request = {
'templateIdList' => ['PNS_1'],
'dialogIdList' => ['1']
}
$data = JSON::XS->new->utf8->encode ($request);
my $url = 'https://transactiondemo.pdc4u.com/v1_0/transactions/dialogtemplates/search';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($request) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
request = {
'templateIdList' => ['PNS_1'],
'dialogIdList' => ['1']
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/v1_0/transactions/dialogtemplates/search'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = request.to_json.length
payload = request.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
POST
TransactionDialogTemplateSearchParameters
for a TransactionDialogTemplateSearch
object which contains a list of Dialogs or Templates.
Test URL:
https://transactiondemo.pdc4u.com/v1_0/transactions/dialogtemplates/search
Live URL:
https://transaction.pdc4u.com/v1_0/transactions/dialogtemplates/search
-Sample POST PayPalVault
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/vault';
$body = [
'accountDirective' => '2222-1',
'successUrl' => 'https://www.example.com/vault/success',
'cancelUrl' => 'https://www.example.com/vault/cancel'
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_POST, 1);
$data = json_encode($body, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($data),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $body = {
'accountDirective' => '2222-1',
'successUrl' => 'https://www.example.com/vault/success',
'cancelUrl' => 'https://www.example.com/vault/cancel'
}
$data = JSON::XS->new->utf8->encode ($body);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/vault';
my $req = HTTP::Request->new( 'POST', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($data) );
$req->content( $data );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
body = {
'accountDirective' => '2222-1',
'successUrl' => 'https://www.example.com/vault/success',
'cancelUrl' => 'https://www.example.com/vault/cancel'
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/vault'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = body.to_json.length
payload = body.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
POST
PayPalVault
to create a new PayPalVault
object.
Test URL:
https://transactiondemo.pdc4u.com/v1_0/paypaltransactions/vault
Live URL:
https://transaction.pdc4u.com/v1_0/paypaltransactions/vault
-Sample GET PayPalVault
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/vault/{vaultId}';
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $uri = URI->new("https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/vault/{vaultId}");
my $req = HTTP::Request->new( 'GET', $uri );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
my $lwp = LWP::UserAgent->new;
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
url = "https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/vault/{vaultId}"
c = Curl::Easy.new( url )
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
c.perform
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
GET
a single PayPalVault
using a specific vaultId
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/vault/{vaultId}
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/paypaltransactions/vault/{vaultId}
-Sample AccountDirective Migration
<?php
$url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/migration/accountdirectives';
$accountDirectiveMigration = [
'oldAccountDirective' => '123-1',
'newAccountDirective' => '123-2'
];
$curl = curl_init();
curl_setopt($curl, CURLOPT_PATCH, 1);
$data = json_encode($accountDirectiveMigration, JSON_UNESCAPED_SLASHES);
curl_setopt($curl, CURLOPT_PATCHFIELDS, $accountDirectiveMigration);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($accountDirectiveMigration),
]);
curl_setopt($curl, CURLOPT_USERPWD, "someSecretUsername:someSecretPassword");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$result = curl_exec($curl);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// View response
print_r(json_decode($result, true));
if($statusCode == '200') {
echo $result;
}
else {
echo "Error #:" . $statusCode;
}
curl_close($curl);
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;
use JSON::XS;
use IO::Socket::SSL qw(debug3); # verbose for troubleshooting
eval {
my $accountDirectiveMigration = {
'oldAccountDirective' => '123-1',
'newAccountDirective' => '123-2'
}
$data = JSON::XS->new->utf8->encode ($accountDirectiveMigration);
my $url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/migrations/accountdirectives';
my $req = HTTP::Request->new( 'PATCH', $url );
$req->authorization_basic( 'SomeSecretUsername', 'SomeSecretPassword' );
$req->content_type('application/json');
$req->content_length( length($accountDirectiveMigration) );
$req->content( $accountDirectiveMigration );
my $lwp = LWP::UserAgent->new;
$lwp->timeout(30);
my $response = $lwp->request( $req );
if ( $response->is_success ) {
print "Success: " . $response->decoded_content;
}
else {
die $response->status_line . ": " . $response->decoded_content;
}
};
if ( $@ ) {
print "Error: $@\n";
}
#!/usr/bin/ruby
require 'curl'
require 'curb'
require 'json'
begin
accountDirectiveMigration = {
'oldAccountDirective' => '123-1',
'newAccountDirective' => '123-2'
}
c = Curl::Easy.new
c.url = 'https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/migrations/accountdirectives'
c.http_auth_types = :basic
c.username = 'SomeSecretUsername'
c.password = 'SomeSecretPassword'
c.connect_timeout = 5
c.timeout = 30
c.verbose = true
headers={}
headers['Content-Type'] = 'application/json'
headers['Content-Length'] = accountDirectiveMigration.to_json.length
payload = accountDirectiveMigration.to_json
c.headers = headers
c.http_post(payload)
puts JSON.parse c.body_str
if c.response_code == 200 then
puts "Success " + c.status
else
puts "Error " + c.status
end
rescue
puts "Caught: #$!\n"
end
PATCH
an AccountDirectiveMigration
to migrate transactions from one account directive to another
Send an HTTP PATCH
request to:
Test URL:
https://transactiondemo.pdc4u.com/TransactionService/api/v1_0/migrations/accountdirectives
Live URL:
https://transaction.pdc4u.com/TransactionService/api/v1_0/migrations/accountdirectives