ProtectPay – Authorize with an Existing Token

A ProtectPay® Payer Management Interface, such as the HPP, is recommended when credit card information must be obtained, for the first time, from one of your customers. ProtectPay® also supports cases where the merchant already has a valid ProtectPay® token.
  • Recurring payments/recurring billing
  • Automatic shipments
  • Cards maintained 'on file' for a more convenient shopping experience
Use the ProtectPay® API call, AuthorizePaymentMethodTransaction to authorize a credit card transaction when you already have a ProtectPay® payment method ID. Note: this method does not complete a sale, and you must also capture the transaction. Using ProcessPaymentMethodTransaction fully completes a sale, and does not require a separate capature event.

Client validation of credit cards
Before processing or tokenizing a credit card that will be processed against any ProPay API, you should consider client-side validation of its card number. Any validation that you do should occur on the cardholder’s browser using JavaScript or similar technology, and should consider what a valid card number looks like:
  • Card numbers should be of an appropriate length. Remember, length-format can differ by card-brand even though 16 digits is most common.
  • Card numbers usually begin with a specific digit that is based on the brand. Just remember: MasterCard cards might also begin with a 2.
  • Card numbers always pass a LUHN check
How to call this method?

HTTP URL(s)
HTTP Verb PUT
HTTP Header Authorization
Example Request

Example Response

{
"PaymentMethodId":"de1ae2bd-c194-437c-ba9a-cb0730bd92d1",
"IsRecurringPayment":false,
"CreditCardOverrides":
{
"FullName":"Test User",
"ExpirationDate":"1014",
"CVV":"999",
"Billing":
{
"Address1":"3400 N Ashton Blvd",
"Address2":"Suite 200",
"Address3":"",
"City":"Lehi",
"State":"UT",
"ZipCode":"84043",
"Country":"USA",
"TelephoneNumber":"8012223333",
"Email":"test@user.com"
}
},
"AchOverrides":null,
"PayerOverrides":
{
"IpAddress":"127.0.0.1"
},
"MerchantProfileId":123456,
"PayerAccountId":"5823760912097888",
"Amount":300,
"CurrencyCode":"USD",
"Invoice":"Test Invoice",
"Comment1":"Authorize Comment 1",
"Comment2":"Authorize Comment 2",
"IsDebtRepayment":"true"
}
{
"Transaction":
{
"AVSCode": "T",
"AuthorizationCode": "A11111",
"CurrencyConversionRate": 1,
"CurrencyConvertedAmount": 300,
"CurrencyConvertedCurrencyCode": "USD",
"ResultCode":
{
"ResultValue": "SUCCESS",
"ResultCode": "00",
"ResultMessage": ""
},
"TransactionHistoryId": "7897264",
"TransactionId": "519",
"TransactionResult": "Success",
"CVVResponseCode": "M",
"GrossAmt": 300,
"NetAmt": 0,
"PerTransFee": 0,
"Rate": 0,
"GrossAmtLessNetAmt": 0
},
"RequestResult":
{
"ResultValue": "SUCCESS",
"ResultCode": "00",
"ResultMessage": ""
}
}
Implementation Details
Request Submission

