# Virtual Terminal Endpoint
## Flow
```
1. App sends Payment Transaction.
a. If Transaction is Card, account will be the token grabbed from the tokenizer.
-> Call Authorize for ACH (get retref)
-> Call capture (send retref)
b. If Transaction is ACH
-> Call Authorize for ACH
2. Grab resptext
3. Send resptext as TransactionDetail for Transaction log entry.
```
## Service URL and Payload
### Virtual Terminal Transactions View
#### TransactionViewList
##### Endpoint : /api/Transaction/transactionviewlist/{module}/{tenantId}
##### Payload :
```
module : string
tenantId : uniqueidentifier
```
##### Sample :
```
module : VT
tenantId : 778DF26C-1AAB-4F5E-93FD-E4CAE2C1BC39
```
##### Response:
```
[
{
"id": "762a415a-644b-4826-a760-8db9fe44eff8",
"tenantID": "778df26c-1aab-4f5e-93fd-e4cae2c1bc39",
"transactionID": "8e251da9-eee2-4a65-9157-ab7942795655",
"departmentID": "6fafea6e-ce76-44b0-a1da-d7facad251fd",
"departmentName": "Main",
"transactionNumber": "VT2024520BC397576",
"customerID": "00000000-0000-0000-0000-000000000000",
"customerName": "",
"amountPaid": 10,
"transactionStatus": null,
"transactionDate": "2024-05-29T13:51:00"
}
]
```
---
#### GetVirtualTerminalDetail
##### Endpoint : /api/VirtualTerminal/getvirtualterminaldetail
##### Payload:
`Id : Uniqueidentifier (VTID)`
---
#### GenerateOrderID
> This endpoint is to generate the VTNumber
##### Endpoint : /api/Transaction/generateorder
##### Payload :
```
{
"moduleTag": "string",
"tenantID": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
```
###### ModuleTag values:
* VT = Virtual Terminal
* PL = Payment Link
* IN = Invoice
---
### Generic Transaction Log Entry
#### Endpoint : api/Transaction/createtransactionlogentry
#### Payload :
```
{
"tenantID": "uniqueidentifier",
"transactionNumber": "string",
"transactionModule": "string", -- VIRTUALSELL
"transactionStatus": "string", -- success or whatever is the error
"transactionDetail": "string", -- JSON format / resptext
"creator": "uniqueidentifier",
"moduleEntry": "string" -- See below
}
```
#### Sample Payload:
```
{
"tenantID": "778DF26C-1AAB-4F5E-93FD-E4CAE2C1BC39",
"transactionNumber": "12946470889A",
"transactionModule": "VIRTUALTERMINAL",
"transactionStatus": "Approval",
"transactionDetail": "{\"authcode\":\"PPS000\",\"respproc\":\"RPCT\",\"amount\":\"10.00\",\"resptext\":\"Approval\",\"setlstat\":\"Queued for Capture\",\"retref\":\"129464708892\",\"respstat\":\"A\",\"respcode\":\"000\",\"batchid\":\"113\",\"account\":\"9441149619831111\",\"merchid\":\"800000009440\",\"token\":\"9441149619831111\"}",
"creator": "70FD21F1-1880-4E88-ADAF-E8203D3009BA",
"moduleEntry": "{\"DepartmentID\":\"6FAFEA6E-CE76-44B0-A1DA-D7FACAD251FD\",\"VTNumber\":\"VT202458BC396623\",\"VTAmountPaid\":\"10.00\",\"VTData\":\"Approval\"}"
}
```
#### Returns :
`ReceiptNumber -> String`
##### Notes:
* TransactionDetail contains the response from *Capture*.
##### ModuleEntry
* *contains the following:*
* DepartmentID
* VTNumber (See above: GenerateOrderID)
* VTAmountPaid
* VTData *(if there are other data aside from the amount and VT Number such as tax amount, tax rate, upcharges, etc.)*
---
#### CardPointe Gateway Transactions
##### ACH Transaction: api/cardpointe/ACH/Authorize
##### Payload :
```
{
"departmentID": "uniqueidentifier",
"account": "string",
"bankABA": "string",
"accountType": "string",
"amount": decimal(18,2),
"orderID": "string",
"name": "string",
"ecomind": "string" -- Set to E
}
```
---
##### Credit Authorize: api/cardpointe/Credit/Authorize
##### Payload :
```
{
"departmentID": "uniqueidentifier",
"account": "string",
"expiry": "string",
"cvV2": "string",
"amount": decimal,
"currencyCode": "string",
"orderId": "string",
"name": "string",
"address": "string",
"city": "string",
"region": "string",
"country": "string",
"postalCode": "string",
"capture": "string", -- Set to N
"ecomind": "string" -- E by default
}
```
---
##### Credit Capture: api/cardpointe/Credit/Capture
##### Payload :
```
{
"departmentID": "uniqueidentifier",
"retRef": "string"
"amount": decimal
}
```
---