PaySecure Pinless Web Services 2023:07:03:07

<back to all web services

PSBINCheckRequest

The following routes are available for this service:
POST/PSBINCheck
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InOutTimes:
    pass


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RequestTimestamps:
    app_layer: Optional[InOutTimes] = None
    parent_lookup: Optional[InOutTimes] = None
    retry_lookup: Optional[InOutTimes] = None
    get_card_data: Optional[InOutTimes] = None
    card_tokenize: Optional[InOutTimes] = None
    card_encrypt: Optional[InOutTimes] = None
    db_insert: Optional[InOutTimes] = None
    backend_process: Optional[InOutTimes] = None
    db_update: Optional[InOutTimes] = None
    parent_update: Optional[InOutTimes] = None
    network: Optional[InOutTimes] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PaysecureResponseInternal:
    timestamps: Optional[RequestTimestamps] = None


class CardInfoType(str, Enum):
    CARD_NUMBER = 'CardNumber'
    TOKEN = 'Token'
    TRACK = 'Track'
    EMV = 'EMV'
    ENCRYPTED = 'Encrypted'
    DPAN = 'DPAN'
    APPLE_PAY = 'ApplePay'
    GOOGLE_PAY = 'GooglePay'
    SAMSUNG_PAY = 'SamsungPay'
    CP_TOKEN = 'CPToken'
    ENCRYPTED_ENHANCED = 'EncryptedEnhanced'
    ENCRYPTED_J_W_E = 'EncryptedJWE'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CardAccountUpdaterDescriptor:
    card_data_type: Optional[CardInfoType] = None
    card_number_info: Optional[str] = None
    expiry_date: Optional[str] = None
    status: Optional[str] = None
    error_code: Optional[str] = None
    card_token: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ExtendedResponse:
    card_account_updater: Optional[CardAccountUpdaterDescriptor] = None
    product_id: Optional[str] = None
    network_response_code: Optional[str] = None
    network_transaction_id: Optional[str] = None
    ch_email_addr_result: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PaysecureVersion(PaysecureResponseInternal):
    local_date_time: Optional[str] = None
    token: Optional[str] = None
    extended_data: Optional[ExtendedResponse] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PSBINCheck(PaysecureVersion):
    bin: Optional[str] = None
    internet_pin_debit: bool = False
    ecom_e_b_t_s_n_a_p: bool = False
    ecom_e_b_t_cash: bool = False
    pos_flag: bool = False
    pinless_ecommerce: bool = False
    pinless_bill_pay: bool = False
    on_demand_payment_credit: bool = False
    on_demand_payment_debit: bool = False
    pinless_a2_a_credit: bool = False
    pinless_a2_a_debit: bool = False
    pinless_pre_paid_load: bool = False
    dual_message: bool = False
    recurring: bool = False
    card_verify: bool = False
    pos_pinless_dual_message_flag: bool = False
    error_message: Optional[str] = None
    error_code: Optional[str] = None
    otp: bool = False
    fast_funds: Optional[str] = None
    incremental_auth: bool = False
    wic: bool = False
    card_designation: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RequestorCredentials:
    # @Required()
    merchant_id: Optional[str] = None

    # @Required()
    user_name: Optional[str] = None

    # @Required()
    password: Optional[str] = None

    # @Required()
    version: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PSBINCheckRequest:
    credentials: Optional[RequestorCredentials] = None
    bin: Optional[str] = None

Python PSBINCheckRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv

HTTP + CSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /PSBINCheck HTTP/1.1 
Host: api.paysecure.acculynk.net 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{"Credentials":{"MerchantId":"String","UserName":"String","Password":"String","Version":"String"},"BIN":"String"}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"BIN":"String","InternetPinDebit":false,"EcomEBTSNAP":false,"EcomEBTCash":false,"POSFlag":false,"PinlessEcommerce":false,"PinlessBillPay":false,"OnDemandPaymentCredit":false,"OnDemandPaymentDebit":false,"PinlessA2ACredit":false,"PinlessA2ADebit":false,"PinlessPrePaidLoad":false,"DualMessage":false,"Recurring":false,"CardVerify":false,"POSPinlessDualMessageFlag":false,"ErrorMessage":"String","ErrorCode":"String","OTP":false,"FastFunds":"String","IncrementalAuth":false,"WIC":false,"CardDesignation":"String","LocalDateTime":"String","Token":"String","ExtendedData":{"CardAccountUpdater":{"CardDataType":"CardNumber","CardNumberInfo":"String","ExpiryDate":"String","Status":"String","ErrorCode":"String","CardToken":"String"},"ProductId":"String","NetworkResponseCode":"String","NetworkTransactionId":"String","CHEmailAddrResult":"String"},"Timestamps":{"AppLayer":{"InTime":"\/Date(-62135596800000-0000)\/","OutTime":"\/Date(-62135596800000-0000)\/"},"ParentLookup":{"InTime":"\/Date(-62135596800000-0000)\/","OutTime":"\/Date(-62135596800000-0000)\/"},"RetryLookup":{"InTime":"\/Date(-62135596800000-0000)\/","OutTime":"\/Date(-62135596800000-0000)\/"},"GetCardData":{"InTime":"\/Date(-62135596800000-0000)\/","OutTime":"\/Date(-62135596800000-0000)\/"},"CardTokenize":{"InTime":"\/Date(-62135596800000-0000)\/","OutTime":"\/Date(-62135596800000-0000)\/"},"CardEncrypt":{"InTime":"\/Date(-62135596800000-0000)\/","OutTime":"\/Date(-62135596800000-0000)\/"},"DBInsert":{"InTime":"\/Date(-62135596800000-0000)\/","OutTime":"\/Date(-62135596800000-0000)\/"},"BackendProcess":{"InTime":"\/Date(-62135596800000-0000)\/","OutTime":"\/Date(-62135596800000-0000)\/"},"DBUpdate":{"InTime":"\/Date(-62135596800000-0000)\/","OutTime":"\/Date(-62135596800000-0000)\/"},"ParentUpdate":{"InTime":"\/Date(-62135596800000-0000)\/","OutTime":"\/Date(-62135596800000-0000)\/"},"Network":{"InTime":"\/Date(-62135596800000-0000)\/","OutTime":"\/Date(-62135596800000-0000)\/"}}}