Overview

The OP Payment Web Service is designed to accept the details of a payment transaction and process it in Patriot and through the payment gateway. It accepts the payment information as well as the payment and optional invoice information, processes the request and returns the result.


Behavior

The web service is an ASP.NET web handler that accepts a valid JSON string structured per the details of this documentation and returns a JSON response. Providing the required fields below creates a payment record in Patriot with payment details, processes the payment to the gateway with the information provided in the request and if successful, confirms the payment in Patriot with the transaction details or removes the payment in Patriot. An optional configuration allows the creation of an associated invoice within that the payment applies to.



Current Limitations

The web service cannot:

· process a payment without creating a payment within Patriot.

· create an invoice that has a balance due

· create donations

· update existing payments or invoices

 

Field Name

DataType

Valid Values

Required?

Purpose

IsRecurring

Boolean

True, False

Yes

Indicate if payment is recurring

IsTestMode

Boolean

True, False

Yes

Indicate if payment is being processed in test mode

Amount

Decimal

Decimal value

Yes

Total amount of payment

PayeeType

Char

"P" (Person) or "C" (Chapter)

Yes

Indicate whether it's a Person or Chapter

PaymentMethod

String

"CreditCard" or "ACH"

Yes

Indicate payment method

Amount

Decimal

Decimal value

Yes

Amount to be processed as payment

FirstName

String

Yes

First name of payee

LastName

String

Yes

Last name of payee

Address

String

Yes

Billing address of payee

City

String

Yes

Billing city of payee

State

String

Yes

Billing state of payee

Zip

String

Yes

Billing Zip of payee

Phone

String

Yes

Billing phone number of payee

EmailAddress

String

Yes

Billing email address of payee

Company

String

No (First + Last name will be used)

Billing company of payee

Source

String

Yes

Appears as LastModBy and CreatedBy on Patriot records as a source identifier

Description

String

No

Appears in Note field of Patriot records

SendAcknowledgementEmail

Boolean

True, False

No (default value is False)

If true, will allow the payment gateway to send receipt to customer

MerchantAccountOwner

String

"Fraternity", "Foundation"

Yes

Selects which merchant account to use

AssociatedInvoiceID

Integer

*Return value - Read Only

If transaction succeeds, returns the InvoiceID

NumberOfRecurrences

Integer

> 0

*Yes if IsRecurring = True

RecurrenceFrequency

String

“OneTime”, “Weekly”, “Monthly”, “Quarterly”, “Annually”, “Yearly”

*Yes if IsRecurring = True

Username

String

 

Yes. Must match value in tlkOP_SystemSettings.ProcessPaymentsWebUsername

 

Password

String

Yes. Must match value in tlkOP_SystemSettings.ProcessPaymentsWebPassword

Credit Card Fields

*Required if PaymentMethod = "CreditCard"

CardType

String

“Visa”, “Mastercard”, “American Express”, “Discover”

Yes

NameOnCreditCard

String

Yes

CreditCardNumber

String

Yes

CCVerification

String

3-4 digit number

Yes

CCExpMonth

Integer

2 digit month

Yes

Format: MM

CCExpYear

Integer

4 digit year

Yes

Format: YYYY

 Company

String

 

No

If CC is a business card, the Company will be used if provided. If not provided, the NameOnCreditCard will be used.

ACH Fields

*Required if PaymentMethod = "ACH"

BankName

String

Yes

BankAccountType

String

“Checking”, “Savings”

Yes

BankAccountOwnerType

String

“Personal”, “Business”

Yes

NameOnBankAccount

String

Yes

Bank account owner’s name

BankAccountNumber

String

Valid bank account number

Yes

RoutingNumber

String

Valid routing number

Yes

CheckNumber

String

Yes (if no valid check number is available, pass in a placeholder value)

Payment/Invoice Fields

CreateAssociatedInvoice

Boolean

True, False

Yes

If true, will create an associated invoice with details and apply the payment to it. Note: the current design always creates a $0-balance due invoice.

PersonID

Integer

> 0, must be valid value in Patriot

Yes if the invoice is created for a Person

ChapterID

Integer

> 0, must be valid value in Patriot

Yes if the invoice is created for a Chapter

RegistrationID

Integer

> 0, must be valid value in Patriot

No. Only for reference for use with a convention registration

PostedStatus

Char

"U" (unposted), "H" (Held)

No. Default value is "U" (unposted)

Note

String

Max 1000 chars

No.

Some of the available characters are in use by the service which appends some transaction data into the notes field.

BatchDate

String

MM/DD/YYYY

Yes if different from Today's date

BatchName

String

Max 100 chars

No. Standard default batch names will be applied

InvoiceDueDate

String

MM/DD/YYYY

No. Today’s date will be used as default

Payment/Invoice Detail Fields

