GatewayAPIService
Welcome to the SOAP-functions for accessing the BFC Gateway System. BFC Gateway does support more than these functions listed here. These functions will return an XML document or a JSON document (if the return type is NOT specifically an XMLDocument). To return a json document, set the QueryString parameter "output" to json. For example: https://gateway.bfc-usa.com/api/gateway.asmx?output=json
The following operations are supported. For a formal definition, please review the Service Description.
-
AddRecurringPaymentJson
Sends a request to the Gateway service for adding a recurring payment schedule, returning an XmlNode response.A JSON add object
{
"loginId": "YourLoginId",
"password": "YourPassword",
"community": "{Optional; string value to allow other merchant accounts access to this recurring record}",
"customer": {
"id": "{BFC Customer Id record - all that is needed to link this recurring to the customer record or fill in the next section to create a new customer}",
"merchantCustomerId": "{the merchant customer Id record - all that is needed to link this recurring to the customer record or fill in the next section to create a new customer}",
"firstName": "John",
"lastName": "Smith",
"email1": "jsmith@bfc-usa.com",
"email1Type": "Work",
"phone1": "469-555-1234",
"phone1type": "mobile",
"phone2": "469-555-1234",
"phone2type": "work",
"phone3": "469-555-1234",
"phone3type": "home",
"phone4": "469-555-1234",
"phone4type": "cell",
"address{1-4}": {
"name": "John's House",
"company": "",
"street1": "2245 Keller Way.",
"street2": "360",
"city": "Carrollton",
"state": "TX",
"zipCode": "75006",
"country": "US",
"phone": "469-555-1234",
"fax": "",
"email": "jsmith@gmail.com",
"type": "{Work|Home|Billing|Shipping}",
},
"initialAmount (not required if using PlanId)": "1.00",
"recurringAmount (not required if using PlanId)": "2.00",
"finalAmount (not required if using PlanId)": "3.00",
"nextPaymentDate (not required if using PlanId)": "{YYYY-MM-DDThh:mm:ss}",
"wallet": {
"walletId": "{Guid Wallet ID} - use if you already have a wallet created",
"iWalletId": "{the W#####} - use if you already have a wallet created, otherwise, send the next section of data to create a new wallet",
"creditCard": {
"cardType": "Visa/MasterCard/AmericanExpress/JCB/Diners",
"cardNumber": "4012000033330026",
"expirationDate": "2018-12",
"zipCode": "75006",
},
"electronicCheck": {
"accountType": "Checking|Savings",
"accountNumber": "{upto 19 digits}",
"routingNumber": "{9-digit number}",
"bankName": "{Name of the Bank}",
},
},
"schedule (not required if using PlanId)": {
"type": "weekly/monthly/yearly/bi-monthly/bi-weekly/firstAndFifteenth/specificDates",
"everyWeek|everyMonth": "0/1",
"days": "0,1,0,0,0,0,0,...",
},
"totalNumberOfPayments": "How many payments will this series require of the card holder? Number should be greater than 0",
"paymentsRemaining": "How many payments remain in the series - this should typically start with the same value as totalNumberOfPayments and is updated as payments are made.",
"referenceNumber": "A unique reference number to help identify the recurring series",
"notes": "Any notes about the recurring series, customer, wallet, etc",
"applicationName": "The name of the application calling this method",
"description": "A description of the Recurring Series",
"status": "(Edit): Disabled, Active, Completed, FailedLastPayment, PendingCustomerApproval, Paused",
"initialTransactionId": "The BFC RequestId of the initial transactions that was performed for the recurring series",
"planId": "The BFC specified number for the recurring plan (Add, Edit only links a plan to the recurring record - it does not modify the schedule, amounts, etc) ",
} -
AuthorizeACH
Sends an ACH transaction authorization request to the Gateway service, returning an XmlNode response. -
AuthorizeCard
Sends a card authorization request to the Gateway service, returning an XmlNode response. -
AuthorizeCard
MessageName="AuthorizeCardInternational"
Sends a card authorization request to the Gateway service, returning an XmlNode response. -
AuthorizeCard
MessageName="AuthorizeCardNoAddress"
Sends a card authorization request to the Gateway service, returning an XmlNode response. -
AuthorizeCard
MessageName="AuthorizeCardNoAddressOverrideTrackData"
Sends a card authorization request to the Gateway service without address data and overrides, returning an XmlNode response. -
AuthorizeCard
MessageName="AuthorizeCardNoAddressTrackData"
Sends a card authorization request to the Gateway service without address data and with overrides, returning an XmlNode response. -
AuthorizeCard
MessageName="AuthorizeCardNoEmail"
Sends a card authorization request to the Gateway service, returning an XmlNode response. -
AuthorizeCard
MessageName="AuthorizeCardNoOverride"
Sends a card authorization request to the Gateway service without overrides, returning an XmlNode response. -
AuthorizeCard
MessageName="AuthorizeCardNoOverrideAddressTrackDataSecurityCode"
Sends a card authorization request to the Gateway service without overrides, returning an XmlNode response. -
AuthorizeCard
MessageName="AuthorizeCardNoOverrideTrackData"
Sends a card authorization request to the Gateway service without overrides, returning an XmlNode response. -
AuthorizeCard
MessageName="AuthorizeCardNoTrackData"
Sends a card authorization request to the Gateway service, returning an XmlNode response. -
CancelRecurringPayment
Sends a request to the Gateway service for cancelling an existing recurring payment schedule, returning an XmlNode responseJSON example:{
"loginId": "login",
"password": "password",
"recurringId": "GUID returned during add or search operation",
} -
CaptureTransaction
Sends a card transaction capture request to the Gateway service, returning an XmlNode response. -
CardTypeToString
Returns the text description of the Card Type. -
CreateToken
Creates a multi-use token for submitting transactions to Gateway through the ProcessGatewayTransaction function.
Token Request JSON element:{
The returned data will be a JSON Object with the following:
"GatewayLogin": "The Gateway Login for the merchant",
"GatewayPassword": "The Gateway Password for the merchant",
"SharedSecret": "A random secret value for this token processing (to reduce replay attacks)",
}{
"success": "true or false",
"token": "The Guid-value of token to use for future requests",
"error": "If not a success, the system will tell you why it was not a ccess",
} -
CreditCardJson
Submits a credit card credit to the account and queue into the settlement queue. If you have the data already present, you can provide the additional information to speed in the authorization.- Wallet Id or iWalletId: If you have this, the card and the billing address are present in the wallet and you don't need to provide anything else
- Keyed entered: card number, card type, expiration date, (optional): security code
- Track entered: provide Track 2 data and the system will determine the card number, card type and expiration date
- EMV: EMV Tag list, EMV Serial Number and Kernel Version; the system will pull the card number from tag 57, card type (from the card number), expiration date (from the track equivalency)
{
Provide either LoginId & Password or the token
"loginId*": "YourLoginId",
"password*": "YourPassword",
"community": "{optional string-value, defines a shared key among merchants to search against to find records}", "walletId": "{GUID of the wallet - only needed for Edit, Remove, or GetWallet and GetWalletItem are used - this value or the iWallet}",
"iWalletId": "{iWalletId: W##### - only needed for Edit, Remove, or GetWallet and GetWalletItem are used - this value of the walletId}", "cardNumber" : "{15-19 digit card number}",
"cardType" : "{Visa|MasterCard|Discover|AmericanExpress|DinersClub|JCB|ChinaUnionPay|Maestro|Checking|Savings|Cash|etc...}",
"expirationDate" : "{YYYY-mm}",
"securityCode" : "3- or 4-digit security code", "track2" : "{base64-encoded track 2 data}", "emv" : "{base64-encoded Raw TLV or Ingenico Style TLV}",
"emvDeviceSerial" : "{string; serial number of the EMV hardware the collected the data}",
"emvKernelVersion" : "{the EMV Kernel version certified for processing}", "amount" : "Amount to credit back to the account",
"referenceNumber": "Reference number that would be displayed on the statement",
"companyName": "Company name for the card",
"nameOnAccount": "Name on the Card or the account holder",
"address1": "{string: Billing address line 1",
"address2": "{string: Billing Address line 2}",
"city": "{string: Billing Address city}",
"state": "{string: Billing Address state as a US 2-character abbreviation}",
"province": "{string: Billing address province for non-US billing address}",
"postalCode": "{string: the US Zip Code (5, or 5+4 digits) or the Non-US Postal Code}",
"country": "{string, 2-character ISO country}",
"ipAddress": "{to assist for the fraud detection, provide the IP address of the customer that provides the info}", "overrideIP": "{optional: true (ignore IP checks) | false (default, do IP-based fraud checks)}",
"overrideAddress": "{optional: true (ignore AVS response validation for address) | false (default, require matching AVS)}",
"overrideLocation": "{optional: true (ignore AVS response validation for address) | false (default, require matching AVS)}",
"overrideSecurityCode": "{optional: true (ignore CVV2 response validation for Security Code) | false (default, require matching CVV2)}",
} -
CustomerJson
Sends a request to the Gateway service to add, edit, search or delete a Customer record to the given merchantJSON Format (*=required, don't include * in JSON):{"loginId*": "{loginid}",
"password*": "{password}",
"community": "{optional; defines a common community value that allows other merchants to find and use this record}",
"operation": "{save (adds when no Customer Id value is provided, edit when BFC Customer Id provided), lookup (requires BFC Customer Id), search, delete, summary (returns a total number of customers in the system)}",
"customer": {
"customerId": (big int of the BFC Customer ID record for lookup or edit),
"merchantCustomerId": "Abc - defines the merchant's own value for the customer to link the systems together",
"prefix": "Mr",
"firstName": "Jim",
"middleName": "John",
"lastName": "Jones",
"suffix": "II",
"companyName": "Jones, Inc.",
"displayAs": "Jim Jones",
"note": "Note regarding customer can be placed here",
"email1": "jones@email.com",
"email1Type": "Work",
"email2": "jones@personalemail.com",
"email2Type": "Personal",
"email3": "joneswork2@email.com",
"email3Type": "Work",
"phone1": "469-555-5555",
"phone1type": "{Work|Home|Mobile|Fax|Pager|Business}",
"phone2": "469-555-5555",
"phone2type": "{Work|Home|Mobile|Fax|Pager|Business}",
"phone3": "+63-1-4695 5555",
"phone3type": "{Work|Home|Mobile|Fax|Pager|Business}",
"phone4": "469-555-5555 x 123",
"phone4type": "{Work|Home|Mobile|Fax|Pager|Business}",
"webSite": "{url of web site}",
"birthday": "{YYYY-MM-DDThh:mm:ss}",
"anniversary": "{YYYY-MM-DDThh:mm:ss}",
"gender": "{1-character representation; M=Male, F=Female, etc}",
"address1": {
"name": "Jim's House",
"company": "Jones, Inc.",
"street1": "123 Main St.",
"street2": "932",
"city": "Prosper",
"state": "TX",
"zipCode": "75078",
"country": "US",
"phone": "469-555-5555",
"fax": "",
"email": "jones@email.com",
}, "address1Type": "{Home|Work}"
"address2": { "name": "Work",
"company": "BFC",
"street1": "PO Box 111757",
"street2": "",
"city": "Carrollton",
"province": "TX",
"postalCode": "75011",
"country": "US",
},"address2Type": "{Home|Work}"
"address3": { "name": "Work",
"company": "BFC",
"street1": "PO Box 111757",
"street2": "",
"city": "Carrollton",
"territory": "TX",
"postalCode": "75011",
"country": "US",
},"address3Type": "{Home|Work}"
"address4": { "name": "Work",
"company": "BFC",
"street1": "PO Box 111757",
"street2": "",
"city": "Carrollton",
"state": "TX",
"zipCode": "75011",
"country": "US",
"phone": "214-555-5555",
"fax": "",
"email": "jones@email.com",
},"address4Type": "{Home|Work}"
}} -
DebitCard
Sends a card debit request to the Gateway service, returning an XmlNode response. -
DebitCard
MessageName="DebitCardInternational"
Sends a card debit request to the Gateway service, returning an XmlNode response. -
DebitCardJson
Submits a credit card for authorization and queue into the settlement queue. If you have the data already present, you can provide the additional information to speed in the authorization.- Wallet Id or iWalletId: If you have this, the card and the billing address are present in the wallet and you don't need to provide anything else
- Keyed entered: card number, card type, expiration date, (optional): security code
- Track entered: provide Track 2 data and the system will determine the card number, card type and expiration date
- EMV: EMV Tag list, EMV Serial Number and Kernel Version; the system will pull the card number from tag 57, card type (from the card number), expiration date (from the track equivalency)
{
Provide either LoginId & Password or the token
"loginId*": "YourLoginId",
"password*": "YourPassword",
"community": "{optional string-value, defines a shared key among merchants to search against to find records}", "walletId": "{GUID of the wallet (use this or the iWalletId when processing a transaction with just the wallet)}",
"iWalletId": "{iWalletId: W##### (use this or the walletId when processing a transaction with just the wallet)}", "cardNumber" : "{15-19 digit card number}",
"cardType" : "{Visa|MasterCard|Discover|AmericanExpress|DinersClub|JCB|ChinaUnionPay|Maestro|Checking|Savings|Cash|etc...}",
"expirationDate" : "{YYYY-mm}",
"securityCode" : "3- or 4-digit security code", "track2" : "{base64-encoded track 2 data}", "emv" : "{base64-encoded Raw TLV or Ingenico Style TLV}",
"emvDeviceSerial" : "{string; serial number of the EMV hardware the collected the data}",
"emvKernelVersion" : "{the EMV Kernel version certified for processing}", "amount" : "Amount to authorize",
"referenceNumber": "Reference number that would be displayed on the statement",
"companyName": "Company name for the card",
"nameOnAccount": "Name on the Card or the account holder",
"address1": "{string: Billing address line 1",
"address2": "{string: Billing Address line 2}",
"city": "{string: Billing Address city}",
"state": "{string: Billing Address state as a US 2-character abbreviation}",
"province": "{string: Billing address province for non-US billing address}",
"postalCode": "{string: the US Zip Code (5, or 5+4 digits) or the Non-US Postal Code}",
"country": "{string, 2-character ISO country}",
"ipAddress": "{to assist for the fraud detection, provide the IP address of the customer that provides the info}", "overrideIP": "{optional: true (ignore IP checks) | false (default, do IP-based fraud checks)}",
"overrideAddress": "{optional: true (ignore AVS response validation for address) | false (default, require matching AVS)}",
"overrideLocation": "{optional: true (ignore AVS response validation for address) | false (default, require matching AVS)}",
"overrideSecurityCode": "{optional: true (ignore CVV2 response validation for Security Code) | false (default, require matching CVV2)}",
} -
DebitCard
MessageName="DebitCardNoEmail"
Sends a card debit request to the Gateway service without an email address, returning an XmlNode response. -
DebitCardWithWallet
Sends a card debit request to the Gateway service using a Customer Wallet, returning an XmlNode response. -
DebitCash
Send a cash debit transaction to Gateway -
DebitCheck
Send a cash debit transaction to Gateway -
DebitFinance
Send a cash debit transaction to Gateway -
DeleteCustomer
Sends a request to the Gateway service to delete a customer with the specified Customer IdJSON Format:{
"loginId": "{loginid}",
"password": "{password}",
"customerId": "{numeric customer Id}"
} -
EditRecurringPayment
Sends request to the Gateway service for editing an existing recurring payment schedule, returning an XmlNode response. -
EditRecurringPaymentJson
Sends a request to the Gateway service for editing a recurring payment schedule, returning an XmlNode response.See the AddRecurringPaymentJson function for details on the JSON structure
Add to the top of the JSON, just after the password field, the following to edit the existing recurring item:
"recurringId":"{GUID value returned from Add operation or search operation}" -
GetCardTypes
Returns the Card Types available using the Gateway service. -
GetCustomerJson
Sends a request to the Gateway service for retrieving the customer based on the Customer Id returned during the AddCustomerJson operation or from the search results.Example JSON:{"loginId": "{loginid}","password": "{password}","id": "{numeric customer Id}"}
-
GetExtendedTransactionInfo
Gets extended information about a given transaction if stored. -
GetProvinceList
Returns a string response containing the provinces available for a specific Country (2-character ISO code) for use with the Gateway service. -
GetRecurringPaymentHistoryJson
Sends a request to the Gateway service for retrieving the recurring history based on recurring and/or walletid and a date range
A JSON search filter object
Example json
{
"loginId": "YourLoginId",
"password": "YourPassword",
"community": "{Optional; string value to allow other merchant accounts access to this recurring record}",
"recurringId": "(Optional) Guid - The recurring Id of a specific recurring series to find",
}
-
GetResponse
Look up the response XML for the given request -
GetTokenToTerminal
Stores the necessary data and returns a token to access the Embedded Browser Terminal application -
GetTokenTransactions
Retrieves the transaction data for any transactions that have been run by the specified BFC TokenId; GUID. -
KeyValueGetBinary
Gets a specific key from the database returning the binary value as a Base64 string (UNICODE).
token = Guid-based token of the value
key = string(50) of key-value pair
-
KeyValueGetString
Gets a specific key from the database returning the text value.
token = Guid-based token of the value
key = string(50) of key-value pair -
KeyValueSetBinary
Saves a specific key/binary value (base64 encoded) pair to the database. Return true/false if it saved.
token = Guid of token
key = string(50)
value=base64 string of binary
encryptIt = true/false to tell if we should encrypt the data for storage in database
publicKey = string(50)
description=description of the key-value set -
KeyValueSetText
Saves a specific key/string value pair to the database. Returns true/false if it saved.
token = Guid of token
key = string(50)
value=string of key-value pair
encryptIt = true/false to tell if we should encrypt the data for storage in database
publicKey = string(50)
description=description of the key-value set -
LookupCountries
Returns a XML-formatted string response containing the countries available for use with the Gateway service. -
LookupTransaction
Get a specific transaction from the transactionId -
ProcessGatewayTransaction
Processes a Gateway Request based on having an authenticated tokenToken parameter JSON format:{
"token": "the authenticated token (Guid in string format)",
"timeStamp": "the long of the time stamp from the epoch 1-1-1970 (should be a big number)",
"hash": "SHA256 hash of RequestType+SubRequstType+Token+TimeStamp+SharedKey",
} -
QueryCustomersJson
Sends a request to the Gateway service for retrieving customers based on specific/optional parameters. The JSON is the same as the AddCustomerJson function but the address, email and phone will search across all fields in the database using just a single entry. For example, a phone number search can be provided in Phone1 field and it will search Phone1, Phone2, Phone3 and Phone4 fields. Email1 will search Email1, Email2 and Email3 fields. Use % to do a partial search in different fields.Search for a specific customer record using the "id" json value can be added to the JSON object just after the password field. -
QueryTransactions
Sends a request to the Gateway service for retrieving transaction based on specific/optional parameters. Requires Utility Permission in Gateway. Return an XML document with the resultsJSON format:{
"loginId": "YourLoginId",
"password": "YourPassword",
"queryType": "{Journal|Transaction|Batch, default: Journal}",
"includeMerchantsInGroup": "{true|false}",
"startDate": "YYYY-MM-DDThh:mm:ss",
"endDate": "YYYY-MM-DDThh:mm:ss",
"transactionType": "{Verify|Authorize|Void|Capture|Refund|Debit|Credit|CloseBatch}",
"journalId": "{numeric id of the journal entry}",
"paymentMethod": "{ElectronicCheck|CreditCard|Generic}",
"accountType": "{Visa|MasterCard|Discover|AmericanExpress|DinersClub|JCB|ChinaUnionPay|Maestro|Checking|Savings|Cash|etc...}",
"accountTail": "{Last 4 digits of the account number}",
"nameOnAccount": "{Partial name or full name. Use % to make it a wildcard}",
"referenceNumber": "ReferenceNumber",
"customerId": "{numeric id of the customer}",
"merchantCustomerId": "{merchant's internal customer Id value}",
"amount": "0.00",
"moneySearchSign": "{One of these: =,>,<,<=, >=}",
"authCode": "{typically 6-characters, the response code from the processor}",
"settledOnly": "{true|false to return only those acknowledged as settled}",
"status": "{short of the binary gateway internal status of transaction, only for QueryType=Transaction}",
"utcOffset": "{decimal adjustment from UTC for results, only or QueryType=Transaction}",
"maxRows": "{5000 = default}",
} -
QueryTransactionsJson
Sends a request to the Gateway service for retrieving transaction based on specific/optional parameters. Requires Utility Permission in Gateway. Returns JSON object of transaction data.JSON input format:{
JSON output format:
Provide either LoginId & Password or Token ID
"loginId": "YourLoginId",
"password": "YourPassword",
"token": "tokenId",
"queryType": "{Journal|Transaction|Batch, default: Journal}",
"includeMerchantsInGroup": "{true|false}",
"startDate": "YYYY-MM-DDThh:mm:ss",
"endDate": "YYYY-MM-DDThh:mm:ss",
"transactionType": "{Verify|Authorize|Void|Capture|Refund|Debit|Credit|CloseBatch}",
"journalId": "{numeric id of the journal entry}",
"paymentMethod": "{ElectronicCheck|CreditCard|Generic}",
"accountType": "{Visa|MasterCard|Discover|AmericanExpress|DinersClub|JCB|ChinaUnionPay|Maestro|Checking|Savings|Cash|etc...}",
"accountTail": "{Last 4 digits of the account number}",
"nameOnAccount": "{Partial name or full name. Use % to make it a wildcard}",
"referenceNumber": "ReferenceNumber",
"customerId": "{numeric id of the customer, QueryType=Journal}",
"merchantCustomerId": "{merchant's internal customer Id value, QueryType=Journal}",
"amount": "0.00",
"moneySearchSign": "{One of these: =,<,>,<=,>=, QueryType=Journal}",
"authCode": "{typically 6-characters, the response code from the processor, QueryType=Journal}",
"settledOnly": "{true|false to return only those acknowledged as settled, QuertyType=Journal}",
"status": "{short of the binary gateway internal status of transaction, only for QueryType=Transaction}",
"utcOffset": "{decimal adjustment from UTC for results, only or QueryType=Transaction}",
"maxRows": "{5000 = default}",
}{ "Response": { "@ID": "{Query GUID}", "Merchant": "{Merchant Name}", "Status": "{Result of Query}", "Transaction": { "Success": "{true|false}", "Transactions": { "Transaction": [{ "@LoginId": "{merchant login of the transaction}", "@GroupMerchantId": "{Group ID#}", "@MerchantAccountNumber": "{Merchant #}", "@MerchantTerminalID": "{Terminal#}", "JournalId": "{Journal Int #}", "RequestId": "{GUID of original Transaction}", "ParentTransactionId": "{GUID of parent transaction ID}", "TransactionDate": "{Date, in UTC as 2017-08-07T20:49:39Z}", "TransactionType": "{Transaction Type: Debit|Authorize|Void}", "NameOnAccount": {Name on account or null if not provided}, "PaymentMethod": "{ElectronicCheck|CreditCard|Generic}", "AccountType": "{Visa|MasterCard|Discover|AmericanExpress|DinersClub|JCB|ChinaUnionPay|Maestro|Checking|Savings|Cash|etc...}", "AccountTail": "{Last 4 digits of the account number}", "ReferenceNumber": "{Reference Number from original authorization}", "CustomerId": {Int ID of Customer number if provided}, "MerchantCustomerId": {varchar of Customer ID from Merchant's Database}, "SubTotal": "{$.$$}", "Tax": "{$.$$}", "Tip": "{$.$$}", "TotalAmount": "{$.$$}", "Result": "{Approved|Declined}", "AuthCode": "{Auth Code}", "TraceNumber": "{Transaction Trace Number}", "SettledDate": {null|settlement date in UTC}, "BatchId": {GUID of the batch ID; future: expanded to include settlement date of batch} }]} } } }
-
RecurringPlanJson
Creates, edits or search for a recurring plan (a plan is a common recurring schedule for new recurring transactions):{"loginId*": "{loginid}",
"password*": "{password}",
"community": "{optional; defines a common community value that allows other merchants to find and use this record}",
"operation": "{add, edit, search}",
"planId": (for edit and search), the numeric identifier of the recurring plan,
"planName": "Name of the plan - this could be a recurring promo code, etc",
"planDescription": "Provides a more details decription of this plan (not available in the search operation)",
"recurringAmount": "The amount that will charged on a recurring basis",
"setupAmount": "The amount that will be charged when the recurring schedule is first setup.",
"finalAmount": "The amount of the last transactions for the recurring schedule",
"recurringPeriod": "One of the following: Monthly, Weekly, BiMonthly, Yearly, BiWeekly, FirstAndFifteenth, SpecificDays",
"numberOfBillingCycles": "How many recurring transactions should occur; -1 will mean infinite; logic defines the spot point at 0",
"schedule": "Schedule in JSON format - see the add recurring function to define a recurring schedule (not available in the search operation)",
"waitDaysBeforeFirstPayment": "How many days should the system wait before charging the setup amount",
"remindDaysBeforePayment": "How many days ahead of the next billing date should the system send an email to the customer",
"processOnHolidays": "true/false",
"shiftBeforeOrAfterHoliday": "if you are not to process on holidays, do you move forward(1) or before the holiday(-1)",
} -
ReverseTransaction
Sends a card transaction reversal request to the Gateway service, returning an XmlNode response. -
SearchRecurringItemsJson
Sends a request to the Gateway service for retrieving the recurring history based on recurring and/or walletid and a date range
A JSON search filter object
Example json
{
"loginId": "YourLoginId",
"password": "YourPassword",
"community": "{Optional; string value to allow other merchant accounts access to this recurring record}",
"merchantId": "(optional) Guid - The BFC Merchant Id to search within",
"recurringId": "(Optional) Guid - The recurring Id of a specific recurring series to find",
"walletId": "(Optional) Guid - The wallet Id of a specific set of recurring items to find",
"iWalletId": "(Optional) W##### - The wallet Id of a specific set of recurring items to find",
"accountLast4": "(Optional) int - Last 4 digits of the card number",
"nameOnAccount": "(Optional) string - Name on Account",
"expiredCardsOnly": "(Optional) Boolean - returns only recurring items with cards expiring in the next 2 months"
"customerId": "(Optional) Int - The customer Id of a BFC customer",
"merchantCustomerId" : "(Optional) string - the merchant customer ID to search for",
"referenceNumber": "(Optional) String - The reference number used when the series was created",
"recurringAmount": { "min":"(Optional) Decimal - The minimum recurring amount to search for",
"max":"(Optional) Decimal - The maximum recurring amount to search for",
"exact":"(Optional) Decimal - The exact recurring amount to search for"},
"initialAmount": { "min":"(Optional) Decimal - The minimum amount of the initial transaction when a series was first created",
"max": "(Optional) Decimal - The maximum amount of the initial transaction when a series was first created",
"exact": "(Optional) Decimal - The exact amount of the initial transaction when a series was first created"},
"createdOnDate": { "min":"(Optional) Date - The minimum date of the recurring payment was made",
"max": "(Optional) Date - The maximum date of the recurring payment was made",
"exact": "(Optional) Date - The date of the recurring payment was made"},
"lastPayOnDate" : { "min": "(Optional) Date - The minimum date of the recurring payment was made",
"max": "(Optional) Date - The maximum date of the recurring payment was made",
"exact": "(Optional) Date - The date of the recurring payment was made"},
"nextPayDate": { "min": "(Optional) Date - The minimum date of the recurring payment was made",
"max": "(Optional) Date - The maximum date of the recurring payment was made",
"exact": "(Optional) Date - The date of the recurring payment was made"},
}
-
SearchWallets
Sends a request to the Gateway service for retrieving wallets based on search parameters (most are optional except the login details). Requires Wallet Permission in Gateway. Returns JSON object of wallet data.JSON input format:{
JSON output format:
Provide either LoginId & Password or Token ID
"loginId": "YourLoginId",
"password": "YourPassword",
"community": "{optional string-value, defines a shared key among merchants to search against to find records}",
"token": "tokenId",
"walletType": "{CreditCard|ACH, required}",
"includeFullCardNumber": "{true|false}",
"nickName": "{string with * as wildcard; nick name of the wallet}",
"customerId": "{string: merchant customer id}",
"iCustomerId": "{long: Gateway system iCustomer Id}",
"ipAddress": "{string}",
"walletId": "{GUID of the wallet}",
"iWalletId": "{iWalletId: W#####}",
"parentWalletId": "{GUID of parent wallet id}",
"applicationId": "{GUID of Application Id}",
"customerName": "{Partial name or full name. Use * to make it a wildcard}",
"company": "{sting:company name}",
"address1": "{string}",
"address2": "{string}",
"city": "{string}",
"state": "{string}",
"zipCode": "{zip code for the wallet}",
"phone": "{string}",
"email": "{email}",
"nameOnAccount": "{string: Name on Account}",
"cardType": "{Visa|MasterCard|Discover|AmericanExpress|DinersClub|JCB|ChinaUnionPay|Maestro|Checking|Savings|Cash|etc...}",
"cardNumber": "{string with partial search character as *}",
"expiration": "{YYYY-mm}",
"expiresBy": "{date MM/dd/yyyy}",
"accountType": "{Checking|Savings}",
"accountNumber": "{number up to 17 digits}",
"routingNumber": "{ABA with 9 digits}",
"bankName": "{number up to 17 digits}",
}{ "Response": { "@ID": "{Query GUID}", "Merchant": "{Merchant Name}", "Status": "{Result of Query}", "WalletOperation": { "Success": "{true|false}", "WalletItems": { "WalletItem": [{ "Community": "{string - if this wallet has a community, it will return the string value for it}", "WalletID": "{GUID}", "iWalletId": "{W######}", "ApplicationID": "{GUID}", "NickName": "{Wallet Nick Name}", "SecretQuestion": "{SecretQuestion}", "SecretAnswer": "{Encrypted secret answer}", "Customer": [{ "@ID":"{Merchant's customer ID}", "@BFCCustID":"{iCustomer ID}", "Address": [{ "Street1": "{String}", "Street2": {string}, "City": {string}, "State": {string}, "ZipCode": {string}, "Email": {string}}]}] "Payment": [{ "NameOnAccount": "{String}", "CreditCard": [{ "CardType":"{string}", "CardNumber":"{string}", "Expiration": {string}}]}] "ElectronicCheck": [{ "AccountType":"{string}", "AccountNumber":"{string}", "RoutingNumber":"{string}", "BankName":"{string}"}] }]} } } }
-
SendEmailReceipt
Sends an email receipt used by mobile devices -
SendQuickPointEmailReceipt
Sends an email receipt used by mobile devices -
StoreExtendedTransactionInfo
Stores extended information about a given transaction, such as the location of the transaction and the customer signature. -
TokenExpire
Marks the token as complete and will disallow any further transactional operations with this token. Returns true if the token has been removed, false if there was an error. -
ValidateAddress
Sends an address validation request to the Gateway service, returning an XmlNode response. -
ValidateCardNumber
Sends a card number validation request to the Gateway service, returning an XmlNode response. -
ValidateCardNumberCVV
Sends a card number with CVV validation request to the Gateway service, returning an XmlNode response. -
ValidateEmailAddress
Sends an email validation request to the Gateway service, returning an XmlNode response.emailAddress: the email address to validate
verifyDomain: true/false, looks up the DNS MX record to see if there is an email server that can receive email.
verifyMailBox: future potential feature to determine if an email was bounced or not -
ValidateInternationalAddress
Sends an address validation request to the Gateway service, returning an XmlNode response. -
ValidatePhoneNumber
Sends a phone number validation request to the Gateway service, returning an XmlNode response with success/failure and detected area code to state mapping details.phoneNumber: the digits with the formatting; if US, area code + 7 digits with or without formatting characters
state: what state did the customer say this phone number is from
country: 2-character ISO code of the country associated with the phone number. -
ValidatePhoneNumberNoGeo
Sends a phone number validation request with no geographical information to the Gateway service, returning an XmlNode response.phoneNumber: The international or US-based phone number to check the format of. Returns success for well-formed. -
ValidateRoutingNumber
Sends a bank routing number validation request to the Gateway service, returning an XmlNode response. -
ValidateZipCode
Sends a postal code validation request to the Gateway service, returning an XmlNode response.City: Name of the City
State: 2-character State (US)
ZipCode: US 5-digit ZIP code -
ValidateZipCodeInternational
Sends a postal code validation request to the Gateway service, returning an XmlNode response.City: Name of the City
State: 2-character State (US) or empty string
Province: Name of the province
ZipCode: Postal code or the US-ZIP Code
Country: 2-character ISO value of the country -
VerifyACH
Sends an ACH transaction verification request to the Gateway service, returning an XmlNode response. -
VoidTransaction
Sends a void transaction request to the Gateway service, returning an XmlNode response. -
WalletJson
Sends a wallet request to the Gateway service. This is a generic version for Add, Edit, Remove, GetWalletItem, GetWallet, and Search, depending on the Operation provided When adding a wallet, either all credit card fields are needed (required fields marked with a %) or all ACH fields are needed (required fields are also marked with a %).When editing a wallet (or search), only the field you wish to make changes to are needed.When using GetWalletItem or GetWallet, you need to provide the numeric Wallet ID or the Wallet ID that is a GUID.JSON input format (items with a * are required):{
JSON output format:
Provide either LoginId & Password or the token
"loginId*": "YourLoginId",
"password*": "YourPassword",
"community": "{optional string-value, defines a shared key among merchants to search against to find records}",
"walletOperation*" : "{Add, Edit, Remove, GetWalletItem, GetWallet, Search}",
"walletType": "{CreditCard|ACH, required}",
"includeFullCardNumber": "{true|false - for either ACH or Credit Card, this will return the unencrypted account number}",
"nickName": "{string with * as wildcard; nick name of the wallet}",
"customerId": "{string: merchant customer id}",
"iCustomerId": "{long: BFC Gateway system iCustomer Id}",
"ipAddress": "{string - this should be the origin of the request for the transaction for fraud detection. Required to return unencrypted cc}",
"walletId": "{GUID of the wallet - only needed for Edit, Remove, or GetWallet and GetWalletItem are used - this value or the iWallet}",
"iWalletId": "{iWalletId: W##### - only needed for Edit, Remove, or GetWallet and GetWalletItem are used - this value of the walletId}",
"parentWalletId": "{optional, GUID of parent wallet id - only needed if you want to provide a linked list of wallet, otherwise, the customer Id can provide the list}",
"applicationId": "{optional, GUID of Application Id}",
"customerName": "{Partial name or full name. Use * to make it a wildcard for search}",
"company": "{sting:company name}",
"address1": "{string (billing address)}",
"address2": "{string}",
"city": "{string}",
"state": "{string}",
"zipCode": "{zip code for the wallet}",
"phone": "{string}",
"email": "{email}",
"nameOnAccount": "{string: Name on Account}",
"cardType": "{Visa|MasterCard|Discover|AmericanExpress|DinersClub|JCB|ChinaUnionPay|Maestro|Checking|Savings|Cash|etc...}",
"cardNumber": "{string with partial search character as *}",
"expiration": "{YYYY-mm}",
"expiresBy": "{date MM/dd/yyyy}",
"accountType": "{Checking|Savings}",
"accountNumber": "{number up to 17 digits}",
"routingNumber": "{ABA with 9 digits}",
"bankName": "{number up to 17 digits}",
}{ "Response": { "@ID": "{Query GUID}", "Merchant": "{Merchant Name}", "Status": "{Result of Query}", "WalletOperation": { "Success": "{true|false}", "WalletItems": { "WalletItem": [{ "Community": "{string - if this wallet has a community, it will return the string value for it}", "WalletID": "{GUID}", "iWalletId": "{W######}", "ApplicationID": "{GUID}", "NickName": "{Wallet Nick Name}", "SecretQuestion": "{SecretQuestion}", "SecretAnswer": "{Encrypted secret answer}", "Customer": [{ "@ID":"{Merchant's customer ID}", "@BFCCustID":"{iCustomer ID}", "Address": [{ "Street1": "{String}", "Street2": {string}, "City": {string}, "State": {string}, "ZipCode": {string}, "Email": {string}}]}] "Payment": [{ "NameOnAccount": "{String}", "CreditCard": [{ "CardType":"{string}", "CardNumber":"{string; all 0s with the last 4 or the full card number if requested}", "Expiration": {string}}]}] "ElectronicCheck": [{ "AccountType":"{string}", "AccountNumber":"{string}", "RoutingNumber":"{string}", "BankName":"{string}"}] }]} } } }
This web service does not conform to WS-I Basic Profile v1.1.
Please examine each of the normative statement violations below. Follow the recommendations to remedy it, or add setting to the <webServices> config section to turn off BP 1.1 conformance warnings for the entire vroot.
To turn off BP 1.1 conformance warnings for the entire vroot remove the 'BP1.1' value from the <conformanceWarnings> section of the configuration file of your application:
<configuration> <system.web> <webServices> <conformanceWarnings> <remove name='BasicProfile1_1'/> </conformanceWarnings> </webServices> </system.web> </configuration>
R2304: Operation name overloading in a wsdl:portType is disallowed by the Profile. A wsdl:portType in a DESCRIPTION MUST have operations with distinct values for their name attributes. Note that this requirement applies only to the wsdl:operations within a given wsdl:portType. A wsdl:portType may have wsdl:operations with names that are the same as those found in other wsdl:portTypes.
- Operation 'AuthorizeCard' on portType 'GatewayAPIServiceSoap' from namespace 'http://gateway.bfc-usa.com/API'.
- Operation 'AuthorizeCard' on portType 'GatewayAPIServiceSoap' from namespace 'http://gateway.bfc-usa.com/API'.
- Operation 'AuthorizeCard' on portType 'GatewayAPIServiceSoap' from namespace 'http://gateway.bfc-usa.com/API'.
- Operation 'AuthorizeCard' on portType 'GatewayAPIServiceSoap' from namespace 'http://gateway.bfc-usa.com/API'.
- Operation 'AuthorizeCard' on portType 'GatewayAPIServiceSoap' from namespace 'http://gateway.bfc-usa.com/API'.
- Operation 'AuthorizeCard' on portType 'GatewayAPIServiceSoap' from namespace 'http://gateway.bfc-usa.com/API'.
- Operation 'AuthorizeCard' on portType 'GatewayAPIServiceSoap' from namespace 'http://gateway.bfc-usa.com/API'.
- Operation 'AuthorizeCard' on portType 'GatewayAPIServiceSoap' from namespace 'http://gateway.bfc-usa.com/API'.
- Operation 'AuthorizeCard' on portType 'GatewayAPIServiceSoap' from namespace 'http://gateway.bfc-usa.com/API'.
- Operation 'DebitCard' on portType 'GatewayAPIServiceSoap' from namespace 'http://gateway.bfc-usa.com/API'.
- Operation 'DebitCard' on portType 'GatewayAPIServiceSoap' from namespace 'http://gateway.bfc-usa.com/API'.
Recommendation: To make service conformant please make sure that all web methods belonging to the same binding have unique names.
For more details on Basic Profile Version 1.1, see the Basic Profile Specification.