namespace ProtectPayApi_AuthorizePaymentMethodTransaction
{
using System;
using System.Text;

using RestSharp;

/*
ProPay provides the following code “AS IS.”
ProPay makes no warranties and ProPay disclaims all warranties and conditions, express, implied or statutory,
including without limitation the implied warranties of title, non-infringement, merchantability, and fitness for a particular purpose.
ProPay does not warrant that the code will be uninterrupted or error free,
nor does ProPay make any warranty as to the performance or any results that may be obtained by use of the code.
*/
public class AuthorizePaymentMethodTransactionProgram
{
public static void Main(string[] args)
{
var authorizePaymentMethodTransactionResponse = AuthorizePaymentMethodTransaction();
}

private static CreateTransactionResult AuthorizePaymentMethodTransaction()
{
var baseUrl = "https://xmltestapi.propay.com/ProtectPay";
var request = BuildAuthorizePaymentMethodTransactionRequest();
var restRequest = CreateRestRequest("/AuthorizedTransactions/", RestSharp.Method.PUT);
restRequest.AddBody(request);
return Execute<CreateTransactionResult>(restRequest, baseUrl);
}

private static AuthorizePaymentMethodTransactionRequest BuildAuthorizePaymentMethodTransactionRequest()
{
return new AuthorizePaymentMethodTransactionRequest
{
PaymentMethodId = "de1ae2bd-c194-437c-ba9a-cb0730bd92d1",
IsRecurringPayment = false,
ExpirationDate = "0323",
MerchantProfileId = 123456,
PayerAccountId = "5823760912097888",
Amount = 1000,
CurrencyCode = "USD",
Invoice = "abc123",
};
}

private static RestRequest CreateRestRequest(string resource, Method method)
{
var restRequest = new RestRequest { Resource = resource, Method = method, RequestFormat = DataFormat.Json, };
var credentials = GetCredentials();
restRequest.AddHeader("accept", "application/json");
restRequest.AddHeader("Authorization", credentials);
return restRequest;
}

private static string GetCredentials()
{
var billerAccountId = "5114248593164903"; // biller account id
var authToken = "9d506d3e-b5f7-4474-adb1-76423e113c85"; // authentication token of biller
var encodedCredentials = Convert.ToBase64String(Encoding.Default.GetBytes(billerAccountId + ":" + authToken));
var credentials = string.Format("Basic {0}", encodedCredentials);
return credentials;
}

private static T Execute<T>(IRestRequest request, string baseUrl) where T : class, new()
{
var client = new RestClient(baseUrl);
var response = client.Execute<T>(request);
if (response.ErrorException != null)
{
Console.WriteLine(
"Error: Exception: {0}, Headers: {1}, Content: {2}, Status Code: {3}",
response.ErrorException,
response.Headers,
response.Content,
response.StatusCode);
}
return response.Data;
}

public class AuthorizePaymentMethodTransactionRequest
{
public string PaymentMethodId { get; set; }
public bool IsRecurringPayment { get; set; }
public CCOverrides CreditCardOverrides { get; set; }
public long MerchantProfileId { get; set; }
public string PayerAccountId { get; set; }
public long Amount { get; set; }
public string CurrencyCode { get; set; }
public string Invoice { get; set; }
}

public class CCOverrides
{
public string ExpirationDate { get; set; }
public string CVV { get; set; }
}

public class CreateTransactionResult
{
public Trans Transaction { get; set; }
}

public class Trans
{
public string AVSCode { get; set; }
public string AuthorizationCode { get; set; }
public decimal CurrencyConversionRate { get; set; }
public long CurrencyConvertedAmount { get; set; }
public resultc ResultCode { get; set; }
public long TransactionHistoryId { get; set; }
public long TransactionId { get; set; }
public string TransactionResult { get; set; }
public string CVVResponseCode { get; set; }
public long GrossAmt { get; set; }
public long NetAmt { get; set; }
public long PerTransFee { get; set; }
public decimal Rate { get; set; }
public long GrossAmtLessNetAmt { get; set; }
public result RequestResult { get; set; }
}

public class resultc
{
public string ResultValue { get; set; }
public string ResultCode { get; set; }
public string ResultMessage { get; set; }
}

public class result
{
public string ResultValue { get; set; }
public string ResultCode { get; set; }
public string ResultMessage { get; set; }
}
}

Response Handling

Request Submission

Response Handling

Request Submission

Response Handling

Request Submission

Response Handling

Request Values

Request Element

Type

Max

Required

Notes

AuthenticationToken

String

100

Authorization

Valid value is a GUID. Value supplied by ProPay. Used to access the API

BillerAccountId

String

16

Authorization

Value supplied by ProPay. Used to identify the correct collection of tokens.

IsRecurringPayment

Boolean

5

Required*

REST ONLY

Valid values are:
true
false

If set to false this transaction will not be marked recurring at the issuer

AchOverrides

Object

-

ACH Only

Used to override the information stored with the ACH PaymentMethodId type

AchOverrides.BankAccountType

String

1

Optional

Valid values are:
Checking
Savings
LoanCredit
GeneralLedger

AchOverrides.SecCode

String

3

Required*

Standard Entry Class Code.  Valid values are:
PPD
CCD
WEB
TEL

*If the PaymentMethodId type is an ACH type this value is required

CreditCardOverrides

Object

-

Optional

Used to override the information stored with the credit card PaymentMethodId type

CreditCardOverrides.Billing

Object

-

Optional

Used to override the Billing information stored with the credit card PaymentMethodId type

CreditCardOverrides.Billing.Address1

String

50

Optional

Used to override the Address1 stored with the PaymentMethodId.

*Max length is 40 for multi-currency transactions.

CreditCardOverrides.Billing.Address2

String

50

Optional

Used to override the Address2 stored with the PaymentMethodId.

*Max length is 40 for multi-currency transactions.

CreditCardOverrides.Billing.Address3

String

50

Optional

Used to override the Address3 stored with the PaymentMethodId.

*Max length is 40 for multi-currency transactions.

CreditCardOverrides.Billing.City

String

25

Optional

Used to override the City stored with the PaymentMethodId

CreditCardOverrides.Billing.Country

String

3

Optional

Used to override the Country stored with the PaymentMethodId

*Must be ISO 3166 standard 3 character country code.

CreditCardOverrides.Billing.Email

String

100

Optional

Used to override the Email address stored with the PaymentMethodId

CreditCardOverrides.Billing.State

String

3

Optional

Used to override the State stored with the PaymentMethodId

CreditCardOverrides.Billing.TelephoneNumber

Integer

20*

Optional

Used to override the Telephone Number stored with the PaymentMethodId

*10 digits for US numbers.

CreditCardOverrides.Billing.ZipCode

String

10

Optional

Used to override the ZipCode stored with the PaymentMethodId

CreditCardOverrides.CVV

String

4

Optional

CVV code.

If submitting the CVV code with this transaction request it must be passed in the CreditCardOverrides Object

*ProtectPay will not store this value.

CreditCardOverrides.ExpirationDate

String

4

Optional

Used to override the Expiration Date stored with the PaymentMethodId

For a credit card these are submitted as 4 digit numeric values MMYY.

CreditCardOverrides.FullName

String

50

Optional

Used to override the Account Name stored with the PaymentMethodId

PayerOverrides

Object

-

Optional

 

PayerOverrides.IpAddress

String

15

Optional

IP address as read from cardholder browser session.

Transaction

Object

-

Required

Contains Transaction Information

*REST passes the transaction values directly and not nested.

Transaction .Amount

Integer

 

Required

The value representing the number of pennies in USD, or the number of [currency] without decimals.

Transaction.Comment1

String

128

Optional

Transaction descriptor. Only passed if supported by the gateway.

Transaction.Comment2

String

128

Optional

Transaction descriptor. Only passed if supported by the gateway.

Transaction.CurrencyCode

String

3

Required

ISO 4217 standard 3 character currency code.

Transaction.Invoice

String

50

Optional

Recommended. Transaction descriptor-only passed if supported by the gateway.

*ProPay gateway rejects duplicates for same invoice #, card # and amount in 1 minute.

Transaction.IsDebtRepayment

Boolean

5

Optional

Valid Values are:
True
False

Only applicable for LegacyProPay and LegacyProPayCan gateways

Defaults to False if not submitted

Transaction.MerchantProfileId

Int(64)

Signed Int(64)

Required

The MerchantProfileId that was created using the supplied credentials for the supplied Gateway that is used to process against this particular gateway

Transaction.PayerAccountId

String

16

Required

This is the ProtectPay ID for the Payer Created and belongs to the BillerID that created it

Transaction.paymentMethodID

GUID

36

Required

This is the ProtectPay ID for the Payment Method, also called a Token

The Payment Method Created Belongs to the PayerId it was Created For

Transaction.Frauddetectors

Object

-

Optional

Please See ProtectPay Appendix for details concerning the FrauddetectorsObject

Frauddetectorss.FrauddetectorProviderName

String

 

Required*

If using Frauddetectors Object this Element is required.

Response Values

Response Element

Type

Notes

RequestResult.ResultValue

String

The Method Response Value;

SUCCESS indicates the method completed;

FAILURE indicates the method call failed and the reason is indicated in the ResultCode and ResultMessage

RequestResult.ResultCode

String

The Method Response Code. See Appendix for possible returned values

RequestResult.ResultMessage

String

The Method Response Message. See Appendix for possible returned Messages

Transaction.AuthorizationCode

String

The auth code supplied by the issuing bank.

*Only returned on a successful transaction

Transaction.AVSCode

String

AVS response produced by gateway

*Only returned if AVS information is supplied and AVS is supported by the gateway.

Transaction.CurrencyConversionRate

Decimal

The rate for currency conversion used for multi-currency transactions

Transaction.CurrencyConvertedAmount

Integer

Gross converted amount of transaction in the number of [currency] without decimals for multi-currency transactions

Transaction.CurrencyConvertedCurrencyCode

String

The currency the transaction was converted to for multi-currency transactions

Transaction.CVVResponseCode

String

 

Transaction.GrossAmt

Integer

Gross amount of transaction of pennies in USD, or the number of [currency] without decimals.

Transaction.GrossAmtLessNetAmt

Integer

Total amount of fees charged; *ProPay Gateway Only

Transaction.NetAmt

Integer

Net amount of transaction after fees charged; *ProPay Gateway Only

Transaction.PerTransFee

Integer

Per transaction fee; *ProPay Gateway Only

Transaction.Rate

Decimal

Percentage fee; *ProPay Gateway Only

Transaction.ResultCode.ResultCode

String

The result code of the transaction request as reported by ProtectPay. See Appendix for possible returned values

Transaction.ResultCode.ResultMessage

String

The result message of the transaction request as reported by ProtectPay. See Appendix for possible returned values

Transaction.ResultCode.ResultValue

String

The result value of the transaction request as reported by the ProtectPay. SUCCESS or FAILURE

Transaction.TransactionHistoryId

String

Unique transaction number assigned by ProtectPay.

Transaction.TransactionId

String

Transaction number assigned by processor (Gateway)

Transaction.TransactionResult

String

Transaction result as reported by processor (Gateway)

How to call this method?

Example Request

Example Response

Implementation Details
Request Submission

Response Handling

Request Submission

Response Handling

Request Submission

Response Handling

Request Submission

Response Handling

Request Values
Response Values
How to call this method?

{SOAP Action}     AuthorizePaymentMethodTransaction
{URL}                   https://xmltestapi.propay.com/protectpay/sps.svc
Example Request

Example Response

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:con="http://propay.com/SPS/contracts" xmlns:typ="http://propay.com/SPS/types" xmlns:prop="http://schemas.datacontract.org/2004/07/ProPay.Contracts.SPS.External" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<con:AuthorizePaymentMethodTransaction>
<con:id>
<typ:AuthenticationToken>MyAuthToken</typ:AuthenticationToken>
<typ:BillerAccountId>MyBillerId</typ:BillerAccountId>
</con:id>
<con:transaction>
<typ:Amount>300</typ:Amount>
<typ:Comment1>Authorize Comment 1</typ:Comment1>
<typ:Comment2>Authorize Comment 2</typ:Comment2>
<typ:CurrencyCode>USD</typ:CurrencyCode>
<typ:Invoice>Test Invoice</typ:Invoice>
<typ:IsDebtRepayment>true</typ:IsDebtRepayment>
<typ:MerchantProfileId>123456</typ:MerchantProfileId>
<typ:PayerAccountId>5823760912097888</typ:PayerAccountId>
</con:transaction>
<con:paymentMethodID>de1ae2bd-c194-437c-ba9a-cb0730bd92d1</con:paymentMethodID>
<con:optionalPaymentInfoOverrides>
<prop:Ach>
<prop:BankAccountType/>
<prop:SecCode/>
</prop:Ach>
<prop:CreditCard>
<prop:Billing>
<typ:Address1>3400 N Ashton Blvd</typ:Address1>
<typ:Address2>Suite 200</typ:Address2>
<typ:Address3/>
<typ:City>Lehi</typ:City>
<typ:Country>USA</typ:Country>
<typ:Email>test@user.com</typ:Email>
<typ:State>UT</typ:State>
<typ:TelephoneNumber>8012223333</typ:TelephoneNumber>
<typ:ZipCode>84043</typ:ZipCode>
</prop:Billing>
<prop:CVV>999</prop:CVV>
<prop:ExpirationDate>1014</prop:ExpirationDate>
<prop:FullName>999</prop:FullName>
</prop:CreditCard>
<prop:Payer>
<prop:IpAddress>127.0.0.1</prop:IpAddress>
</prop:Payer>
</con:optionalPaymentInfoOverrides>
</con:AuthorizePaymentMethodTransaction>
</soapenv:Body>
</soapenv:Envelope>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<AuthorizePaymentMethodTransactionResponse xmlns="http://propay.com/SPS/contracts">
<AuthorizePaymentMethodTransactionResult xmlns:a="http://propay.com/SPS/types" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:RequestResult>
<a:ResultCode>00</a:ResultCode>
<a:ResultMessage/>
<a:ResultValue>SUCCESS</a:ResultValue>
</a:RequestResult>
<a:Transaction>
<a:AVSCode>T</a:AVSCode>
<a:AuthorizationCode>A11111</a:AuthorizationCode>
<a:CurrencyConversionRate>1</a:CurrencyConversionRate>
<a:CurrencyConvertedAmount>300</a:CurrencyConvertedAmount>
<a:CurrencyConvertedCurrencyCode>USD</a:CurrencyConvertedCurrencyCode>
<a:GrossAmt>300</a:GrossAmt>
<a:GrossAmtLessNetAmt>0</GrossAmtLessNetAmt>
<a:NetAmt>0</a:NetAmt>
<a:PerTransFee>0</PerTransFee>
<a:Rate>0</a:Rate><a:ResultCode>
<a:ResultCode>00</a:ResultCode>
<a:ResultMessage/>
<a:ResultValue>SUCCESS</a:ResultValue>
</a:ResultCode>
<a:TransactionHistoryId>7897264</a:TransactionHistoryId>
<a:TransactionId>519</a:TransactionId>
<a:TransactionResult>Success</a:TransactionResult>
</a:Transaction>
</AuthorizePaymentMethodTransactionResult>
</AuthorizePaymentMethodTransactionResponse>
</s:Body>
</s:Envelope>
Implementation Details
Request Submission

Response Handling

Request Submission

Response Handling

Request Submission

Response Handling

Request Submission

Response Handling

Request Values

Request Element

Type

Max

Required

Notes

AuthenticationToken

String

100

Authorization

Valid value is a GUID. Value supplied by ProPay. Used to access the API

BillerAccountId

String

16

Authorization

Value supplied by ProPay. Used to identify the correct collection of tokens.

IsRecurringPayment

Boolean

5

Required*

REST ONLY

Valid values are:
true
false

If set to false this transaction will not be marked recurring at the issuer

AchOverrides

Object

-

ACH Only

Used to override the information stored with the ACH PaymentMethodId type

AchOverrides.BankAccountType

String

1

Optional

Valid values are:
Checking
Savings
LoanCredit
GeneralLedger

AchOverrides.SecCode

String

3

Required*

Standard Entry Class Code.  Valid values are:
PPD
CCD
WEB
TEL

*If the PaymentMethodId type is an ACH type this value is required

CreditCardOverrides

Object

-

Optional

Used to override the information stored with the credit card PaymentMethodId type

CreditCardOverrides.Billing

Object

-

Optional

Used to override the Billing information stored with the credit card PaymentMethodId type

CreditCardOverrides.Billing.Address1

String

50

Optional

Used to override the Address1 stored with the PaymentMethodId.

*Max length is 40 for multi-currency transactions.

CreditCardOverrides.Billing.Address2

String

50

Optional

Used to override the Address2 stored with the PaymentMethodId.

*Max length is 40 for multi-currency transactions.

CreditCardOverrides.Billing.Address3

String

50

Optional

Used to override the Address3 stored with the PaymentMethodId.

*Max length is 40 for multi-currency transactions.

CreditCardOverrides.Billing.City

String

25

Optional

Used to override the City stored with the PaymentMethodId

CreditCardOverrides.Billing.Country

String

3

Optional

Used to override the Country stored with the PaymentMethodId

*Must be ISO 3166 standard 3 character country code.

CreditCardOverrides.Billing.Email

String

100

Optional

Used to override the Email address stored with the PaymentMethodId

CreditCardOverrides.Billing.State

String

3

Optional

Used to override the State stored with the PaymentMethodId

CreditCardOverrides.Billing.TelephoneNumber

Integer

20*

Optional

Used to override the Telephone Number stored with the PaymentMethodId

*10 digits for US numbers.

CreditCardOverrides.Billing.ZipCode

String

10

Optional

Used to override the ZipCode stored with the PaymentMethodId

CreditCardOverrides.CVV

String

4

Optional

CVV code.

If submitting the CVV code with this transaction request it must be passed in the CreditCardOverrides Object

*ProtectPay will not store this value.

CreditCardOverrides.ExpirationDate

String

4

Optional

Used to override the Expiration Date stored with the PaymentMethodId

For a credit card these are submitted as 4 digit numeric values MMYY.

CreditCardOverrides.FullName

String

50

Optional

Used to override the Account Name stored with the PaymentMethodId

PayerOverrides

Object

-

Optional

 

PayerOverrides.IpAddress

String

15

Optional

IP address as read from cardholder browser session.

Transaction

Object

-

Required

Contains Transaction Information

*REST passes the transaction values directly and not nested.

Transaction .Amount

Integer

 

Required

The value representing the number of pennies in USD, or the number of [currency] without decimals.

Transaction.Comment1

String

128

Optional

Transaction descriptor. Only passed if supported by the gateway.

Transaction.Comment2

String

128

Optional

Transaction descriptor. Only passed if supported by the gateway.

Transaction.CurrencyCode

String

3

Required

ISO 4217 standard 3 character currency code.

Transaction.Invoice

String

50

Optional

Recommended. Transaction descriptor-only passed if supported by the gateway.

*ProPay gateway rejects duplicates for same invoice #, card # and amount in 1 minute.

Transaction.IsDebtRepayment

Boolean

5

Optional

Valid Values are:
True
False

Only applicable for LegacyProPay and LegacyProPayCan gateways

Defaults to False if not submitted

Transaction.MerchantProfileId

Int(64)

Signed Int(64)

Required

The MerchantProfileId that was created using the supplied credentials for the supplied Gateway that is used to process against this particular gateway

Transaction.PayerAccountId

String

16

Required

This is the ProtectPay ID for the Payer Created and belongs to the BillerID that created it

Transaction.paymentMethodID

GUID

36

Required

This is the ProtectPay ID for the Payment Method, also called a Token

The Payment Method Created Belongs to the PayerId it was Created For

Transaction.Frauddetectors

Object

-

Optional

Please See ProtectPay Appendix for details concerning the FrauddetectorsObject

Frauddetectorss.FrauddetectorProviderName

String

 

Required*

If using Frauddetectors Object this Element is required.

Response Values

Response Element

Type

Notes

RequestResult.ResultValue

String

The Method Response Value;

SUCCESS indicates the method completed;

FAILURE indicates the method call failed and the reason is indicated in the ResultCode and ResultMessage

RequestResult.ResultCode

String

The Method Response Code. See Appendix for possible returned values

RequestResult.ResultMessage

String

The Method Response Message. See Appendix for possible returned Messages

Transaction.AuthorizationCode

String

The auth code supplied by the issuing bank.

*Only returned on a successful transaction

Transaction.AVSCode

String

AVS response produced by gateway

*Only returned if AVS information is supplied and AVS is supported by the gateway.

Transaction.CurrencyConversionRate

Decimal

The rate for currency conversion used for multi-currency transactions

Transaction.CurrencyConvertedAmount

Integer

Gross converted amount of transaction in the number of [currency] without decimals for multi-currency transactions

Transaction.CurrencyConvertedCurrencyCode

String

The currency the transaction was converted to for multi-currency transactions

Transaction.CVVResponseCode

String

 

Transaction.GrossAmt

Integer

Gross amount of transaction of pennies in USD, or the number of [currency] without decimals.

Transaction.GrossAmtLessNetAmt

Integer

Total amount of fees charged; *ProPay Gateway Only

Transaction.NetAmt

Integer

Net amount of transaction after fees charged; *ProPay Gateway Only

Transaction.PerTransFee

Integer

Per transaction fee; *ProPay Gateway Only

Transaction.Rate

Decimal

Percentage fee; *ProPay Gateway Only

Transaction.ResultCode.ResultCode

String

The result code of the transaction request as reported by ProtectPay. See Appendix for possible returned values

Transaction.ResultCode.ResultMessage

String

The result message of the transaction request as reported by ProtectPay. See Appendix for possible returned values

Transaction.ResultCode.ResultValue

String

The result value of the transaction request as reported by the ProtectPay. SUCCESS or FAILURE

Transaction.TransactionHistoryId

String

Unique transaction number assigned by ProtectPay.

Transaction.TransactionId

String

Transaction number assigned by processor (Gateway)

Transaction.TransactionResult

String

Transaction result as reported by processor (Gateway)