ProductID

Integer

> 0, must be valid value in Patriot

Yes

AssociatedPersonID

Integer

> 0, must be valid value in Patriot

Yes if applied to person

AssociatedChapterID

Integer

> 0, must be valid value in Patriot

Yes if applied to chapter

Quantity

Integer

> 0

Yes

ItemCost

Decimal

>= 0

Yes

ItemPaidAmount

Decimal

>= 0

No. Default will be ItemCost

Allows ability for partial payments to be applied per item

ItemDescription

String

Max 200 chars

No

Description on invoice detail

NextExpectedPaymentDate

String

MM/DD/YYYY

No

DetailDueDate

String

MM/DD/YYYY

No

ItemStatus

Char

Must match a value from tlkInvoiceStatus.InvoiceStatus

No

ProductTemplateID

Integer

> 0, must be valid value in Patriot

No

PaymentID

Integer

*Return value - Read Only

InvoiceDetailID

Integer

*Return value - Read Only

Response

*Return Values Read Only

Success

Boolean

True If payment/payment details successfully created in Patriot and payment is successfully processed through gateway

ErrorMessage

String

Present if errors occur. If payment is successfully processed but errors occur creating invoice/invoice details, a value may be present but the Response.Success field may be True

ResponseDescription

String

Description returned from gateway

TransactionID

String

Payment/Transaction ID returned from gateway

PaymentID

Integer

PaymentID of Payment created in Patriot

InvoiceID

Integer

InvoiceID created in Patriot (if requested)

 

 

Sample JSON Request String:

   

{
 "Success": true,
 "InvoiceID": 657,
 "ErrorMessage": "",
 "ResponseDescription": null,
 "TransactionID": "2584163898",
 "PaymentID": 989
}

   

 

Sample JSON Successful Response String:


  

{
 "Success": true,
 "InvoiceID": 657,
 "ErrorMessage": "",
 "ResponseDescription": null,
 "TransactionID": "2584163898",
 "PaymentID": 989
}

 

Sample JSON Failed Response String:

 

{
 "Success": false,
 "ErrorMessage": "Credit Card Type does not match card number",
 "ResponseDescription": null,
 "TransactionID": 0,
 "PaymentID": 0
}

 

 

Sample JavaScript implementation:

 

 function buildRequest() {
 var request = {
 "EmailAddress": "[email protected]",
 "PaymentMethod": "CreditCard",
 "PostedStatus": "U",
 "RegistrationID": 12345,
 "SendAcknowledgmentEmail": true,
 "Amount": 8.99,
                "PersonID": 85001,
 "PayeeType": "P",
 "CreditCardNumber": "4111111111111111",
 "City": "Indianapolis",
 "State": "IN",
                "Username": "v1QAPIxpIhO",
 "NameOnCreditCard": "Patriot Testmember",
 "Source": "OP: ProcessPaymentsWeb",
 "CCExpYear": 2018,
 "CardType": "Visa",
 "MerchantAccountOwner": "Fraternity",
 "IsTestMode": true,
 "Company": "Patriot Software",
 "PaymentDetails": [
 {
 "AssociatedChapterID": 123,
 "AssociatedPersonID": 123,
 "Quantity": 1,
 "ProductID": 1,
 "NextExpectedPaymentDate": "1/1/2014",
 "ItemDescription": "My Item",
 "ProductTemplateID": 12,
 "ItemCost": 1.37,
 "ItemPaidAmount": 22.00,
 "ItemStatus": "D",
 "DetailDueDate": "1/3/2014"
 }
 ],
 "Phone": "(317)-573-7199",
 "FirstName": "Patriot",
 "Zip": "46679",
 "InvoiceDueDate": "2/23/2015",
                "Password": "y0kteTVJx3f",
 "CCExpMonth": 9,
 "Address": "1899 E 96th Street",
 "Description": "This payment was made through the OP in the payment module",
 "Note": "You should see this extra note in the Payment and Invoice Note fields",
 "BatchName": "Online CC Payment Batch",
 "ChapterID": 1203,
 "CreateAssociatedInvoice": true,
 "LastName": "Testmember 13",
 "CCVerification": 790
 }
 return request;
 }
 
 function submitRequest() {
 var request = buildRequest();
 
 var submitUrl = "https://myofficerportal.org/WebServices/ProcessPaymentsWeb.ashx";
 $.ajax({
 type: "POST",
 async: false,
 url: submitUrl,
 cache: false,
 processData: false,
 data: JSON.stringify(request),
 contentType: "application/json; charset=utf-8",
 dataType: "json",
 success: function (result) {
 console.dir(result);
 },
 error: function (xhr, status, error) {
 var err = eval("(" + xhr.responseText + ")");
 if (!suppressErrorMessage) { console.dir(err.Message); }
 }
 });
 }