You are not using the most up to date version. {{latestVersionNumber}} is the newest version.

Before you start

To begin using the BPOINT API, you will need a BPOINT Checkout or Enterprise facility. An Administrator or Manager (T1) user will need to create an API user by following the steps below:

  1. Login to the Merchant Back Office
  2. Navigate to Admin >> User Management
  3. Click on Add New User
  4. Enter the User Name and Email Address
  5. Select the User Permission 'API'
  6. Enter your (Administrator/Manager(T1) user's) password
  7. Click on Create User

Use the API user credentials, username and password, to begin developing with the API.

Introduction

The API offers a way of interfacing with the payment platform programmatically in a REST interface using HTTP over SSL. Requests are submitted to process transactions, create and update entities including tokens, and perform searches.

Requests to the API are categorised by the different areas of functionality of the payment platform. The API supports transaction processing and token processing with other areas planned. Each area has its own URL endpoint. Different HTTP methods imply different operations, for example retrieval of information from the database is handled by the GET operation, while updates are handled by either POST or PUT requests as appropriate.

For nearly all operations, requests and responses are defined within a JavaScript Object Notation (JSON) object. Where appropriate the API also supports WebForm (HTTP POST) requests for operations allowing seamless integration with web applications.

Errors from the API are handled by both HTTP Status Codes and API specific response codes. HTTP Status Code errors handle generic scenarios such as using incorrect HTTP verbs or incorrect URLs. API response codes handle specific validation, system errors and invalid authentication details.

Libraries

Libraries are available in several programming languages and are designed to make it easy to incorporate the API into your site by providing prepared methods to invoke.

Please select your preferred programming language from the drop down box displayed in the top right of each section.

Changing the programming language in one section will update the programming language in all sections.

API Endpoint

https://www.bpoint.com.au/webapi/v2/

API

Authentication

Direct Integration Method requests use an "Authorization" header to pass a base64 encoded string containing the API user credentials.

Authentication Format

The string is formatted as follows:

username|merchantnumber:password

For example, the HTTP header for above credentials string is:

Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=

The spelling of the header name is critical for correct authentication.

Transactions

Processes a transaction using either a card or previously added dvtoken.

URL Endpoint

https://www.bpoint.com.au/webapi/v2/txns/

2 Party Payment

Use this method for direct communication between your server and the payment platform. Note that if your system is passing credit card details, it will be directly in scope for PCI compliance.

URL

POST /txns/

Request Headers

This is a direct integration method. You will be required to supply the following HTTP headers with your POST request.

Authorization
base64 encoded API user credentials
Content-Type
application/json; charset=utf-8

Response Headers

Content-Type
application/json; charset=utf-8

Request

Request is a TxnReq (transaction request details) JSON object with the following properties.

Property Type Description
Action string For this operation, one of the following values MUST be used:
    TestMode boolean

    Flag to indicate whether transactions should be processed in test mode. (see section Test Mode Transactions)

    If present, it must be either "true" or "false". If absent, it will default to "false", resulting in transactions being submitted to the bank for authorisation. Optional

    Amount 64 bit integer

    Transaction amount in the lowest denomination for the currency.

    If AUD use 12000 for $120.00. If JPY use 120 for ¥120.

    AmountOriginal 64 bit integer Total payment amount without surcharge - this field is for information and reporting only and does not alter the value of the transaction (as specified by Amount). Optional
    AmountSurcharge 64 bit integer Surcharge amount for payment - this field is for information and reporting only and does not alter the value of the transaction (as specified by Amount). Optional
    BillerCode string Biller code for the transaction (MaxLen = 50). Optional
    CardDetails object MANDATORY when action is payment, preauth or unmatched_refund, otherwise NOT REQUIRED and will be ignored.
    Crn1 string This field should be unique for each payment (MaxLen = 50).
    Crn2 string Additional crn field (MaxLen = 50). Optional
    Crn3 string Additional crn field (MaxLen = 50). Optional
    Currency string

    The currency that the transaction is to be processed in as an ISO 4217 code (see section Currency List).

    Your bank merchant account must be configured to accept the currency used in this field.

    Please speak to your bank if you are unsure what currencies your bank merchant account can transact in (MinLen = 3, MaxLen = 3). Optional

    Customer object JSON object containing customer details. Optional
    MerchantReference string Reference that is for internal use only. (MaxLen = 50). Optional
    Order object JSON object containing order details. Optional
    OriginalTxnNumber string

    Used for refunds, reversals and captures.

    For refunds it is the transaction number of the payment or capture being refunded.

    For reversals it is the transaction number of the payment, refund, preauth, capture or unmatched_refund that is being reversed.

    For captures it is the transaction number of preauth that is being captured.

    MANDATORY when action is refund, reversal or capture, otherwise NOT REQUIRED and will be ignored (MaxLen = 50).

    StoreCard boolean Flag to indicate whether the cardholder agrees to save their card details. This flag allows merchant to create a dvtoken from the card details used to process the transaction. Optional
    SubType string Defines a sub type for transaction:
      TokenisationMode 64 bit integer Determines whether or not tokenisation of the payment instrument will occur:
        Optional
        Type string Defines a type for transaction:
          Important: 3DS enrolled merchants who wish to invoke 3DS for customer initiated payments must select ecommerce or internet.
          FraudScreeningRequest object

          JSON object used for Fraud Screening.

          Optional If this object is null, no fraud screening will be performed.

          POST https://www.bpoint.com.au/webapi/v2/txns/ HTTP/1.1
          Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=
          Content-Type: application/json; charset=utf-8
          Host: www.bpoint.com.au
          Content-Length: 411
          Expect: 100-continue
          Connection: Keep-Alive
          
          {
            "TxnReq" : {
              "Action" : "payment",
              "Amount" : 19900,
              "AmountOriginal" : 19800,
              "AmountSurcharge" : 100,
              "CardDetails" : {
                "CardHolderName" : "John Smith",
                "CardNumber" : "5123456789012346",
                "Cvn" : "123",
                "ExpiryDate" : "0521"
              },
              "Currency" : "AUD",
              "Customer" : {
                "Address" : {
                  "AddressLine1" : "123 Fake Street",
                  "AddressLine2" : "",
                  "AddressLine3" : "",
                  "City" : "Melbourne",
                  "CountryCode" : "AUS",
                  "PostCode" : "3000",
                  "State" : "VIC"
                },
                "ContactDetails" : {
                  "EmailAddress" : "john.smith@email.com",
                  "FaxNumber" : "",
                  "HomePhoneNumber" : "",
                  "MobilePhoneNumber" : "",
                  "WorkPhoneNumber" : ""
                },
                "CustomerNumber" : "1234",
                "PersonalDetails" : {
                  "DateOfBirth" : "",
                  "FirstName" : "John",
                  "LastName" : "Smith",
                  "MiddleName" : "",
                  "Salutation" : "Mr"
                },
                "DaysOnFile" : 23,
                "ExistingCustomer" : true
              },
              "MerchantReference" : "test merchant ref",
              "Order" : {
                "BillingAddress" : {
                  "Address" : {
                    "AddressLine1" : "",
                    "AddressLine2" : "",
                    "AddressLine3" : "",
                    "City" : "",
                    "CountryCode" : "",
                    "PostCode" : "",
                    "State" : ""
                  },
                  "ContactDetails" : {
                    "EmailAddress" : "",
                    "FaxNumber" : "",
                    "HomePhoneNumber" : "",
                    "MobilePhoneNumber" : "",
                    "WorkPhoneNumber" : ""
                  },
                  "PersonalDetails" : {
                    "DateOfBirth" : "",
                    "FirstName" : "",
                    "LastName" : "",
                    "MiddleName" : "",
                    "Salutation" : ""
                  }
                },
                "OrderItems" : [{
                  "Comments" : "",
                  "Description" : "",
                  "GiftMessage" : "",
                  "PartNumber" : "",
                  "ProductCode" : "",
                  "Quantity" : 1,
                  "SKU" : "",
                  "ShippingMethod" : "",
                  "ShippingNumber" : "",
                  "UnitPrice" : 100
                }, {
                  "Comments" : "",
                  "Description" : "",
                  "GiftMessage" : "",
                  "PartNumber" : "",
                  "ProductCode" : "",
                  "Quantity" : 1,
                  "SKU" : "",
                  "ShippingMethod" : "",
                  "ShippingNumber" : "",
                  "UnitPrice" : 100
                }],
                "ShippingAddress" : {
                  "Address" : {
                    "AddressLine1" : "",
                    "AddressLine2" : "",
                    "AddressLine3" : "",
                    "City" : "",
                    "CountryCode" : "",
                    "PostCode" : "",
                    "State" : ""
                  },
                  "ContactDetails" : {
                    "EmailAddress" : "",
                    "FaxNumber" : "",
                    "HomePhoneNumber" : "",
                    "MobilePhoneNumber" : "",
                    "WorkPhoneNumber" : ""
                  },
                  "PersonalDetails" : {
                    "DateOfBirth" : "",
                    "FirstName" : "",
                    "LastName" : "",
                    "MiddleName" : "",
                    "Salutation" : ""
                  }
                },
                "ShippingMethod" :  "",
                "OrderRecipients" : [{
                    "PersonalDetails" : {
                      "DateOfBirth" : "",
                      "FirstName" : "",
                      "LastName" : "",
                      "MiddleName" : "",
                      "Salutation" : ""
                    },
                    "ContactDetails" : {
                      "EmailAddress" : "",
                      "FaxNumber" : "",
                      "HomePhoneNumber" : "",
                      "MobilePhoneNumber" : "",
                      "WorkPhoneNumber" : ""
                    },
                    "Address" : {
                      "AddressLine1" : "",
                      "AddressLine2" : "",
                      "AddressLine3" : "",
                      "City" : "",
                      "CountryCode" : "",
                      "PostCode" : "",
                      "State" : ""
                    }
                  },
          		{
                    "PersonalDetails" : {
                      "DateOfBirth" : "",
                      "FirstName" : "",
                      "LastName" : "",
                      "MiddleName" : "",
                      "Salutation" : ""
                    },
                    "ContactDetails" : {
                      "EmailAddress" : "",
                      "FaxNumber" : "",
                      "HomePhoneNumber" : "",
                      "MobilePhoneNumber" : "",
                      "WorkPhoneNumber" : ""
                    },
                    "Address" : {
                      "AddressLine1" : "",
                      "AddressLine2" : "",
                      "AddressLine3" : "",
                      "City" : "",
                      "CountryCode" : "",
                      "PostCode" : "",
                      "State" : ""
                    }
                  }]
              },
              "OriginalTxnNumber" : null,
              "Crn1" : "test crn1",
              "Crn2" : "test crn2",
              "Crn3" : "test crn3",
              "EmailAddress" : "user@test.com",
              "BillerCode" : null,
              "TestMode" : false,
              "TokenisationMode" : 0,
              "StoreCard" : false,
              "SubType" : "single",
              "Type" : "internet",
              "FraudScreeningRequest" : {
                "PerformFraudScreening" : "true",
                "FraudScreeningDeviceFingerprint" : "ExampleDeviceFingerprint"
                }
              }           
          }
          
          
          include ("./API/BPOINT.php");
          		
          BPOINT\URLDirectory::setBaseURL("reserved","https://www.bpoint.com.au/webapi/v2");	
          $credentials = new BPOINT\Credentials("APIUserName", "Passw0rd", "5353109000000000",BPOINT\Mode::Live);
          
          $txn = new BPOINT\Transaction();
          $cardDetails = new BPOINT\CardDetails();
          $order = new BPOINT\Order();
          $shippingAddress = new BPOINT\OrderAddress();
          $billingAddress = new BPOINT\OrderAddress();
          $address = new BPOINT\Address();
          $customer = new BPOINT\Customer(); 
          $personalDetails = new BPOINT\PersonalDetails(); 
          $contactDetails = new BPOINT\ContactDetails();
          $order_item_1 = new BPOINT\OrderItem();
          $order_recipient_1 = new BPOINT\OrderRecipient();
          $fraudScreening = new BPOINT\FraudScreeningRequest();
          
          $txn->setAction(BPOINT\Actions::Payment);
          $txn->setCredentials($credentials);
          $txn->setAmount(20000);
          $txn->setCurrency("AUD");
          $txn->setMerchantReference("Merchant Reference");
          $txn->setCrn1("My Customer Reference");
          $txn->setCrn2("Medium");
          $txn->setCrn3("Large");
          $txn->setStoreCard(FALSE);
          $txn->setSubType("single");
          $txn->setType(BPOINT\TransactionType::Internet);
          
          $cardDetails->setCardHolderName("MR C CARDHOLDER");
          $cardDetails->setCardNumber("4444333322221111");
          $cardDetails->setCVN("678");
          $cardDetails->setExpiryDate("0521");
          
          $txn->setCardDetails($cardDetails);
          
          $address->setAddressLine1("123 Fake Street");
          $address->setCity("Melbourne");
          $address->setCountryCode("AUS");
          $address->setPostCode("3000");
          $address->setState("Vic");
          
          $contactDetails->setEmailAddress("example@email.com");
          
          $personalDetails->setDateOfBirth("1900-01-01");
          $personalDetails->setFirstName("John");
          $personalDetails->setLastName("Smith");
          $personalDetails->setSalutation("Mr");
          
          $billingAddress->setAddress($address);
          $billingAddress->setContactDetails($contactDetails);
          $billingAddress->setPersonalDetails($personalDetails);
          
          $shippingAddress->setAddress($address);
          $shippingAddress->setContactDetails($contactDetails);
          $shippingAddress->setPersonalDetails($personalDetails);
          
          $order_item_1->setDescription("an item");
          $order_item_1->setQuantity(1);
          $order_item_1->setUnitPrice(1000);
          
          $orderItems = array($order_item_1);
          
          $order_recipient_1->setAddress($address);
          $order_recipient_1->setContactDetails($contactDetails);
          $order_recipient_1->setPersonalDetails($personalDetails);
          
          $orderRecipients = array($order_recipient_1);
          
          $order->setBillingAddress($billingAddress);
          $order->setOrderItems($orderItems);
          $order->setOrderRecipients($orderRecipients);
          $order->setShippingAddress($shippingAddress);
          $order->setShippingMethod("boat");
          
          $txn->setOrder($order);
          
          $customer->setCustomerNumber("1234");
          $customer->setAddress($address);
          $customer->setExistingCustomer(false);
          $customer->setContactDetails($contactDetails);
          $customer->setPersonalDetails($personalDetails);
          $customer->setCustomerNumber("1");
          $customer->setDaysOnFile(1);
          
          $txn->setCustomer($customer);
          
          $fraudScreening->setPerformFraudScreening(true);
          $fraudScreening->setDeviceFingerprint("ExampleDeviceFingerprint");
          
          $txn->setFraudScreeningRequest($fraudScreening);
          
          $txn->setTokenisationMode(3);
          $txn->setTimeout(93121);
          
          $response = $txn->submit();
          from BPOINT.Requests import Credentials, TransactionRequest, Customer,\
              PersonalDetails, ContactDetails, Address, Order, OrderAddress, OrderItem,\
              OrderRecipient, FraudScreeningRequest
              
          from BPOINT.Utils import CardDetails
          
          credentials = Credentials("APIUserName", "Passw0rd", "5353109000000000")
          
          request = TransactionRequest(credentials)
          
          request.base_url = "https://www.bpoint.com.au/webapi/v2"
          
          request.card_details = CardDetails(
              card_holder_name = "MR C CARDHOLDER", 
              expiry_date = "0521",
              card_number = "4444333322221111", 
              cvn = "123")
          
          request.customer = Customer()
              
          request.customer.address = Address()
          request.customer.address.address_line1 = "123 Fake Street"
          request.customer.address.city = "Melbourne"
          request.customer.address.country_code = "AUS"
          request.customer.address.post_code = "3000"
          request.customer.address.state = "VIC"
          
          request.customer.contact_details = ContactDetails()
          request.customer.contact_details.email_address = "example@email.com"
          request.customer.contact_details.home_phone_number = "93123456"
          request.customer.contact_details.mobile_phone_number = "0412345678"
          request.customer.contact_details.work_phone_number = "0412345678"
          
          request.customer.personal_details = PersonalDetails()
          request.customer.personal_details.date_of_birth = "1900-01-01"
          request.customer.personal_details.first_name = "John"
          request.customer.personal_details.last_name = "Smith"
          request.customer.personal_details.middle_name = "C"
          request.customer.personal_details.salutation = "Mr"
          
          request.customer.customer_number = "1234"
          request.customer.existing_customer = False
          request.customer.days_on_file = 0
          
          request.order = Order()
          request.order.billing_address = OrderAddress()
          request.order.billing_address.address = Address()
          request.order.billing_address.address.address_line1 = "123 Fake Street"
          request.order.billing_address.address.city = "Melbourne"
          request.order.billing_address.address.country_code = "AUS"
          request.order.billing_address.address.post_code = "3000"
          request.order.billing_address.address.state = "VIC"
          
          request.order.billing_address.contact_details = ContactDetails()
          request.order.billing_address.contact_details.email_address = "example@email.com"
          request.order.billing_address.contact_details.home_phone_number = "93123456"
          request.order.billing_address.contact_details.mobile_phone_number = "0412345678"
          request.order.billing_address.contact_details.work_phone_number = "0412345678"
          
          request.order.billing_address.personal_details = PersonalDetails()
          request.order.billing_address.personal_details.date_of_birth = "1900-01-01"
          request.order.billing_address.personal_details.first_name = "John"
          request.order.billing_address.personal_details.last_name = "Smith"
          request.order.billing_address.personal_details.middle_name = "C"
          request.order.billing_address.personal_details.salutation = "Mr"
          
          request.order.shipping_address = OrderAddress()
          request.order.shipping_address.address = Address()
          request.order.shipping_address.address.address_line1 = "123 Fake Street"
          request.order.shipping_address.address.city = "Melbourne"
          request.order.shipping_address.address.country_code = "AUS"
          request.order.shipping_address.address.post_code = "3000"
          request.order.shipping_address.address.state = "VIC"
          
          request.order.shipping_address.contact_details = ContactDetails()
          request.order.shipping_address.contact_details.email_address = "example@email.com"
          request.order.shipping_address.contact_details.home_phone_number = "93123456"
          request.order.shipping_address.contact_details.mobile_phone_number = "0412345678"
          request.order.shipping_address.contact_details.work_phone_number = "0412345678"
          
          request.order.shipping_address.personal_details = PersonalDetails()
          request.order.shipping_address.personal_details.date_of_birth = "1900-01-01"
          request.order.shipping_address.personal_details.first_name = "John"
          request.order.shipping_address.personal_details.last_name = "Smith"
          request.order.shipping_address.personal_details.middle_name = "C"
          request.order.shipping_address.personal_details.salutation = "Mr"
          request.order.shipping_method = "boat"
          
          order_receipient_1 = OrderRecipient()
          order_receipient_1.address = Address()
          order_receipient_1.address.address_line1 = "123 Fake Street"
          order_receipient_1.address.city = "Melbourne"
          order_receipient_1.address.country_code = "AUS"
          order_receipient_1.address.post_code = "3000"
          order_receipient_1.address.state = "VIC"
          order_receipient_1.contact_details = ContactDetails()
          order_receipient_1.contact_details.email_address = "example@email.com"
          order_receipient_1.contact_details.home_phone_number = "93123456"
          order_receipient_1.contact_details.mobile_phone_number = "0412345678"
          order_receipient_1.contact_details.work_phone_number = "0412345678"
          order_receipient_1.personal_details = PersonalDetails()
          order_receipient_1.personal_details.date_of_birth = "1900-01-01"
          order_receipient_1.personal_details.first_name = "John"
          order_receipient_1.personal_details.last_name = "Smith"
          order_receipient_1.personal_details.middle_name = "C"
          order_receipient_1.personal_details.salutation = "Mr"
          request.order.order_recipients = [order_receipient_1.get_payload()]
          
          order_item_1 = OrderItem()
          order_item_1.comments = "Order item comment"
          order_item_1.description = "Test Order Item 1"
          order_item_1.gift_message = "Test gift message"
          order_item_1.quantity = 1
          order_item_1.unit_price = 1000
          request.order.order_items = [order_item_1.get_payload()]
          
          request.fraud_screening_request = FraudScreeningRequest()
          request.fraud_screening_request.perform_fraud_screening = True
          request.fraud_screening_request.device_fingerprint = "ExampleDeviceFingerprint"
              
          request.store_card = True
          request.action = "payment"
          request.amount = 200
          request.currency = "AUD"
          request.crn1 = "Ref One"
          request.sub_type = "recurring"
          request.type = "internet"
          request.tokenisation_mode = 3
          request.timeout = 90000
          
          response = request.submit()
          require_relative "API/BPOINT"
          
          cred = BPOINT::Credentials.new("APIUserName", "Passw0rd", "5353109000000000")
          
          req = BPOINT::TransactionRequest.new()
            
          cc = BPOINT::CardDetails.new()
          cc.card_holder_name = "MR C CARDHOLDER"
          cc.card_number = "4444333322221111"
          cc.expiry_date = "0521"
          cc.cvn = "123" 
          
          ad = BPOINT::Address.new()
          ad.address_line_1 = "123 Fake Street"
          ad.city = "Melbourne"
          ad.country_code = "AUS"
          ad.post_code = "3000"
          ad.state = "VIC"
          
          cd = BPOINT::ContactDetails.new()
          cd.email_address = "example@email.com"
          
          pd = BPOINT::PersonalDetails.new()
          pd.date_of_birth = "1900-01-01"
          pd.first_name = "John"
          pd.last_name = "Smith"
          pd.salutation = "Mr"
          
          ba = BPOINT::OrderAddress.new()
          ba.address = ad;
          ba.contact_details = cd
          ba.personal_details = pd
          
          sa = BPOINT::OrderAddress.new()
          sa.address = ad;
          sa.contact_details = cd
          sa.personal_details = pd
          
          or_item_1 = BPOINT::OrderItem.new()
          or_item_1.description = "an item"
          or_item_1.quantity = 1
          or_item_1.unit_price = 1000
          
          order_items = [or_item_1.payload()]
          
          order_recipient_1 = BPOINT::OrderRecipient.new()
          order_recipient_1.address = ad;
          order_recipient_1.contact_details = cd
          order_recipient_1.personal_details = pd
          
          order_recipients = [order_recipient_1.payload()]
          
          order = BPOINT::Order.new()
          order.billing_address = ba
          order.shipping_address = sa
          order.order_items = order_items
          order.shipping_method = "Boat"
          order.order_recipients = order_recipients
          
          fs = BPOINT::FraudScreeningRequest.new()
          
          fs.perform_fraud_screening = true
          fs.device_fingerprint = "ExampleDeviceFingerprint"
          
          cust = BPOINT::Customer.new()
          cust.customer_number = "1234"
          cust.address = ad
          cust.existing_customer = false
          cust.contact_details = cd
          cust.personal_details = pd
          cust.customer_number = "1"
          cust.days_on_file = 1
          
          req.base_url = "https://www.bpoint.com.au/webapi/v2"
          req.crn1  = "Test Ref 1"
          req.currency = "AUD"
          req.action = "payment"
          req.amount = 1000
          req.type = "internet"
          req.subtype = "single"
          req.store_card = true
          req.card_details = cc
          req.credentials = cred
          req.order = order
          req.fraud_screening_request = fs
          req.customer = cust
          req.tokenisation_mode = 3
          req.timeout = 90000
          
          response = req.submit()
          import com.BPOINT.api.*;
          import java.math.BigDecimal;
          
          Credentials credentials = new Credentials("APIUserName", "Passw0rd", "5353109000000000");
          CreditCardDetails cc = new CreditCardDetails();
          Sender s = new Sender();
          
          cc.setCardNumber("4444333322221111");
          cc.setExpiryDate("0521");
          cc.setCVN("123");
          cc.setCardHolderName("MR C CARDHOLDER");
          		
          TxnRequest txn = new TxnRequest(credentials);
          TxnResp resp;
          		
          txn.setBaseUrl("https://www.bpoint.com.au/webapi/v2");
          txn.setAction("payment");
          txn.setAmount((long) 1000);
          txn.setCrn1("Test Ref 1");
          txn.setType("internet");
          txn.setTestMode(false);
          txn.setSubType("single");
          txn.setCurrency("AUD");
          txn.setStoreCard(false);
          txn.setAmountOriginal((long) 0);
          txn.setAmountSurcharge((long) 0);
          txn.setCardDetails(cc);
          txn.setCredentials(credentials);
          txn.setTokenisationMode(TokenisationMode.TOKENISE);
          		
          Address ad = new Address();
          ad.setAddressLine1("123 Fake Street");
          ad.setCity("Melbourne");
          ad.setCountryCode("AUS");
          ad.setPostCode("3000");
          ad.setState("VIC");
          
          ContactDetails cd = new ContactDetails();
          cd.setEmailAddress("example@email.com");
          
          PersonalDetails pd = new PersonalDetails();
          pd.setDateOfBirth("1900-01-01");
          pd.setFirstName("John");
          pd.setLastName("Smith");
          pd.setSalutation("Mr");
          
          OrderAddress ba = new OrderAddress();
          ba.setAddress(ad);
          ba.setContactDetails(cd);
          ba.setPersonalDetails(pd);
          
          OrderAddress sa = new OrderAddress();
          sa.setAddress(ad);
          sa.setContactDetails(cd);
          sa.setPersonalDetails(pd);
          
          OrderItem or_item_1 = new OrderItem();
          or_item_1.setDescription("an item");
          or_item_1.setQuantity(new BigDecimal(1));
          or_item_1.setUnitPrice((long)1000);
          
          ArrayOfOrderItem order_items = new ArrayOfOrderItem();
          order_items.getOrderItem().add(or_item_1);
          
          OrderRecipient order_recipient_1 = new OrderRecipient();
          order_recipient_1.setAddress(ad);
          order_recipient_1.setContactDetails(cd);
          order_recipient_1.setPersonalDetails(pd);
          
          ArrayOfOrderRecipient order_recipients = new ArrayOfOrderRecipient();
          order_recipients.getOrderRecipient().add(order_recipient_1);
          
          Order or = new Order();
          or.setBillingAddress(ba);
          or.setShippingAddress(sa);
          or.setOrderItems(order_items);
          or.setOrderRecipients(order_recipients);
          or.setShippingMethod("Boat");
          
          txn.setOrder(or);
          
          Customer cust = new Customer();
          cust.setCustomerNumber("1234");
          cust.setAddress(ad);
          cust.setExistingCustomer(false);
          cust.setContactDetails(cd);
          cust.setPersonalDetails(pd);
          cust.setDaysOnFile(1);
          
          txn.setCustomer(cust);
          
          FraudScreeningRequest fs = new FraudScreeningRequest();
          fs.setPerformFraudScreening(true);
          fs.setDeviceFingerprint("ExampleDeviceFingerprint");
          
          txn.setFraudScreeningRequest(fs);		
          		
          resp = s.submit(txn);
          use BPOINT::API;
          use Data::Inspect qw(p);
          
          $BPOINT::Sender::base_url = "https://www.bpoint.com.au/webapi/v2";
          
          my $cred = BPOINT::Credentials->new(
          username => 'APIUserName', 
          password => 'Passw0rd', 
          merchant_number => "5353109000000000"
          );
          
          my $cc = BPOINT::CardDetails->new(
          card_number => "4444333322221111", 
          expiry_date => "0521",
          cvn => "123",
          card_holder_name => "MR C CARDHOLDER"
          );
          
          my $address = BPOINT::Address->new(
          address_line_1 =>"123 Fake Stree", 
          address_line_2 => "", 
          address_line_3 => "", 
          city => "Melbourne", 
          country_code => "AUS", 
          post_code => "1234", 
          state => "VIC");
          
          my $contact_details = BPOINT::ContactDetails->new(
          email_address => 'example@email.com', 
          fax_number => "0123456789",
          home_phone_number => "0123456789",
          mobile_phone_number => "0123456789",
          work_phone_number=> "0123456789");
          
          my $personal_details = BPOINT::PersonalDetails->new(
          date_of_birth => "1900-01-01", 
          first_name => "John", 
          last_name => "Smith", 
          middle_name => "", 
          salutation => "Mr");
          
          my $customer = BPOINT::Customer->new(
          address => $address, 
          contact_details => $contact_details, 
          customer_number => "1234", 
          personal_details => $personal_details,
          days_on_file => 1);
          
          my $shipping_address = BPOINT::OrderAddress->new(
          address => $address, 
          contact_details => $contact_details,
          personal_details => $personal_details);
          
          my $billing_address = BPOINT::OrderAddress->new(address => $address, 
          contact_details => $contact_details, 
          personal_details =>$ personal_details);
          
          my $item = BPOINT::OrderItem->new(
          description => "An item of some description",
          part_number  => "1",  
          quantity => "4", 
          shipping_number => "1234", 
          unit_price => 1099);
          
          my @itemArray = ($item);
          
          my $order = BPOINT::Order->new(
          shipping_address => $shipping_address, 
          billing_address => $billing_address);
          
          @{$order->{order_items}} = @itemArray;
          
          my $fraud_screening = BPOINT::FraudScreeningRequest->new(
          perform_fraud_screening => 1,
          device_fingerprint => "ExampleDeviceFingerprint");
          
          my $req;
          
          $req = BPOINT::TransactionRequest->new(
          action => "payment", 
          amount => 2000, 
          currency => "AUD", 
          credentials => $cred, 
          card_details => $cc, 
          order => $order,
          customer => $customer,
          crn1 => "Perl Test 1", 
          type => "internet", 
          sub_type => "single", 
          merchant_reference => "Perl Merchant Reference 1",
          tokenisation_mode => 3,
          fraud_screening_request => $fraud_screening
          );
          
          $result = $req->submit();
          using BPOINT.API.Client.V2;
          using API.Client.Common;
          using API.Client.Common.Helpers;
          
          var txnClient = ClientFactory.
          GetClientInstance<TxnClient>(new JsonWebClientHelper(),
          "https://www.bpoint.com.au/webapi/v2",
          "APIUserName",
          "5353109000000000",
          "Passw0rd",
          null);
          
          var apiReq = new ProcessTxnReq()
          {
           TxnReq = new TxnRequest()
           {
          	Action = "payment",
          	Amount = 1000,
          	AmountOriginal = 0,
          	AmountSurcharge = 0,
          	CardDetails = new CreditCardDetails()
          	{
          		CardNumber = "4444333322221111",
          		ExpiryDate = "0521",
          		Cvn = "123",
          		CardHolderName = "MR C CARDHOLDER"
          	},
          	Currency = "AUD",
          	MerchantReference = "test merchant ref",
          	OriginalTxnNumber = null,
          	Crn1 = "Crn 1",
          	Crn2 = "Crn 2",
          	Crn3 = "Crn 3",
          	BillerCode = null,
          	StoreCard = false,
          	SubType = "single",
          	Type = "internet",
          	TokenisationMode = 3,
          	TestMode = false,
          	EmailAddress = "customer@email.address"		
           }
          };
          
          var response = txnClient.ProcessTxn(apiReq);
          var BPOINT = require("./BPOINT_API/index.js");
          var api = new BPOINT();
          
          var cc = new api.CardDetails({
          CardNumber: "4444333322221111", 
          ExpiryDate : "0521", 
          CardHolderName : "MR C CARDHOLDER", 
          Cvn : "123"});
          
          
          var ad = new api.Address({
              AddressLine1 : "123 Fake Street",
              AddressLine2 : "",
              AddressLine3 : "",
              City : "Melbourne",
              CountryCode : "AUS",
              PostCode : "3000",
              State : "VIC"
          });
          
          var cd = new api.ContactDetails({
              EmailAddress : "john.smith@email.com"
          });
          
          var pd = new api.PersonalDetails({
              DateOfBirth : "",
              FirstName : "John",
              LastName : "Smith",
              MiddleName : "",
              Salutation : "Mr"
          });
               
          var cust = new api.Customer({
              Address: ad,
              ContactDetails: cd,
              CustomerNumber: "1234",
              PersonalDetails: pd
          });     
          
          var ba = new api.OrderAddress({
              Address: ad,
              ContactDetails: cd,
              PersonalDetails: pd
          });
          
          var sa = new api.OrderAddress({
              Address: ad,
              ContactDetails: cd,
              PersonalDetails: pd
          });
          
          var order_item = new api.OrderItem({
              Description : "An Item",
              Quantity : 1,
              UnitPrice : 100
          });
          
          var order_items = [order_item];
          
          var order_recipient = new api.OrderRecipient({
              Address: ad,
              ContactDetails: cd,
              PersonalDetails: pd
          });
          
          var order_recipients = [order_recipient];
          
          var order = new api.Order({
              BillingAddress: ba,
              OrderItems: order_items,
              ShippingAddress: sa,
              ShippingMethod: "Boat",
              OrderRecipients: order_recipients
          });
          var fs = new api.FraudScreeningRequest({
              PerformFraudScreening: true,
              DeviceFingerprint: "ExampleDeviceFingerprint"
          });
          
          var req = new api.TxnRequest({ 
          Action : "payment", 
          Amount: 2100, 
          CardDetails : cc, 
          Crn1: "NodeJS Test Transaction 1", 
          Currency: "AUD", 
          Order: order,
          Customer: cust,
          FraudScreeningRequest: fs,
          Type: "internet", 
          SubType: "single", 
          StoreCard : true});
          
          req.baseUrl("https://www.bpoint.com.au/webapi/v2");
          
          var creds = req.credentials({
          Username : "APIUserName", 
          Password: "Passw0rd", 
          MerchantNumber   : "5353109000000000"});
          	
          var resp = req.submit(ResponseHandler, // Custom Callback Function
          function(code, body) { console.log(code + " : " + body); }, // Error Callback Function
          creds);
          //Configure the ApiConfig.java file to input your API user and Merchant credentials
          import main.java.com.BPOINT.android.api.ApiManager;
          
          String paymentAction = "payment";
          float txnAmount = 25.50f;
          String crn1 = "A CRN";
          String crn2 = "A CRN";
          String crn3 = "A CRN";
          String paymentCurrency = "AUD";
          String cardHolderName = "MR C Cardholder";
          String cardNumber = "5123456789012346";
          String expiryDate = "9900";
          
          String response = ApiManager.processTransactionWithAction(paymentAction,
                              txnAmount, crn1, crn2, crn3,
                              paymentCurrency, cardHolderName, cardNumber,
                              expiryDate);
          
          //Configure the BPOINTApiConfig.h file to input your API user and Merchant credentials
          #import <Foundation/Foundation.h>
          #import <bPointSDK/bPointSDK.h>
          
          NSString* paymentType = @"payment";
          GCFLoat txnAmmount = 25.50f;
          NSString* crn1 = @"A CRN";
          NSString* crn2 = @"A CRN";
          NSString* crn3 = @"A CRN";
          NSString* cardNumber = @"5123456789012346";
          NSString* expiryDate = @"9900";
          NSString* cardHolderName = @"MR C Cardholder";
          NSString* currency = @"AUD";
          
          [[BPOINTTransaction sharedBPOINTTransaction] processTransactionWithAction:paymentType invoiceAmount:txnAmmount invoiceNumber:crn1 invoiceDueDate:crn2 invoiceOrderNumber:crn3 currency:currency cardHolderName:cardHolderName cardDVToken:cardNumber cardExpiryDate:expiryDate UsingDelegate:self];
          

          Response

          Response is a JSON object with the following properties.

          Property Type Description
          APIResponse object APIResponse object
          TxnResp object TxnResp object
          HTTP/1.1 200 OK
          Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
          Pragma: no-cache
          Content-Length: 884
          Content-Type: application/json; charset=utf-8
          Set-Cookie: ASP.NET_SessionId=wlliqq4uutv42xh0hfu134xy; path=/; secure; HttpOnly
          Access-Control-Allow-Origin: *
          Access-Control-Allow-Headers: Content-Type
          Access-Control-Allow-Methods: GET, POST, OPTIONS
          Access-Control-Max-Age: 1728000
          Date: Fri, 12 Dec 2014 01:15:15 GMT
          
          {
            "APIResponse" : {
              "ResponseCode" : 0,
              "ResponseText" : "Success"
            },
            "TxnResp" : {
              "Action" : "payment",
              "Amount" : 19900,
              "AmountOriginal" : 19800,
              "AmountSurcharge" : 100,
              "ThreeDSResponse" : null,
              "AuthoriseId" : "372626",
              "BankAccountDetails" : null,
              "BankResponseCode" : "00",
              "CVNResult" : {
                "CVNResultCode" : "Unsupported"
              },
              "CardDetails" : {
                "CardHolderName" : "John Smith",
                "ExpiryDate" : "0521",
                "MaskedCardNumber" : "512345...346"
              },
              "CardType" : "MC",
              "Currency" : "AUD",
              "MerchantReference" : "test merchant ref",
              "IsThreeDS" : false,
              "IsCVNPresent" : true,
              "MerchantNumber  " : "5353109000000000",
              "OriginalTxnNumber" : null,
              "ProcessedDateTime" : "2014-12-12T12:15:19.6370000",
              "RRN" : "434612372626",
              "ReceiptNumber" : "49316411177",
              "Crn1" : "test crn1",
              "Crn2" : "test crn2",
              "Crn3" : "test crn3",
              "ResponseCode" : "0",
              "ResponseText" : "Approved",
              "BillerCode" : null,
              "SettlementDate" : "20141212",
              "Source" : "api",
              "StoreCard" : false,
              "IsTestTxn" : false,
              "SubType" : "single",
              "TxnNumber" : "1177",
              "DVToken" : null,
              "Type" : "internet",
              "FraudScreeningResponse" : {
                  "ReDResponse" : {     
                      "FRAUD_REC_ID" : "123412341234SAX20150101100000000",
                      "FRAUD_RSP_CD" : "0100",
                      "FRAUD_STAT_CD" : "ACCEPT",
                      "ORD_ID" : "12341234",
                      "REQ_ID" : "123412341234",
                      "STAT_CD" : "PENDING"
                  },
                  "ResponseCode" : "",
                  "ResponseMessage" : "",
                  "TxnRejected" : false
              }
            }
          }
          2 Party Transaction Result

          Retrieves details of a previously processed transaction.

          URL

          GET /txns/{txnNumber}

          URL Parameters

          txnNumber - transaction number of a previously processed transaction

          Request Headers

          This is a direct integration method. You will be required to supply the following HTTP headers with your GET request.

          Authorization
          base64 encoded API user credentials

          Response Headers

          Content-Type
          application/json; charset=utf-8
          GET https://www.bpoint.com.au/webapi/v2/txns/1178 HTTP/1.1
          Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=
          Host: www.bpoint.com.au
          include ("./API/BPOINT.php");
          BPOINT\URLDirectory::setBaseURL("reserved","https://www.bpoint.com.au/webapi/v2");	
          $credentials = new BPOINT\Credentials("APIUserName", "Passw0rd", "5353109000000000",BPOINT\Mode::Live);
          
          $txnRet = new BPOINT\TransactionRetrieval("1178");
          
          $txnRet->setCredentials($credentials);
          
          
          $response = $txnRet->submit();
          from BPOINT.Requests import Credentials, TransactionResultRequest
              
          from BPOINT.Utils import CardDetails
          
          credentials = Credentials("APIUserName", "Passw0rd", "5353109000000000")
          
          request = TransactionResultRequest(credentials, "1178")
          request.base_url = "https://www.bpoint.com.au/webapi/v2"
          
          response = request.submit()
          require_relative "API/BPOINT"
          
          cred = BPOINT::Credentials.new("APIUserName", "Passw0rd", "5353109000000000")
          
          req = BPOINT::TransactionResultRequest.new("1178")
          
          req.base_url = "https://www.bpoint.com.au/webapi/v2"
          req.credentials = cred
          
          response = req.submit()
          import com.BPOINT.api.*;
          
          Credentials credentials = new Credentials("APIUserName", "Passw0rd", "5353109000000000");
          Sender s = new Sender();
          
          TxnFetchRequest txn = new TxnFetchRequest(credentials, "1178");
          TxnResp resp;
          
          txn.setBaseUrl("https://www.bpoint.com.au/webapi/v2");
          
          resp = s.submit(txn);
          use BPOINT::API;
          use Data::Inspect qw(p);
          
          $BPOINT::Sender::base_url = "https://www.bpoint.com.au/webapi/v2";
          
          my $cred = BPOINT::Credentials->new(
          username => 'APIUserName', 
          password => 'Passw0rd',
          merchant_number => "5353109000000000"
          );
          
          my $req;
          
          $req = BPOINT::TransactionFetchRequest->new(
          txn_number => "1178", 
          credentials => $cred
          );
          
          $result = $req->submit();
          using BPOINT.API.Client.V2;
          using API.Client.Common;
          using API.Client.Common.Helpers;
          
          var txnClient = ClientFactory.
          GetClientInstance<TxnClient>(new JsonWebClientHelper(),
          "https://www.bpoint.com.au/webapi/v2",
          "APIUserName",
          "5353109000000000",
          "Passw0rd",
          null);
          
          var response = txnClient.RetrieveTxn("1178");
          var BPOINT = require("./BPOINT_API/index.js");
          var api = new BPOINT();
          
          var req = new api.TxnFetch("0001");
          
          req.baseUrl("https://www.bpoint.com.au/webapi/v2");
          
          var creds = req.credentials({
          Username : "APIUserName", 
          Password: "Passw0rd", 
          MerchantNumber   : "5353109000000000"});
          
          var resp = req.submit(ResponseHandler, // Custom Callback Function
          function(code, body) { console.log(code + " : " + body); }, // Error Callback Function
          creds);
          //Not Available
          //Not Available

          Response

          Response is a JSON object with the following properties.

          Property Type Description
          APIResponse object APIResponse object
          TxnResp object TxnResp object
          HTTP/1.1 200 OK
          Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
          Pragma: no-cache
          Content-Length: 882
          Content-Type: application/json; charset=utf-8
          Access-Control-Allow-Origin: *
          Access-Control-Allow-Headers: Content-Type
          Access-Control-Allow-Methods: GET, POST, OPTIONS
          Access-Control-Max-Age: 1728000
          Date: Fri, 12 Dec 2014 01:20:55 GMT
          
          {
            "APIResponse" : {
              "ResponseCode" : 0,
              "ResponseText" : "Success"
            },
            "TxnResp" : {
              "Action" : "payment",
              "Amount" : 19900,
              "AmountOriginal" : 19800,
              "AmountSurcharge" : 100,
              "ThreeDSResponse" : null,
              "AuthoriseId" : "380662",
              "BankAccountDetails" : null,
              "BankResponseCode" : "00",
              "CVNResult" : {
                "CVNResultCode" : "Unsupported"
              },
              "CardDetails" : {
                "CardHolderName" : "John Smith",
                "ExpiryDate" : "0521",
                "MaskedCardNumber" : "512345...346"
              },
              "CardType" : "MC",
              "Currency" : null,
              "MerchantReference" : "test merchant ref",
              "IsThreeDS" : false,
              "IsCVNPresent" : true,
              "MerchantNumber  " : "5353109000000000",
              "OriginalTxnNumber" : null,
              "ProcessedDateTime" : "2014-12-12T12:21:00.8300000",
              "RRN" : "434612380662",
              "ReceiptNumber" : "49316511178",
              "Crn1" : "test crn1",
              "Crn2" : "test crn2",
              "Crn3" : "test crn3",
              "ResponseCode" : "0",
              "ResponseText" : "Approved",
              "BillerCode" : "",
              "SettlementDate" : "20141212",
              "Source" : "api",
              "StoreCard" : false,
              "IsTestTxn" : false,
              "SubType" : "single",
              "TxnNumber" : "1178",
              "DVToken" : null,
              "Type" : "internet"
            }
          }
          2 Party Search Transactions

          Performs a search on previously processed transactions.

          URL

          POST /txns/search

          Request Headers

          This is a direct integration method. You will be required to supply the following HTTP headers with your POST request.

          Authorization
          base64 encoded API user credentials
          Content-Type
          application/json; charset=utf-8

          Response Headers

          Content-Type
          application/json; charset=utf-8

          Request

          Request is a SearchInput JSON object with following properties.

          Property Type Description
          Action string For this operation, one of the following values MUST be used:
            Optional
            Amount 64 bit integer

            Amount in the lowest denomination for the currency.

            If AUD use 12000 for $120.00. If JPY use 120 for ¥120 Optional

            AuthoriseId string AuthoriseId issued by the Acquirer for approved transactions. Not all Acquirers return the AuthoriseId even if the transaction is approved. (MaxLen = 50) Optional
            BankResponseCode string Response code returned from the issuing bank. (MaxLen = 2) Optional
            BillerCode string Biller code for the transaction. (MaxLen = 50) Optional
            CardType string Defines a Card type:
              Optional
              Crn1 string (MaxLen = 50) Optional
              Crn2 string (MaxLen = 50) Optional
              Crn3 string (MaxLen = 50) Optional
              Currency string Currency transaction was processed in. (MinLen = 3, MaxLen = 3) Optional
              ExpiryDate string

              Card expiry date

              In MMYY format. (MinLen = 4, MaxLen = 4) Optional

              FromDate string Start date and time for a date range search, compared against transaction processed date. In ISO8601 format. (MaxLen = 50) Optional If a date and time range is not specified, the search will be conducted on the last 18 months by default.
              MaskedCardNumber string Masked card number. (MaxLen = 12) Optional
              MerchantReference string Merchant Reference (MaxLen = 50) Optional
              RRN string Retrieval reference number. (MaxLen = 50) Optional
              ReceiptNumber string Receipt number. (MaxLen = 50) Optional
              ResponseCode string Summary response code. 0 means Approved transaction. Any other value indicates Decline or Error. (MaxLen = 50) Optional
              SettlementDate string

              Date of settlement.

              In YYYYMMDD format. (MaxLen = 8) Optional

              Source string

              Defines the transaction origin:

                Optional

                ToDate string End date and time for a date range search, compared against transaction processed date. In ISO8601 format. (MaxLen = 50) Optional
                TxnNumber string Unique transaction number.(MaxLen = 50) Optional
                POST https://www.bpoint.com.au/webapi/v2/txns/search HTTP/1.1
                Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=
                Content-Type: application/json; charset=utf-8
                Host: www.bpoint.com.au
                Content-Length: 449
                Expect: 100-continue
                Connection: Keep-Alive
                
                {
                  "SearchInput" : {
                    "Action" : null,
                    "Amount" : 0,
                    "AuthoriseId" : null,
                    "BankResponseCode" : null,
                    "CardType" : null,
                    "Currency" : null,
                    "ExpiryDate" : null,
                    "FromDate" : "2014-12-11T12:23:53.3897895+11:00",
                    "MerchantReference" : null,
                    "MaskedCardNumber" : null,
                    "RRN" : null,
                    "ReceiptNumber" : null,
                    "Crn1" : null,
                    "Crn2" : null,
                    "Crn3" : null,
                    "ResponseCode" : null,
                    "BillerCode" : null,
                    "SettlementDate" : null,
                    "Source" : null,
                    "ToDate" : "2014-12-12T12:23:53.3897895+11:00",
                    "TxnNumber" : null
                  }
                }
                include ("./API/BPOINT.php");
                BPOINT\URLDirectory::setBaseURL("reserved","https://www.bpoint.com.au/webapi/v2");	
                $credentials = new BPOINT\Credentials("APIUserName", "Passw0rd", "5353109000000000", BPOINT\Mode::Live);
                
                $txnSearch = new BPOINT\TransactionSearch();
                
                $txnSearch->setCredentials($credentials);
                
                $txnSearch->setCrn1("Crn 1");
                
                $txnSearch->setFromDate('2015-01-09 00:00:00');
                $txnSearch->setToDate('2015-01-15 00:00:00');
                
                $response = $txnSearch->submit();
                from BPOINT.Requests import Credentials, TransactionSearchRequest
                    
                credentials = Credentials("APIUserName", "Passw0rd", "5353109000000000")
                
                request = TransactionSearchRequest(credentials)
                request.base_url = "https://www.bpoint.com.au/webapi/v2"
                
                request.action = "payment"
                
                response = request.submit()
                require_relative "API/BPOINT"
                
                cred = BPOINT::Credentials.new("APIUserName", "Passw0rd", "5353109000000000")
                
                req = BPOINT::TransactionSearchRequest.new()
                
                req.base_url = "https://www.bpoint.com.au/webapi/v2"
                req.credentials = cred
                  
                req.masked_card_number = "444433...111"
                
                response = req.submit()
                import com.BPOINT.api.*;
                import java.util.ArrayList;
                import java.util.List;
                
                Credentials credentials = new Credentials("APIUserName", "Passw0rd", "5353109000000000");
                Sender s = new Sender();
                
                TxnSearchRequest search = new TxnSearchRequest(credentials);
                TransactionSearchResponse resp;
                
                search.setBaseUrl("https://www.bpoint.com.au/webapi/v2");
                search.setMaskedCardNumber("444433...111");
                
                resp = s.submit(search);
                use BPOINT::API;
                use Data::Inspect qw(p);
                
                $BPOINT::Sender::base_url = "https://www.bpoint.com.au/webapi/v2";
                
                my $cred = BPOINT::Credentials->new(
                username => 'APIUserName', 
                password => 'Passw0rd', 
                merchant_number => "5353109000000000"
                );
                
                my $req;
                
                $req = BPOINT::TransactionSearchRequest->new(
                masked_card_number => "444433...111", 
                currency => "AUD", 
                credentials => $cred, 
                settlement_date => "20150205", 
                amount => 1000
                );
                    
                
                $result = $req->submit();
                using BPOINT.API.Client.V2;
                using API.Client.Common;
                using API.Client.Common.Helpers;
                
                var txnClient = ClientFactory.
                GetClientInstance<TxnClient>(new JsonWebClientHelper(),
                "https://www.bpoint.com.au/webapi/v2",
                "APIUserName",
                "5353109000000000",
                "Passw0rd",
                null);
                
                var apiReq = new SearchTxnsReq()
                {
                	SearchInput = new SearchTxnsInput()
                	{
                		MaskedCardNumber = "444433...111"
                	}
                };
                
                var response = txnClient.SearchTxns(apiReq);
                var BPOINT = require("./BPOINT_API/index.js");
                var api = new BPOINT();
                
                var req = new api.TxnSearch({
                Action : "payment",
                Amount : 2157});
                
                req.baseUrl("https://www.bpoint.com.au/webapi/v2");
                
                var creds = req.credentials({
                Username : "APIUserName", 
                Password: "Passw0rd", 
                MerchantNumber   : "5353109000000000"});
                
                var resp = req.submit(ResponseHandler, // Custom Callback Function
                function(code, body) { console.log(code + " : " + body); }, // Error Callback Function
                creds);
                //Not Available
                //Not Available

                Response

                Response is a JSON object with the following properties.

                Property Type Description
                APIResponse object APIResponse object
                TxnRespList array Array of Transaction Response objects
                HTTP/1.1 200 OK
                Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                Pragma: no-cache
                Content-Length: 1689
                Content-Type: application/json; charset=utf-8
                Set-Cookie: ASP.NET_SessionId=nguhp2vlyqra1iz0se3h1zmo; path=/; secure; HttpOnly
                Access-Control-Allow-Origin: *
                Access-Control-Allow-Headers: Content-Type
                Access-Control-Allow-Methods: GET, POST, OPTIONS
                Access-Control-Max-Age: 1728000
                Date: Fri, 12 Dec 2014 01:23:49 GMT
                
                {
                  "APIResponse" : {
                    "ResponseCode" : 0,
                    "ResponseText" : "Success"
                  },
                  "TxnRespList" : [{
                    "Action" : "payment",
                    "Amount" : 19900,
                    "AmountOriginal" : 19900,
                    "AmountSurcharge" : 0,
                    "ThreeDSResponse" : null,
                    "AuthoriseId" : "372626",
                    "BankAccountDetails" : null,
                    "BankResponseCode" : "00",
                    "CVNResult" : {
                      "CVNResultCode" : "Unsupported"
                    },
                    "CardDetails" : {
                      "CardHolderName" : null,
                      "ExpiryDate" : "0521",
                      "MaskedCardNumber" : "512345...346"
                    },
                    "CardType" : "MC",
                    "Currency" : null,
                    "MerchantReference" : "test merchant ref",
                    "IsThreeDS" : false,
                    "IsCVNPresent" : true,
                    "MerchantNumber  " : "5353109000000000",
                    "OriginalTxnNumber" : null,
                    "ProcessedDateTime" : "2014-12-12T12:15:19.6370000",
                    "RRN" : "434612372626",
                    "ReceiptNumber" : "49316411177",
                    "Crn1" : "test crn1",
                    "Crn2" : "test crn2",
                    "Crn3" : "test crn3",
                    "ResponseCode" : "0",
                    "ResponseText" : "Approved",
                    "BillerCode" : null,
                    "SettlementDate" : "20141212",
                    "Source" : "api",
                    "StoreCard" : false,
                    "IsTestTxn" : false,
                    "SubType" : "single",
                    "TxnNumber" : "1177",
                    "DVToken" : null,
                    "Type" : "internet"
                  },..., {
                    "Action" : "payment",
                    "Amount" : 19900,
                    "AmountOriginal" : 19900,
                    "AmountSurcharge" : 0,
                    "ThreeDSResponse" : null,
                    "AuthoriseId" : "380662",
                    "BankAccountDetails" : null,
                    "BankResponseCode" : "00",
                    "CVNResult" : {
                      "CVNResultCode" : "Unsupported"
                    },
                    "CardDetails" : {
                      "CardHolderName" : null,
                      "ExpiryDate" : "0521",
                      "MaskedCardNumber" : "512345...346"
                    },
                    "CardType" : "MC",
                    "Currency" : null,
                    "MerchantReference" : "test merchant ref",
                    "IsThreeDS" : false,
                    "IsCVNPresent" : true,
                    "MerchantNumber  " : "5353109000000000",
                    "OriginalTxnNumber" : null,
                    "ProcessedDateTime" : "2014-12-12T12:21:00.8300000",
                    "RRN" : "434612380662",
                    "ReceiptNumber" : "49316511178",
                    "Crn1" : "test crn1",
                    "Crn2" : "test crn2",
                    "Crn3" : "test crn3",
                    "ResponseCode" : "0",
                    "ResponseText" : "Approved",
                    "BillerCode" : null,
                    "SettlementDate" : "20141212",
                    "Source" : "api",
                    "StoreCard" : false,
                    "IsTestTxn" : false,
                    "SubType" : "single",
                    "TxnNumber" : "1177",
                    "DVToken" : null,
                    "Type" : "internet"
                  }]
                }
                AuthKey

                Creates a one-time AuthKey to be used with "Process Transaction" operation when using Browser integration method.

                URL

                POST /txns/processtxnauthkey

                Request Headers

                This is a browser integration method. You will be required to supply following HTTP headers with your POST request.

                Authorization
                base64 encoded API user credentials
                Content-Type
                application/json; charset=utf-8

                Response Headers

                Content-Type
                application/json; charset=utf-8

                Request

                Request includes the following parameters.

                Property Type Description
                HppParameters object JSON object containing the hosted payment page parameters. Optional
                ProcessTxnData object JSON object containing the data required to process a transaction.
                RedirectionUrl string Merchant receipt redirection URL.
                WebHookUrl string Merchant web hook handler URL. Optional
                IframeParameters object JSON object containing the iframe parameters (see 3 Party Iframe). Optional
                POST https://www.bpoint.com.au/webapi/v2/txns/processtxnauthkey HTTP/1.1
                Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=
                Content-Type: application/json; charset=utf-8
                Host: www.bpoint.com.au
                Content-Length: 292
                Expect: 100-continue
                Connection: Keep-Alive
                
                {
                  "HppParameters" : {
                    "TokeniseTxnCheckBoxDefaultValue" : true,
                    "HideBillerCode" : false,
                    "Hidecrn1" : false,
                    "Hidecrn2" : false,
                    "Hidecrn3" : false,
                    "ReturnBarLabel" : "Return Bar Label",
                    "ReturnBarUrl" : "http://yourmerchantwebsite.com/ReturnBarUrl"
                  },
                  "ProcessTxnData" : {
                    "Action" : "payment",
                    "Amount" : 0, 
                    "Currency" : "AUD",
                    "Customer" : {
                      "Address" : {
                        "AddressLine1" : "123 Fake Street",
                        "AddressLine2" : "",
                        "AddressLine3" : "",
                        "City" : "Melbourne",
                        "CountryCode" : "AUS",
                        "PostCode" : "3000",
                        "State" : "VIC"
                      },
                      "ContactDetails" : {
                        "EmailAddress" : "john.smith@email.com",
                        "FaxNumber" : "",
                        "HomePhoneNumber" : "",
                        "MobilePhoneNumber" : "",
                        "WorkPhoneNumber" : ""
                      },
                      "CustomerNumber" : "1234",
                      "PersonalDetails" : {
                        "DateOfBirth" : "",
                        "FirstName" : "John",
                        "LastName" : "Smith",
                        "MiddleName" : "",
                        "Salutation" : "Mr"
                      }
                    },
                    "MerchantReference" : "test merchant ref",
                    "Order" : {
                      "BillingAddress" : {
                        "Address" : {
                          "AddressLine1" : "",
                          "AddressLine2" : "",
                          "AddressLine3" : "",
                          "City" : "",
                          "CountryCode" : "",
                          "PostCode" : "",
                          "State" : ""
                        },
                        "ContactDetails" : {
                          "EmailAddress" : "",
                          "FaxNumber" : "",
                          "HomePhoneNumber" : "",
                          "MobilePhoneNumber" : "",
                          "WorkPhoneNumber" : ""
                        },
                        "PersonalDetails" : {
                          "DateOfBirth" : "",
                          "FirstName" : "",
                          "LastName" : "",
                          "MiddleName" : "",
                          "Salutation" : ""
                        }
                      },
                      "OrderItems" : [{
                        "Comments" : "",
                        "Description" : "",
                        "GiftMessage" : "",
                        "PartNumber" : "",
                        "ProductCode" : "",
                        "Quantity" : 1,
                        "SKU" : "",
                        "ShippingMethod" : "",
                        "ShippingNumber" : "",
                        "UnitPrice" : 100
                      }, {
                        "Comments" : "",
                        "Description" : "",
                        "GiftMessage" : "",
                        "PartNumber" : "",
                        "ProductCode" : "",
                        "Quantity" : 1,
                        "SKU" : "",
                        "ShippingMethod" : "",
                        "ShippingNumber" : "",
                        "UnitPrice" : 100
                      }],
                      "ShippingAddress" : {
                        "Address" : {
                          "AddressLine1" : "",
                          "AddressLine2" : "",
                          "AddressLine3" : "",
                          "City" : "",
                          "CountryCode" : "",
                          "PostCode" : "",
                          "State" : ""
                        },
                        "ContactDetails" : {
                          "EmailAddress" : "",
                          "FaxNumber" : "",
                          "HomePhoneNumber" : "",
                          "MobilePhoneNumber" : "",
                          "WorkPhoneNumber" : ""
                        },
                        "PersonalDetails" : {
                          "DateOfBirth" : "",
                          "FirstName" : "",
                          "LastName" : "",
                          "MiddleName" : "",
                          "Salutation" : ""
                        }
                      },
                      BypassThreeDS : false
                    },
                    "Crn1" : "test Crn1",
                    "Crn2" : "test Crn2",
                    "Crn3" : "test Crn3",
                    "BillerCode" : null,
                    "TokenisationMode" : 3,
                    "TestMode" : false,
                    "SubType" : "single",
                    "Type" : "internet",
                    "FraudScreeningRequest" : {
                      "PerformFraudScreening" : "true",
                      "FraudScreeningDeviceFingerprint" : "ExampleDeviceFingerprint",
                      "CustomerIPAddress" : "10.1.1.1",
                      "TxnSourceWebsiteURL" : "www.txn-source.com",
                      "CustomFields" : [{"CustomField" : "A custom field"}]
                    },
                    "EmailAddress" : null,   
                    "AmexExpressCheckout" : false,
                    "DVTokenData" : {
                      "DVToken" : "5999999789012346",
                      "ExpiryDate" : "0521",
                      "UpdateDVTokenExpiryDate" : false
                    }
                  },
                  "RedirectionUrl" : "http://yourmerchantwebsite.com/txnreceipt",
                  "WebHookUrl" : null,
                  "IframeParameters" : {
                    "CSS" : ".control-label{color:blue;}",
                    "ShowSubmitButton": true
                  }
                }
                include ("./API/BPOINT.php");
                BPOINT\URLDirectory::setBaseURL("reserved","https://www.bpoint.com.au/webapi/v2");
                
                $credentials = new BPOINT\Credentials("APIUserName", "Passw0rd", "5353109000000000", BPOINT\Mode::Live);
                
                $hppParameters = new BPOINT\HppTxnFlowParameters();
                $hppParameters->setTokeniseTxnCheckBoxDefaultValue(false);
                $hppParameters->setHideBillerCode(false);
                $hppParameters->setHideCrn1(false);
                $hppParameters->setHideCrn2(false);
                $hppParameters->setHideCrn3(false);
                $hppParameters->setReturnBarLabel("Return Bar Label");
                $hppParameters->setReturnBarUrl("http://yourmerchantwebsite.com/ReturnBarUrl");
                
                $iframeParameters = new BPOINT\IframeParameters();
                $iframeParameters->setCSS(".control-label{color:blue;}");
                $iframeParameters->setShowSubmitButton(true);
                
                $dvtokenData = new BPOINT\DVTokenData();
                $dvtokenData->setDVToken("5999999789012346");
                $dvtokenData->setExpiryDate("0521");
                $dvtokenData->setUpdateDVTokenExpiryDate(false);
                
                $customField = new BPOINT\CustomField();
                $customField->setCustomField("A custom field");
                
                $customFieldArray = array();
                $customFieldArray[] = $customField;
                
                $fraudScreeningRequest = new BPOINT\FraudScreeningRequest();
                $fraudScreeningRequest->setPerformFraudScreening(true);
                $fraudScreeningRequest->setDeviceFingerprint("ExampleDeviceFingerprint");
                $fraudScreeningRequest->setCustomerIPAddress("10.1.1.1");
                $fraudScreeningRequest->setTxnSourceWebsiteURL("www.txn-source.com");
                $fraudScreeningRequest->setCustomFields($customFieldArray);
                
                $txn = new BPOINT\AuthKeyTransaction();
                $txn->setAction(BPOINT\Actions::Payment);
                $txn->setCredentials($credentials);
                $txn->setAmount(20000);
                $txn->setCurrency("AUD");
                $txn->setMerchantReference("Authkey Request");
                $txn->setCrn1("Authkey Crn 1");
                $txn->setCrn2("Authkey Crn 2");
                $txn->setCrn3("Authkey Crn 3");
                $txn->setRedirectionURL("http://yourmerchantwebsite.com/dvtokenreceipt");
                $txn->setTokenisationMode(3);
                $txn->setHppParameters($hppParameters);
                $txn->setAmexExpressCheckout(false);
                $txn->setIframeParameters($iframeParameters);
                $txn->setDVTokenData($dvtokenData);
                $txn->setFraudScreeningRequest($fraudScreeningRequest);
                $txn->setBypassThreeDS(false);
                
                $response = $txn->submit();
                from BPOINT.Requests import Credentials, TransactionAuthKeyRequest,\
                HppTxnFlowParameters, IframeParameters, FraudScreeningRequest, CustomField
                from BPOINT.Utils import DVTokenData
                
                credentials = Credentials("APIUserName", "Passw0rd", "5353109000000000")
                
                hpp_parameters = HppTxnFlowParameters()
                hpp_parameters.tokenise_txn_check_box_default_value = True
                hpp_parameters.hide_biller_code = False
                hpp_parameters.hide_crn1 = False
                hpp_parameters.hide_crn2 = False
                hpp_parameters.hide_crn3 = False
                hpp_parameters.return_bar_label = "Return Bar Label"
                hpp_parameters.return_bar_url = "http://yourmerchantwebsite.com/ReturnBarUrl"
                
                dvtoken_data = DVTokenData()
                dvtoken_data.dvtoken = "5999999789012346"
                dvtoken_data.expiry_date = "0521"
                dvtoken_data.update_dvtoken_expiry_date = False
                
                iframe_parameters = IframeParameters()
                iframe_parameters.css = ".control-label{color:blue;}"
                iframe_parameters.show_submit_button = True
                
                custom_field = CustomField()
                custom_field.custom_field = "A custom field"
                
                fraud_screening_request = FraudScreeningRequest()
                fraud_screening_request.perform_fraud_screening = True
                fraud_screening_request.device_fingerprint = "ExampleDeviceFingerprint"
                fraud_screening_request.customer_ip_address = "10.1.1.1"
                fraud_screening_request.txn_source_website_url = "www.txn-source.com"
                fraud_screening_request.custom_fields = [custom_field]
                
                request = TransactionAuthKeyRequest(credentials)
                request.base_url = "https://www.bpoint.com.au/webapi/v2"
                request.hpp_parameters = hpp_parameters
                request.dvtoken_data = dvtoken_data
                request.action = "payment"
                request.amount = 200
                request.currency = "AUD"
                request.crn1 = "Ref One"
                request.redirection_url = "http://yourmerchantwebsite.com/dvtokenreceipt"
                request.tokenisation_mode = 3     
                request.amex_express_checkout = False
                request.iframe_parameters = iframe_parameters
                request.fraud_screening_request = fraud_screening_request
                request.bypass_Three_ds = False
                
                response = request.submit()
                require_relative "API/BPOINT"
                
                cred = BPOINT::Credentials.new("APIUserName", "Passw0rd", "5353109000000000")
                
                hpp = BPOINT::HppTxnFlowParameters.new
                hpp.tokenise_txn_check_box_default_value = true
                hpp.hide_biller_code = false
                hpp.hide_crn1 = false
                hpp.hide_crn2 = false
                hpp.hide_crn3 = false
                hpp.return_bar_label = "Return Bar Label"
                hpp.return_bar_url = "http://yourmerchantwebsite.com/ReturnBarUrl"
                
                dvtoken_data = BPOINT::DVTokenData.new
                dvtoken_data.dvtoken = "5999999789012346"
                dvtoken_data.expiry_date = "0521"
                dvtoken_data.update_dvtoken_expiry_date = false
                
                iframe_parameters = BPOINT::IframeParameters.new
                iframe_parameters.css = ".control-label{color:blue;}"
                iframe_parameters.show_submit_button = true
                
                custom_field = BPOINT::CustomField.new
                custom_field.custom_field = "A custom field"
                
                fraud_screening_request = BPOINT::FraudScreeningRequest.new
                fraud_screening_request.perform_fraud_screening = true
                fraud_screening_request.device_fingerprint = "ExampleDeviceFingerprint"
                fraud_screening_request.customer_ip_address = "10.1.1.1"
                fraud_screening_request.txn_source_website_url = "www.txn-source.com"
                fraud_screening_request.custom_fields = [custom_field]
                
                req = BPOINT::TransactionAuthKeyRequest.new
                req.base_url = "https://www.bpoint.com.au/webapi/v2"
                req.action = "payment"
                req.amount = 200
                req.crn1 = "Authkey Test 1"
                req.merchant_reference = "Reference for merhcant"
                req.redirection_url = "http://yourmerchantwebsite.com"
                req.currency = "AUD"
                req.tokenisation_mode = 3  
                req.credentials = cred
                req.hpp_parameters = hpp
                req.amex_express_checkout = false
                req.iframe_parameters = iframe_parameters
                req.dvtoken_data = dvtoken_data
                req.fraud_screening_request = fraud_screening_request
                req.bypass_Three_ds = false
                  
                response = req.submit()
                import com.BPOINT.api.*;
                import java.util.ArrayList;
                import java.util.List;
                
                Credentials credentials = new Credentials("APIUserName", "Passw0rd", "5353109000000000");
                Sender s = new Sender();
                
                HppParameters hppParameters = new HppParameters();
                hppParameters.setTokeniseTxnCheckBoxDefaultValue(true);
                hppParameters.setHideBillerCode(true);
                hppParameters.setHideCrn1(true);
                hppParameters.setHideCrn2(true);
                hppParameters.setHideCrn3(true);
                hppParameters.setReturnBarLabel("Return Bar Label");
                hppParameters.setReturnBarUrl("http://yourmerchantwebsite.com/ReturnBarUrl");
                
                IframeParameters iframeParameters = new IframeParameters();
                iframeParameters.setCSS(".control-label{color:blue;}");
                iframeParameters.setShowSubmitButton(true);
                
                DVTokenData dvtokenData = new DVTokenData();
                dvtokenData.setDVToken("5999999789012346");
                dvtokenData.setExpiryDate("0521");
                dvtokenData.setUpdateDVTokenExpiryDate(false);
                
                CustomField customField = new CustomField();
                customField.setCustomField("A custom field");
                
                List<CustomField> customFieldArray = new ArrayList<CustomField>();
                customFieldArray.add(customField);
                
                FraudScreeningRequest fraudScreeningRequest = new FraudScreeningRequest();
                fraudScreeningRequest.setPerformFraudScreening(true);
                fraudScreeningRequest.setDeviceFingerprint("ExampleDeviceFingerprint");
                fraudScreeningRequest.setCustomerIPAddress("10.1.1.1");
                fraudScreeningRequest.setTxnSourceWebsiteURL("www.txn-source.com");
                fraudScreeningRequest.setCustomFields(customFieldArray);
                
                ProcessTxnData txn = new ProcessTxnData();
                txn.setAmount((long) 100); 
                txn.setCrn1("Java AuthKey Crn 1");
                txn.setAction("payment");
                txn.setCurrency("AUD");
                txn.setTestMode(false);
                txn.setTokenisationMode(TokenisationMode.TOKENISE);
                txn.setAmexExpressCheckout(false);
                txn.setDVTokenData(dvtokenData);
                txn.setBypassThreeDS(false);
                txn.setFraudScreeningRequest(fraudScreeningRequest);
                
                TxnAuthKeyRequest req = new TxnAuthKeyRequest(credentials);
                req.setBaseUrl("https://www.bpoint.com.au/webapi/v2");
                req.setProcessTxnData(txn);
                req.setRedirectionUrl("http://www.mywebsite.com");
                req.setWebHookUrl("http://www.mywebsite.com");
                req.setHppParameters(hppParameters); 
                req.setIframeParameters(iframeParameters);
                
                AuthKeyResponse resp;
                resp = s.submit(req);
                use BPOINT::API;
                use Data::Inspect qw(p);
                
                $BPOINT::Sender::base_url = "https://www.bpoint.com.au/webapi/v2";
                
                my $cred = BPOINT::Credentials->new(
                    username => 'APIUserName', 
                    password => 'Passw0rd', 
                    merchant_number => "5353109000000000"
                );
                
                my $req;
                
                my $hppParameters = BPOINT::HppTxnFlowParameters->new(
                    tokenise_txn_check_box_default_value => 1,
                    hide_biller_code => 0,
                    hide_crn1 => 0,
                    hide_crn2 => 0,
                    hide_crn3 => 0,
                    return_bar_label => "Return Bar Label",
                    return_bar_url => "http://yourmerchantwebsite.com/ReturnBarUrl"
                    
                );
                
                my $dvtokenData = BPOINT::DVTokenData->new(
                    dvtoken => "5999999789012346",
                    expiry_date => "0521",
                    update_dvtoken_expiry_date => 0
                );
                
                my $iframeParameters = BPOINT::IframeParameters->new(
                    css => ".control-label{color:blue;}", 
                    show_submit_button => 1
                );
                
                my $customField = BPOINT::CustomField->new( custom_field => "A custom field");
                my @customFieldArray = ($customField);
                
                my $fraudScreeningRequest = BPOINT::FraudScreeningRequest->new(
                    perform_fraud_screening => 1,
                    device_fingerprint => "ExampleDeviceFingerprint",
                    customer_ip_address => "10.1.1.1",
                    txn_source_website_url => "www.txn-source.com",
                );
                @{$fraudScreeningRequest->{custom_fields}} = @customFieldArray;
                
                $req = BPOINT::TransactionAuthKeyRequest->new(
                    action => "payment", 
                    redirection_url => "http://yourmerchantwebsite.com", 
                    crn1 => "This is a crn", 
                    amount => 12345, 
                    credentials => $cred,
                    tokenisation_mode => 3,
                    hpp_parameters => $hppParameters, 
                    amex_express_checkout => 0,
                    iframe_parameters => $iframeParameters,
                    dvtoken_data => $dvtokenData,
                    fraud_screening_request => $fraudScreeningRequest,
                    bypass_Three_ds => 0
                );
                
                $result = $req->submit();
                using BPOINT.API.Client.V2;
                using API.Client.Common;
                using API.Client.Common.Helpers;
                
                var txnClient = ClientFactory.
                GetClientInstance<TxnClient>(new JsonWebClientHelper(),
                "https://www.bpoint.com.au/webapi/v2",
                "APIUserName",
                "5353109000000000",
                "Passw0rd",
                null);
                
                var apiReq = new CreateProcessTxnAuthKeyReq
                {
                    WebHookUrl = null,
                    RedirectionUrl = "http://yourmerchantwebsite.com/txnreceipt",
                    ProcessTxnData = new ProcessTxnData
                        {
                            TestMode = false,
                            Action = "payment",
                            BillerCode = null,
                            MerchantReference = "test merchant ref",
                            Crn1 = "test Crn1",
                            Crn2 = "test Crn2",
                            Crn3 = "test Crn3",
                            Currency = "AUD",
                            Amount = 0,
                            AmountOriginal = 0,
                            AmountSurcharge = 0,
                            TokenisationMode = 0,
                            AmexExpressCheckout = false,
                            DVTokenData = new TokenDetails
                                {
                                    DVToken = "5999999789012346",
                                    ExpiryDate = "0521",
                                    UpdateDVTokenExpiryDate = false
                                },
                            Customer = new Customer
                                {
                                    ContactDetails = new ContactDetails
                                        {
                                            EmailAddress = "email@address.com"
                                        }
                                },
                            FraudScreeningRequest = new FraudScreeningRequest
                                {
                                    PerformFraudScreening = true,
                                    FraudScreeningDeviceFingerprint = "ExampleDeviceFingerprint",
                                    CustomerIPAddress = "10.1.1.1",
                                    SourceWebsiteURL = "www.txn-source.com",
                                    CustomFields = new [] { new CustomField{CustomFieldMember = "A custom field"} }
                                },
                            BypassThreeDS = false
                        },
                    HppParameters = new HppTxnFlowParameters 
                        {
                            TokeniseTxnCheckBoxDefaultValue = true,
                            HideBillerCode = false,
                            HideCrn1 = false,
                            HideCrn2 = false,
                            HideCrn3 = false,
                            ReturnBarLabel = "Return Bar Label",
                            ReturnBarUrl = "http://yourmerchantwebsite.com/ReturnBarUrl"
                        },
                    IframeParameters = new IframeFlowParameters 
                        {
                            CSS = ".control-label{color:blue;}", 
                            ShowSubmitButton = true
                        }
                };
                
                var response = txnClient.CreateProcessTxnAuthKey(apiReq);
                var BPOINT = require("./BPOINT_API/index.js");
                var api = new BPOINT();
                
                var hppParameters = new api.HppTxnFlowParameters({
                    TokeniseTxnCheckBoxDefaultValue : true,
                    HideBillerCode : false,
                    HideCrn1 : false,
                    HideCrn2 : false,
                    HideCrn3 : false,
                    ReturnBarLabel : "Return Bar Label",
                    ReturnBarUrl : "http://yourmerchantwebsite.com/ReturnBarUrl"
                });
                
                var dvtokenData = new api.DVTokenData({
                    DVToken : "5999999789012346",
                    ExpiryDate : "0521",
                    UpdateDVTokenExpiryDate : false
                });
                
                var customField = new api.CustomField({CustomField :"A custom field"});
                
                var fraudScreeningRequest = new api.FraudScreeningRequest({
                    PerformFraudScreening : true,
                    FraudScreeningDeviceFingerprint : "ExampleDeviceFingerprint",
                    CustomerIPAddress : "10.1.1.1",
                    TxnSourceWebsiteURL : "www.txn-source.com",
                    CustomFields : [customField]
                });
                
                var iframeParameters = new api.IframeParameters({ 
                    CSS : ".control-label{color:blue;}", 
                    ShowSubmitButton : true
                });
                
                var req = new api.TxnAuthKey({
                    Action: "payment", 
                    Amount : 2100, 
                    Crn1: "NodeJS AuthKey Test 1", 
                    TestMode : false, 
                    Currency: "AUD", 
                    RedirectionUrl : "http://yourmerchantwebsite.com/",
                    HppParameters : hppParameters,
                    AmexExpressCheckout : false,
                    IframeParameters : iframeParameters,
                    DVTokenData : dvtokenData,
                    FraudScreeningRequest : fraudScreeningRequest,
                    BypassThreeDS : false
                });
                
                req.baseUrl("https://www.bpoint.com.au/webapi/v2");
                		
                var creds = req.credentials({
                    Username : "APIUserName", 
                    Password: "Passw0rd", 
                    MerchantNumber   : "5353109000000000"
                });
                
                var resp = req.submit(ResponseHandler, // Custom Callback Function
                function(code, body) { console.log(code + " : " + body); }, // Error Callback Function
                creds);
                //Configure the ApiConfig.java file to input your API user and Merchant credentials
                import main.java.com.BPOINT.android.api.ApiManager;
                
                String paymentAction = "payment";
                float txnAmount = 25.50f;
                String crn1 = "A CRN";
                String crn2 = "A CRN";
                String crn3 = "A CRN";
                String paymentCurrency = "AUD"
                
                String response = ApiManager.createAnAuthKeyToProcessTransactionWithAction(paymentAction,txnAmount, crn1, crn2, crn3, paymentCurrency);
                
                //Configure the BPOINTApiConfig.h file to input your API user and Merchant credentials
                #import <Foundation/Foundation.h>
                #import <bPointSDK/bPointSDK.h>
                
                NSString* paymentType = @"payment";
                GCFLoat txnAmmount = 25.50f;
                NSString* crn1 = @"A CRN";
                NSString* currency = @"AUD";
                
                [[BPOINTTransaction sharedBPOINTTransaction] createUrlToProcessTransactionWithAction:paymentType invoiceAmount:txnAmmount invoiceNumber:crn1 currency:currency UsingDelegate:self];
                

                Response

                Response is a JSON object with the following properties.

                Property Type Description
                APIResponse object APIResponse object
                AuthKey string Unique key that the merchant must use when invoking the "Process Transaction" operation using Browser integration method. The AuthKey is returned only if the API response code indicates success.
                HTTP/1.1 200 OK
                Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                Pragma: no-cache
                Content-Length: 108
                Content-Type: application/json; charset=utf-8
                Set-Cookie: ASP.NET_SessionId=5g35ug3awdd5pifyctnrveol; path=/; secure; HttpOnly
                Access-Control-Allow-Origin: *
                Access-Control-Allow-Headers: Content-Type
                Access-Control-Allow-Methods: GET, POST, OPTIONS
                Access-Control-Max-Age: 1728000
                Date: Fri, 12 Dec 2014 01:27:07 GMT
                
                {
                  "APIResponse" : {
                    "ResponseCode" : 0,
                    "ResponseText" : "Success"
                  },
                  "AuthKey" : "df998fea-f309-4e6e-9629-7149799dc028"
                }
                Webform

                Processes a transaction.

                Note: This request is made directly from the cardholder's browser. The browser will also automatically handle the response and redirect the cardholder to merchant's redirection URL and optionally perform a server-to-server callback (see section WebHooks). Should neither of these be received, a Search Transactions call (see 2 Party Search Transactions) should be made to determine the transaction outcome.

                URL

                POST /txns/webform/process

                Request Headers

                This is a browser integration method. You will be required to supply following HTTP headers with your POST request.

                Content-Type
                application/x-www-form-urlencoded charset=utf-8

                Response Headers

                Location
                merchant's redirection URL, API response appended to query string

                Request

                Request is a Form with following properties.

                Property Type Description
                Amount string

                Transaction amount. Ignored if provided in "Create AuthKey" request.

                AmountOriginal string Total payment amount without surcharge - this field is for information and reporting only and does not alter the value of the transaction (as specified by Amount) Optional
                AmountSurcharge string Surcharge amount for payment - this field is for information and reporting only and does not alter the value of the transaction (as specified by Amount) Optional
                AuthKey string Unique key created using "Create AuthKey" operation (MaxLen = 500)
                BillerCode string Ignored if provided in "Create AuthKey" request. (MaxLen = 50) Optional
                CardHolderName string Cardholder name (MaxLen = 50) Optional
                CardNumber string Card number(MinLen = 13, MaxLen = 16)
                Crn1 string Ignored if provided in "Create AuthKey" request. (MaxLen = 50)
                Crn2 string Ignored if provided in "Create AuthKey" request. (MaxLen = 50) Optional
                Crn3 string Ignored if provided in "Create AuthKey" request. (MaxLen = 50) Optional
                Currency string

                The currency that the transaction is to be processed in as an ISO 4217 code (see section Currency List)

                Your bank merchant account must be configured to accept the currency used in this field.

                Please speak to your bank if you are unsure what currencies your bank merchant account can transact in (MinLen = 3, MaxLen = 3). Optional

                Cvn string Card verification number (MinLen = 3, MaxLen = 4)
                ExpiryDateMonth string

                Card expiry date month

                In MM format (MinLen = 2, MaxLen = 2)

                ExpiryDateYear string

                Card expiry date year

                In YY format (MinLen = 2, MaxLen = 2)

                MerchantReference string Reference that is for internal use only. Ignored if provided in "Create AuthKey" request. (MaxLen = 50) Optional
                StoreCard boolean

                Flag to indicate whether the cardholder agrees to save their card details.

                This flag allows merchant to create a dvtoken from the card details used to process the transaction. (if present must be either "true" or "false") Optional

                POST https://www.bpoint.com.au/webapi/v2/txns/webform/process HTTP/1.1
                Content-Type: application/x-www-form-urlencoded charset=utf-8
                Host: www.bpoint.com.au
                Content-Length: 276
                Expect: 100-continue
                
                &BillerCode=&MerchantReference=test+merchant+ref&Crn1=test+crn1&Crn2=test+crn2&Crn3=test+crn3&Amount=199.00&CardNumber=5123456789012346&ExpiryDateMonth=05&ExpiryDateYear=17&Cvn=123&CardHolderName=John+Smith&StoreCard=0&AuthKey=df998fea-f309-4e6e-9629-7149799dc028

                Response Location

                Merchant's redirection URL, API response appended to query string

                HTTP/1.1 302 Found
                Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                Pragma: no-cache
                Location: http://yourmerchantwebsite.com/txnreceipt?ResponseCode=0&ResponseText=Success&ResultKey=13cfa799-8278-4872-a705-7ed49d516c0b
                Set-Cookie: ASP.NET_SessionId=3cddgyr1zk3zl4oiwciqdvzd; path=/; secure; HttpOnly
                p3p: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
                Access-Control-Allow-Origin: *
                Access-Control-Allow-Headers: Content-Type
                Access-Control-Allow-Methods: GET, POST, OPTIONS
                Access-Control-Max-Age: 1728000
                Date: Fri, 12 Dec 2014 01:27:09 GMT
                Content-Length: 0
                JavaScript - Simple

                The API JavaScript makes it easy to process card payments without having sensitive data pass through your servers.

                Including api.js

                Add this script tag to your page (preferably at the bottom) to get started with the JavaScript API.

                <script src="https://www.bpoint.com.au/webapi/CBA/api.js?v=2" type="text/javascript"></script>

                Setting up payment form

                This is all you need to start processing payments. The JavaScript library will process the payment and redirect the browser to the "RedirectionUrl" supplied when the AuthKey was created (Refer AuthKey). At the end of the redirection, invoke the "Retrieve Payment Result" call (Refer Transaction Result) from your web server to retrieve the payment result and render the payment receipt to your customers.

                The three parameters in the sample code are compulsory. There are several optional parameters, which you can pass to the "SetupPayment" method to further customise the payment form as required. Please find below information about the parameters which you can pass to the "SetupPayment" method.

                CBA.SetupPayment({
                  AppendToElementId: "pay-form-location",
                  AuthKey: $("#AuthKey").val(),
                  DefaultErrorUrl: "https://www.yourdomain.com/handleerror"
                });
                Property Type Description
                AppendToElementId string ID of the HTML element on your page where you want the payment form to be inserted.
                AuthKey string Unique key created using "Create AuthKey" operation (Refer AuthKey). You may store this in a hidden field and then pass the value. (MaxLen = 500)
                DefaultErrorUrl string A fall-back URL which the browser is redirected to if a response is not received.
                BillerCode object Include this object with appropriate flags if you wish to display the Biller code field on the page. Optional
                Crn1 object Include this object with appropriate flags if you wish to display the Crn 1 field on the page. Optional
                Crn2 object Include this object with appropriate flags if you wish to display the Crn 2 field on the page. Optional
                Crn3 object Include this object with appropriate flags if you wish to display the Crn 3 field on the page. Optional
                MerchantReference object Include this object with appropriate flags if you wish to display the Merchant Reference field on the page. Optional
                Amount object Include this object with appropriate flags if you wish to display amount field on the page. Optional
                StoreCard object Include this object with appropriate flags if you wish to offer option for your user to store the card details for future use. This will render a checkbox on the payment form. Optional
                Type string Specifies the capture type:
                  TruncatedCardNumberValue string If provided this variable will be displayed as the truncated card number.
                  ExpiryDateValue string Card expiry date In MMYY format.
                  JavaScript - Advanced

                  "SetupPayment" as explained above is the simple approach to begin processing payments using the API. For more control over the user experience, please follow the custom payment method as described below.

                  Process payment

                  Invoke the process payment method as explained below when you are ready to process the payment e.g. a button click. "ProcessPayment" is an asynchronous call - it returns immediately and invokes the "CallbackFunction" when it receives a response from the server.

                  CBA.ProcessPayment({
                      AuthKey: $("#AuthKey").val(),
                      BillerCode: $("#BillerCode").val(),
                      Crn1: $("#Crn1").val(),
                      Crn2: $("#Crn2").val(),
                      Crn3: $("#Crn3").val(),
                      MerchantReference: $("#MerchantReference").val(),
                      EmailAddress: $("#EmailAddress").val(),
                      Amount: $("#Amount").val(),
                      AmountOriginal: $("#AmountOriginal").val(),
                      AmountSurcharge: $("#AmountSurcharge").val(),
                      Currency: $("#Currency").val(),
                      CardNumber: $("#CardNumber").val(),
                      Cvn: $("#Cvn").val(),
                      ExpiryMonth: $("#ExpMonth").val(),
                      ExpiryYear: $("#ExpYear").val(),
                      CardHolderName: $("#CardHolderName").val(),
                      StoreCard: $("#StoreCard").prop("checked"),
                      CallbackFunction: ProcessPaymentCallBack
                      Type: $("#Type").val()
                  });
                  Property Type Description
                  AuthKey string Unique key created using "Create AuthKey" operation (Refer AuthKey). You may store this in a hidden field and then pass the value. (MaxLen = 500)
                  BillerCode string Biller code to attach to a payment (MaxLen = 50) Optional
                  Crn1 string Crn 1 for the payment. This is optional if supplied while creating the AuthKey (Refer AuthKey) (MaxLen = 50).
                  Crn2 string Crn 2 for the payment Optional (MaxLen = 50).
                  Crn3 string Crn 3 for the payment Optional (MaxLen = 50).
                  MerchantReference string Merchant Reference for the payment Optional (MaxLen = 50).
                  EmailAddress string Customer's email address. (MaxLen = 250) Optional
                  Currency string

                  The currency that the transaction is to be processed in as an ISO 4217 code (see section Currency List)

                  Your bank merchant account must be configured to accept the currency used in this field.

                  Please speak to your bank if you are unsure what currencies your bank merchant account can transact in (MinLen = 3, MaxLen = 3). Optional

                  Amount string Amount to process Optionalif supplied while creating the AuthKey (Refer AuthKey)
                  AmountOriginal string Total payment amount without surcharge - this field is for information and reporting only and does not alter the value of the transaction (as specified by Amount) Optional
                  AmountSurcharge string Surcharge amount for payment - this field is for information and reporting only and does not alter the value of the transaction. (as specified by Amount) Optional
                  CardNumber numeric Card number you wish to charge
                  Cvn numeric Card verification number
                  ExpiryMonth numeric Expiry month of the card
                  ExpiryYear numeric Expiry year of the card
                  CardHolderName string Name on the card Optional
                  StoreCard boolean Set this flag if you wish to create a dvtoken to store the card details for future use. Alternatively you may render a checkbox on your form for your customer to opt in. Optional
                  CallbackFunction function This is a callback you provide to handle the response from the API. Please see below for more information on this.
                  Type string Specifies the capture type:

                    The "CallbackFunction" is a JavaScript function you provide to handle the response from the API. It does the following:

                    1. If the payment information returned an error, display it on the page; or
                    2. If an error was not returned, then submit the result back to your server to call the "Retrieve Transaction Result" (Refer AuthKey) and render the receipt. If you are integrating for a shopping cart then this would be the time to check out the cart. Note: It is recommended that you do not submit the card details to your server, and only submit the result of the call back to your server.
                    function ProcessPaymentCallBack(result) {
                     var errors = new Array();
                    
                     if (result.AjaxResponseType == 0) { 
                     //AJAX call was successful		
                      if (result.ApiResponseCode == 0) {
                       //API returned success. 
                       //Refer to (API Response Codes) for API Response codes.
                       //Submit result.ResultKey to your server for further 
                       //processing (Refer Transaction Result)
                      }
                      else if (result.ApiResponseCode == 300) {
                       if (result.RedirectionUrl != null && result.RedirectionUrl.length > 0)
                        window.location.href = result.RedirectionUrl;
                       else
                        errors = result.Errors;
                      }
                      else {
                       errors = result.Errors;
                      }
                     }
                     else if(result.AjaxResponseType == 1) { 
                      //Error with AJAX call
                      errors = result.Errors;
                     }
                     else if(result.AjaxResponseType == 2) { 
                      //AJAX call timed out 
                      errors = result.Errors;
                     }
                    	
                     //Show errors on the page
                     if (errors.length > 0) {
                      var ul = $("<ul></ul>");
                      
                      $.each(errors, function (i, r) {
                       ul.append("<li>" + r.Message + "</li>");
                      });
                    
                      $(".validation-summary").append(ul).show();
                     }
                    }

                    Result Object

                    The result object is described as below.

                    Property Type Description
                    AjaxResponseType numeric This is the result of the AJAX call. This will assist you in handling the call back.
                    ApiResponseCode numeric This is the response code returned by the API
                    Errors array List of errors returned.
                    ResultKey string This is the result key that you will have to submit to retrieve the transaction result and present the receipt to the customer,"Retrieve Transaction Result" (Refer Transaction Result).
                    RedirectionUrl string URL to use for redirection (if you receive an ApiResponseCode of 300, perform a full browser redirect with this value).
                    3 Party Redirect

                    Note: The payment page presented to the cardholder is served from the payment platform.

                    To process a transaction using this method, the cardholder's browser must be directed to the appropriate URL using either a hyperlink or HTTP 302 redirect. In both cases, two values are required to be included:

                    • MerchantShortName. This is assigned by CBA and is part of your payment page URL.
                    • authKey - Obtained via AuthKey call

                    Hyperlink example

                    Render a link on your page similar to the following - this will direct the cardholder to the Hosted Payment Page

                    <a href="https://www.bpoint.com.au/pay/{MerchantShortName}?in_pay_token={authKey}">Proceed to payment</a>

                    Redirect example

                    Send the following HTTP 302 Redirect to the cardholder's browser - this will direct the cardholder to the Hosted Payment Page

                    HTTP/1.1 302 Found
                    Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                    Pragma: no-cache
                    Location: https://www.bpoint.com.au/pay/{MerchantShortName}?in_pay_token={authKey} 

                    Response

                    An API response will be appended to the query string of the redirection URL specified in the authkey request.

                    China UnionPay transactions will always have a response code of "P". You will need to poll BPOINT using the 2 Party Search Transaction method to obtain the result. China UnionPay only returns a response for approved transactions. If the transaction is not completed and approved within 2 hours then a response code of "x" - "description" will be returned.

                    HTTP/1.1 302 Found
                    Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                    Pragma: no-cache
                    Location: http://yourmerchantwebsite.com/txnreceipt?ResponseCode=0&ResponseText=Success&ResultKey=13cfa799-8278-4872-a705-7ed49d516c0b
                    Set-Cookie: ASP.NET_SessionId=3cddgyr1zk3zl4oiwciqdvzd; path=/; secure; HttpOnly
                    p3p: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
                    Access-Control-Allow-Origin: *
                    Access-Control-Allow-Headers: Content-Type
                    Access-Control-Allow-Methods: GET, POST, OPTIONS
                    Access-Control-Max-Age: 1728000
                    Date: Fri, 12 Dec 2014 01:27:09 GMT
                    Content-Length: 0
                    3 Party Iframe

                    There are two available methods.

                    • Submit button inside iframe (multi page / button mode)
                    • Submit button outside iframe (single page / button mode)

                    Submit button inside example

                    If IframeParameters.ShowSubmitButton is set to true in create AuthKey request (see AuthKey) then the iframe payment page will operate in the multi-page / button mode. In this mode the "Process Iframe Payment" method (See submit button outside example) does not need to be invoked. Instead, the ProcessTxnData.Amount and ProcessTxnData.Crn1 parameters need to be submitted in the create AuthKey call.

                    <iframe src="https://www.bpoint.com.au/webapi/v2/txns/iframe/{authKey}" frameborder="0"></iframe>

                    Clicking the "Submit" button inside iframe will process the payment and will redirect the iframe to the RedirectionUrl specified in the AuthKey request.

                    http://yourmerchantwebsite.com/txnreceipt?ResponseCode=0&ResponseText=Success&ResultKey=13cfa799-8278-4872-a705-7ed49d516c0b

                    Request

                    The Process Iframe Payment request is a TxnReq (transaction request details) JSON object with the following properties.

                    Property Type Description
                    AuthKey string Unique key created using "Create AuthKey" operation (see AuthKey)
                    Amount string

                    If AUD use 120.00 for $120.00. If JPY use 120 for ¥120.Optional Ignored if provided in "Create AuthKey" request.

                    AmountOriginal string Total payment amount without surcharge - this field is for information and reporting only and does not alter the value of the transaction (as specified by Amount) Optional
                    AmountSurcharge string Surcharge amount for payment - this field is for information and reporting only and does not alter the value of the transaction (as specified by Amount) Optional
                    BillerCode string Ignored if provided in "Create AuthKey" request Optional
                    CardDetails object
                    Crn1 string Ignored if provided in "Create AuthKey" request
                    Crn2 string Ignored if provided in "Create AuthKey" request Optional
                    Crn3 string Ignored if provided in "Create AuthKey" request Optional
                    EmailAddress string Ignored if provided in "Create AuthKey" request. (MaxLen = 250) Optional
                    Currency string

                    The currency that the transaction is to be processed in as an ISO 4217 code (see section Currency List)

                    Your bank merchant account must be configured to accept the currency used in this field.

                    Please speak to your bank if you are unsure what currencies your bank merchant account can transact in (MinLen = 3, MaxLen = 3). Optional

                    MerchantReference string Reference that is for internal use only. Ignored if provided in "Create AuthKey" request Optional
                    StoreCard boolean Flag to indicate whether the cardholder agrees to save their card details. This flag allows merchant to create a dvtoken from the card details used to process the transaction. Optional
                    FraudScreeningDeviceFingerprint string Machine fingerprint for fraud screening.Optional

                    Submit button outside example

                    If IframeParameters.ShowSubmitButton is either not set (default) or set to false in create AuthKey call (see AuthKey) then the iframe payment page will operate in the single page / button mode. In this mode as the consumer enters their details into the card fields (card number, expiry date and cvn), it will get stored on the AuthKey session. The Process Iframe Payment (https://www.bpoint.com.au/webapi/v2/txns/processiframetxn/{authKey}) function will need to be invoked to process the payment, this can be either an ajax call or a server to server call.

                    Server to server example

                    POST https://www.bpoint.com.au/webapi/v2/txns/processiframetxn/{authKey} HTTP/1.1
                    Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=
                    Content-Type: application/json; charset=utf-8
                    Host: www.bpoint.com.au
                    Content-Length: 292
                    Expect: 100-continue
                    Connection: Keep-Alive
                    
                    {
                      "TxnReq" : {
                        "Amount" : "101.00",
                        "AmountOriginal" : "100.00",
                        "AmountSurcharge" : "1.00",
                        "Currency" : "AUD",
                        "MerchantReference" : "test merchant reference",
                        "Crn1" : "Transaction Crn 1",
                        "Crn2" : "Transaction Crn 2",
                        "Crn3" : "Transaction Crn 3",
                        "BillerCode" : "00Example00",
                        "StoreCard" : false,
                        "EmailAddress" : "user@test.com",
                        "CardDetails" : {
                            "CardHolderName" : "John Smith",
                            "ExpiryDateMonth" : "07",
                            "ExpiryDateYear" : "20"
                        },
                        "FraudScreeningDeviceFingerprint" : "0400l1oURA1kJHkN<1900 characters removed>+ZKFOkdULYCXsUu0Oxk="
                      }
                    }
                    include ("./API/BPOINT.php");
                    
                    BPOINT\URLDirectory::setBaseURL("reserved","https://www.bpoint.com.au/webapi/v2");
                    
                    $credentials = new BPOINT\Credentials("APIUserName", "Passw0rd", "5353109000000000", BPOINT\Mode::Live);
                    
                    $cardDetails = new BPOINT\AuthKeyCardDetails();
                    $cardDetails->setCardHolderName("John Smith");
                    $cardDetails->setExpiryDateMonth("07");
                    $cardDetails->setExpiryDateYear("20");
                    
                    $txnWithAuth = new BPOINT\TransactionWithAuthKey();
                    $txnWithAuth->setAmount("101.00");
                    $txnWithAuth->setAmountOriginal("100.00");
                    $txnWithAuth->setAmountSurcharge("1.00");
                    $txnWithAuth->setCardDetails($cardDetails);
                    $txnWithAuth->setCurrency("AUD");
                    $txnWithAuth->setCrn1("Transaction Crn 1");
                    $txnWithAuth->setCrn2("Transaction Crn 2");
                    $txnWithAuth->setCrn3("Transaction Crn 3");
                    $txnWithAuth->setEmailAddress("user@test.com");
                    $txnWithAuth->setStoreCard(false);
                    $txnWithAuth->setBillerCode("00Example00");
                    $txnWithAuth->setMerchantReference("test merchant reference");
                    $txnWithAuth->setFraudScreeningDeviceFingerprint("0400l1oURA1kJHkN<1900 characters removed>+ZKFOkdULYCXsUu0Oxk=");
                    
                    $processIframeTxn = new BPOINT\ProcessIframeTxn("df998fea-f309-4e6e-9629-7149799dc028");
                    $processIframeTxn->setCredentials($credentials);
                    $processIframeTxn->setProcessTransactionWithAuthKey($txnWithAuth);
                    
                    $response = $processIframeTxn->submit();
                    from BPOINT.Requests import Credentials, TransactionWithAuthKeyRequest,\
                    ProcessIframeTxnRequest
                    
                    from BPOINT.Utils import AuthKeyCardDetails
                    
                    credentials = Credentials("APIUserName", "Passw0rd", "5353109000000000")
                    
                    card_details = AuthKeyCardDetails()
                    card_details.card_holder_name = "a name"
                    card_details.expiry_date_month = "07"
                    card_details.expiry_date_year = "20"
                    
                    txn_with_auth = TransactionWithAuthKeyRequest()
                    txn_with_auth.crn1 = "Transaction Crn 1"
                    txn_with_auth.crn2 = "Transaction Crn 2"
                    txn_with_auth.crn3 = "Transaction Crn 3"
                    txn_with_auth.amount = "101.00"
                    txn_with_auth.amount_original = "100.00"
                    txn_with_auth.amount_surcharge = "1.00"
                    txn_with_auth.currency = "AUD"
                    txn_with_auth.merchant_reference = "test merchant reference"
                    txn_with_auth.biller_code = "00Example00"
                    txn_with_auth.store_card = False
                    txn_with_auth.card_details = card_details
                    txn_with_auth.email_address = "user@test.com"
                    txn_with_auth.fraud_screening_device_fingerprint = "0400l1oURA1kJHkN<1900 characters removed>+ZKFOkdULYCXsUu0Oxk="
                    
                    request = ProcessIframeTxnRequest(credentials,"df998fea-f309-4e6e-9629-7149799dc028")
                    request.base_url = "https://www.bpoint.com.au/webapi/v2"
                    request.process_transaction_with_auth_key_request = txn_with_auth
                    
                    response = request.submit()
                    require_relative "API/BPOINT"
                    
                    cred = BPOINT::Credentials.new("APIUserName", "Passw0rd", "5353109000000000")
                    
                    card_details = BPOINT::AuthKeyCardDetails.new()
                    card_details.card_holder_name = "a name"
                    card_details.expiry_date_month = "07"
                    card_details.expiry_date_year = "20"
                    
                    txn_with_auth = BPOINT::TransactionWithAuthKeyRequest.new()
                    txn_with_auth.amount = "101.00"
                    txn_with_auth.amount_original = "100.00"
                    txn_with_auth.amount_surcharge = "1.00"
                    txn_with_auth.card_details = card_details
                    txn_with_auth.currency = "AUD"
                    txn_with_auth.email_address = "user@test.com"
                    txn_with_auth.merchant_reference = "test merchant reference"
                    txn_with_auth.biller_code = "00Example00"
                    txn_with_auth.store_card = false
                    txn_with_auth.fraud_screening_device_fingerprint = "0400l1oURA1kJHkN<1900 characters removed>+ZKFOkdULYCXsUu0Oxk="
                    
                    req = BPOINT::ProcessIframeTxnRequest.new("df998fea-f309-4e6e-9629-7149799dc028")
                    req.base_url = "https://www.bpoint.com.au/webapi/v2"
                    req.credentials = cred
                    req.proess_transaction_with_auth_key_request = txn_with_auth
                    
                    response = req.submit()
                    import com.BPOINT.api.*;
                    
                    Credentials credentials = new Credentials("APIUserName", "Passw0rd", "5353109000000000");
                    Sender s = new Sender();
                    
                    CreditCardDetailsWith2PartExpiryDate cardDetails = new CreditCardDetailsWith2PartExpiryDate();
                    cardDetails.setCardHolderName("a name");
                    cardDetails.setExpiryDateMonth("07");
                    cardDetails.setExpiryDateYear("20");
                    
                    TxnRequestWithAuthKey txnWithAuth = new TxnRequestWithAuthKey();
                    txnWithAuth.setAmount("101.00");
                    txnWithAuth.setAmountOriginal("100.00");
                    txnWithAuth.setAmountSurcharge("1.00");
                    txnWithAuth.setCurrency("AUD");
                    txnWithAuth.setCrn1("Transaction Crn 1");
                    txnWithAuth.setCrn2("Transaction Crn 2");
                    txnWithAuth.setCrn3("Transaction Crn 3");
                    txnWithAuth.setCardDetails(cardDetails);
                    txnWithAuth.setBillerCode("00Example00");
                    txnWithAuth.setMerchantReference("test merchant reference");
                    txnWithAuth.setEmailAddress("user@test.com");
                    txnWithAuth.setStoreCard(false);
                    txnWithAuth.setFraudScreeningDeviceFingerprint("0400l1oURA1kJHkN<1900 characters removed>+ZKFOkdULYCXsUu0Oxk=");
                    
                    ProcessTxnWithAuthKeyReq processTxnAuthReq = new ProcessTxnWithAuthKeyReq();
                    processTxnAuthReq.setTxnReq(txnWithAuth);
                    
                    ProcessIframeTxnRequest req = new ProcessIframeTxnRequest(credentials,"df998fea-f309-4e6e-9629-7149799dc028");
                    req.setBaseUrl("https://www.bpoint.com.au/webapi/v2");
                    req.setProcessTxnWithAuthKeyReq(processTxnAuthReq);
                    
                    ProcessTxnWithAuthKeyResp resp;
                    resp = s.submit(req);
                    use BPOINT::API;
                    use Data::Inspect qw(p);
                    
                    $BPOINT::Sender::base_url = "https://www.bpoint.com.au/webapi/v2";
                    
                    my $cred = BPOINT::Credentials->new(
                        username => 'APIUserName', 
                        password => 'Passw0rd', 
                        merchant_number => "5353109000000000"
                    );
                    
                    my $authCardDetails = BPOINT::AuthKeyCardDetails->new(
                        card_holder_name => "A name",
                        expiry_date_month => "07",
                        expiry_date_year => "20"
                    );
                    
                    my $authkeytxnreq = BPOINT::TransactionRequestWithAuthKey->new(
                        auth_card_details => $authCardDetails,
                        amount => "101.00",
                        amount_original => "100.00",
                        amount_surcharge => "1.00",
                        currency => "AUD",
                        crn1 => "Transaction Crn 1",
                        crn2 => "Transaction Crn 2",
                        crn3 => "Transaction Crn 3",
                        merchant_reference => "test merchant reference",
                        biller_code => "00Example00",
                        store_card => 0,
                        email_address => "user@test.com",
                        fraud_screening_device_fignerprint => "0400l1oURA1kJHkN<1900 characters removed>+ZKFOkdULYCXsUu0Oxk="
                    );
                     
                    my $processtTxnWithAuthReq = BPOINT::ProcessTxnWithAuthKeyRequest->new(
                        txn_request_with_auth_key => $authkeytxnreq
                    );
                    
                    my $req = BPOINT::ProcessIframeTxnRequest->new(
                        credentials => $cred
                        process_txn_with_auth_key_request => $processtTxnWithAuthReq,
                        auth_key => "df998fea-f309-4e6e-9629-7149799dc028"
                    );
                    
                    $result = $req->submit();
                    using BPOINT.API.Client.V2;
                    using API.Client.Common;
                    using API.Client.Common.Helpers;
                    
                    var txnClient = ClientFactory.
                    GetClientInstance<TxnClient>(new JsonWebClientHelper(),
                    "https://www.bpoint.com.au/webapi/v2",
                    "APIUserName",
                    "5353109000000000",
                    "Passw0rd",
                    null);
                    
                    var apiReq = new ProcessTxnWithAuthKeyReq
                    {
                        TxnReq = new TxnRequestWithAuthKey
                        {
                            Amount = "101.00",
                            AmountOriginal = "100.00",
                            AmountSurcharge = "1.00",
                            BillerCode = "00Example00",
                            CardDetails = new CreditCardDetailsWith2PartExpiryDate
                            {
                                CardHolderName = "A name",
                                ExpiryDateMonth = "07",
                                ExpiryDateYear = "20"
                            },
                            Crn1 = "Transaction Crn 1",
                            Crn2 = "Transaction Crn 2",
                            Crn3 = "Transaction Crn 3",
                            Currency = "AUD",
                            EmailAddress = "user@test.com",
                            FraudScreeningDeviceFingerprint = "0400l1oURA1kJHkN<1900 characters removed>+ZKFOkdULYCXsUu0Oxk=",
                            MerchantReference = "test merchant reference",
                            StoreCard = false
                        }
                    };
                    
                    var response = txnClient.ProcessIframeTxn("df998fea-f309-4e6e-9629-7149799dc028",apiReq);
                    var BPOINT = require("./BPOINT_API/index.js");
                    var api = new BPOINT();
                    
                    var cardDetails = new api.AuthKeyCardDetails({
                        CardHolderName : "A name",
                        CardExpiryMonth : "07",
                        CardExpiryYear : "20"
                    });
                    
                    var txnWithAuth = new api.TxnRequestWithAuthKey({
                        Amount : "101.00",
                        AmountOriginal : "100.00",
                        AmountSurcharge : "1.00",
                        CardDetails : cardDetails,
                        Currency : "AUD",
                        EmailAddress : "user@test.com",
                        MerchantReference : "test merchant reference",
                        Crn1 : "Transaction Crn 1",
                        Crn2 : "Transaction Crn 2",
                        Crn3 : "Transaction Crn 3",
                        BillerCode : "00Example00",
                        StoreCard : false,
                        FraudScreeningDeviceFingerprint : "0400l1oURA1kJHkN<1900 characters removed>+ZKFOkdULYCXsUu0Oxk="
                    });
                    
                    var processTxnAuthReq = new api.ProcessTxnWithAuthKeyReq({
                        TxnRequestWithAuthKey : txnWithAuth
                    });
                    
                    var req = new api.ProcessIframeTxn("df998fea-f309-4e6e-9629-7149799dc028",{
                        ProcessTxnWithAuthKeyReq : processTxnAuthReq
                    });
                    
                    var creds = req.credentials({
                        Username : "APIUserName", 
                        Password: "Passw0rd", 
                        MerchantNumber   : "5353109000000000"
                    });
                    
                    req.baseUrl("https://www.bpoint.com.au/webapi/v2");
                    
                    var resp = req.submit(ResponseHandler, // Custom Callback Function
                    function(code, body) { console.log(code + " : " + body); }, // Error Callback Function
                    creds);
                    //Not Available
                    
                    //Not Available
                    

                    Ajax example

                    <div class="validation-summary"></div>
                    <div>
                        <label>Crn1:</label>
                        <input id="Crn1" name="Crn1" type="text"/>
                    </div>
                    <div>
                        <label>Crn2:</label>
                        <input id="Crn2" name="Crn2" type="text"/>
                    </div>
                    <div>
                        <label>Crn3:</label>
                        <input id="Crn3" name="Crn3" type="text"/>
                    </div>
                    <div>
                        <label>EmailAddress:</label>
                        <input id="EmailAddress" name="EmailAddress" type="text"/>
                    </div>
                    <div>
                        <label>Amount:</label>
                        <input id="Amount" name="Amount" type="text"/>
                    </div>
                    <div>
                        <label>AmountOriginal:</label>
                        <input id="AmountOriginal" name="AmountOriginal" type="text"/>
                    </div>
                    <div>
                        <label>AmountSurcharge:</label>
                        <input id="AmountSurcharge" name="AmountSurcharge" type="text"/>
                    </div>
                    <div>
                        <label>CardHolderName:</label>
                        <input id="CardHolderName" name="CardHolderName" type="text"/>
                    </div>
                    
                    <div>
                        <iframe src="https://www.bpoint.com.au/webapi/v2/txns/iframe/{authKey}" frameborder="0"></iframe>
                    </div>
                    
                    <div>
                    <button id="btnProcess" type="button">Process</button>
                    </div>
                    
                    <script type="text/javascript">
                        $(document).ready(function () {
                            $("#btnProcess").click(function () {
                                $("input").attr("disabled", "disabled");
                                setTimeout(ProcessPayment, 1000);
                            });
                        });
                        
                    function ProcessPayment() {
                        $(".validation-summary").empty().hide();
                        var url = "https://www.bpoint.com.au/webapi/v2/txns/processiframetxn/{authKey}";
                        var jsonModel = JSON.stringify(GetModelForProcessing());
                    
                        $.ajax({
                            type: "POST",
                            dataType: "json",
                            contentType: "application/json",
                            url: url,
                            data: jsonModel,
                            success: function (result) {
                                $("input").removeAttr("disabled");
                    
                                if (result && result.APIResponse) {
                                    if (result.APIResponse.ResponseCode == 0) {
                                        window.location.href = result.RedirectionUrl;
                                    }
                                    else
                                        ShowError(result.APIResponse.ResponseText);
                                }
                                else {
                                    ShowError("Error processing your request. Response from API is either empty or invalid.");
                                }
                            },
                            error: function (jqXhr, textStatus) {
                                $("input").removeAttr("disabled");
                                ShowError("AJAX Error processing your request. XHR Status: " + textStatus);
                            }
                        });
                    }
                        
                    function ShowError(errorText) {
                        var ul = $("<ul></ul>");
                    
                        ul.append("<li>" + errorText + "</li>");
                    
                        $(".validation-summary").append(ul).show();
                    }
                    
                    function GetModelForProcessing() {
                        var model = new Object();
                    
                        model.TxnReq = new Object();
                        model.TxnReq.BillerCode = "BillerCode"
                        model.TxnReq.MerchantReference = "MerchantReference"
                        model.TxnReq.Crn1 = $("#Crn1").val();
                        model.TxnReq.Crn2 = $("#Crn2").val();
                        model.TxnReq.Crn3 = $("#Crn3").val();
                        model.TxnReq.EmailAddress = $("#EmailAddress").val();
                        model.TxnReq.Currency = "AUD"
                        model.TxnReq.Amount = $("#Amount").val();
                        model.TxnReq.AmountOriginal = $("#AmountOriginal").val();
                        model.TxnReq.AmountSurcharge = $("#AmountSurcharge").val();
                        model.TxnReq.CardDetails = new Object();
                        model.TxnReq.CardDetails.CardHolderName = $("#CardHolderName").val();
                    
                        return model;
                    } 
                    </script>

                    Response

                    Response is a JSON object with the following properties.

                    Property Type Description
                    APIResponse object APIResponse object
                    ResultKey string This is the result key that you will have to submit to retrieve the transaction result and present the receipt to the customer,"Retrieve Transaction Result" (Refer Transaction Result).
                    RedirectionUrl string URL to use for redirection (if you receive an ApiResponseCode of 300, perform a full browser redirect with this value).
                    HTTP/1.1 200 OK
                    Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                    Pragma: no-cache
                    Content-Length: 144
                    Content-Type: application/json; charset=utf-8
                    Set-Cookie: ASP.NET_SessionId=qmytl98r23956x2998tyuins; path=/; secure; HttpOnly
                    Access-Control-Allow-Origin: *
                    Access-Control-Allow-Headers: Content-Type
                    Access-Control-Allow-Methods: GET, POST, OPTIONS
                    Access-Control-Max-Age: 1728000
                    Date: Fri, 12 Dec 2014 01:27:07 GMT
                    
                    {
                      "APIResponse" : {
                        "ResponseCode" : 0,
                        "ResponseText" : "Success"
                      },
                      "ResultKey" : "df998fea-f309-4e6e-9629-7149799dc028",
                      "RedirectionUrl" : "http://yourmerchantwebsite.com/tokenreceipt?ResponseCode=0&ResponseText=Success&ResultKey=df998fea-f309-4e6e-9629-7149799dc028"
                    }
                    Transaction Result

                    Retrieves the result of a transaction processed via an operation using the Browser integration method. Should the resultKey not be available, the result of the transaction can be determined by issuing a Search Transactions (see section AuthKey) API call.

                    URL

                    GET /txns/withauthkey/{resultKey}

                    URL Parameters

                    resultKey - result key returned in a response to process transaction operation

                    Request Headers

                    This is a browser integration method. You will be required to supply following HTTP headers with your GET request

                    Authorization
                    base64 encoded API user credentials

                    Response Headers

                    Content-Type
                    application/json; charset=utf-8
                    GET https://www.bpoint.com.au/webapi/v2/txns/withauthkey/13cfa799-8278-4872-a705-7ed49d516c0b HTTP/1.1
                    Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=
                    Host: www.bpoint.com.au
                    include ("./API/BPOINT.php");
                    BPOINT\URLDirectory::setBaseURL("reserved","https://www.bpoint.com.au/webapi/v2");
                    $credentials = new BPOINT\Credentials("APIUserName", "Passw0rd", "5353109000000000", BPOINT\Mode::Live);
                    
                    $txn = new BPOINT\ResultKeyRetrieval("13cfa799-8278-4872-a705-7ed49d516c0b");
                    $txn->setCredentials($credentials);
                    
                    $response = $txn->submit();
                    from BPOINT.Requests import Credentials, TransactionResultKeyRequest
                        
                    from BPOINT.Utils import CardDetails
                    
                    credentials = Credentials("APIUserName", "Passw0rd", "5353109000000000")
                    
                    request = TransactionResultKeyRequest(credentials, "13cfa799-8278-4872-a705-7ed49d516c0b")
                    request.base_url = "https://www.bpoint.com.au/webapi/v2"
                    
                    response = request.submit()
                    require_relative "API/BPOINT"
                    
                    cred = BPOINT::Credentials.new("APIUserName", "Passw0rd", "5353109000000000")
                    
                    req = BPOINT::TransactionResultKeyRequest.new("13cfa799-8278-4872-a705-7ed49d516c0b")
                    
                    req.base_url = "https://www.bpoint.com.au/webapi/v2"
                    req.credentials =  cred
                    
                    response = req.submit()
                    import com.BPOINT.api.*;
                    
                    Credentials credentials = new Credentials("APIUserName", "Passw0rd", "5353109000000000");
                    Sender s = new Sender();
                    
                    TxnResultKeyRequest req = new TxnResultKeyRequest(credentials, "13cfa799-8278-4872-a705-7ed49d516c0b");
                    TxnResp resp;
                    
                    req.setBaseUrl("https://www.bpoint.com.au/webapi/v2");
                    req.setCredentials(credentials);
                    
                    resp = s.submit(req);
                    use BPOINT::API;
                    use Data::Inspect qw(p);
                    
                    $BPOINT::Sender::base_url = "https://www.bpoint.com.au/webapi/v2";
                    
                    my $cred = BPOINT::Credentials->new(
                    username => 'APIUserName', 
                    password => 'Passw0rd', 
                    merchant_number => "5353109000000000"
                    );
                    
                    my $req;
                    
                    $req = BPOINT::TransactionResultKeyRequest->new(
                    credentials => $cred, 
                    resultkey => "13cfa799-8278-4872-a705-7ed49d516c0b"
                    );
                       
                    $result = $req->submit();
                    using BPOINT.API.Client.V2;
                    using API.Client.Common;
                    using API.Client.Common.Helpers;
                    
                    var txnClient = ClientFactory.
                    GetClientInstance<TxnClient>(new JsonWebClientHelper(),
                    "https://www.bpoint.com.au/webapi/v2",
                    "APIUserName",
                    "5353109000000000",
                    "Passw0rd",
                    null);
                    
                    var response = txnClient.
                    RetrieveProcessTxnResult("13cfa799-8278-4872-a705-7ed49d516c0b");
                    var BPOINT = require("./BPOINT_API/index.js");
                    var api = new BPOINT();
                    
                    var req = new api.TxnResultKey(
                    "13cfa799-8278-4872-a705-7ed49d516c0b");
                    
                    req.baseUrl("https://www.bpoint.com.au/webapi/v2");
                    
                    var creds = req.credentials({
                    Username : "APIUserName", 
                    Password: "Passw0rd", 
                    MerchantNumber   : "5353109000000000"});
                    
                    var resp = req.submit(ResponseHandler, // Custom Callback Function
                    function(code, body) { console.log(code + " : " + body); }, // Error Callback Function
                    creds);
                    //Configure the ApiConfig.java file to input your API user and Merchant credentials
                    import main.java.com.BPOINT.android.api.ApiManager;
                    
                    String authKey = "13cfa799-8278-4872-a705-7ed49d516c0b";
                    
                    String response = retrieveTransactionResultWithTokenResult(authKey);
                    //Configure the BPOINTApiConfig.h file to input your API user and Merchant credentials
                    #import <Foundation/Foundation.h>
                    #import <bPointSDK/bPointSDK.h>
                    
                    NSString* authKey = @"13cfa799-8278-4872-a705-7ed49d516c0b";
                    
                    [[BPOINTTransaction sharedBPOINTTransaction] retrieveTransactionResultWithTokenResult:authKey UsingDelegate:self];

                    Response

                    Response is a JSON object with the following properties.

                    Property Type Description
                    APIResponse object APIResponse object
                    TxnResp object TxnResp object
                    HTTP/1.1 200 OK
                    Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                    Pragma: no-cache
                    Content-Length: 882
                    Content-Type: application/json; charset=utf-8
                    Access-Control-Allow-Origin: *
                    Access-Control-Allow-Headers: Content-Type
                    Access-Control-Allow-Methods: GET, POST, OPTIONS
                    Access-Control-Max-Age: 1728000
                    Date: Fri, 12 Dec 2014 01:27:09 GMT
                    
                    {
                      "APIResponse" : {
                        "ResponseCode" : 0,
                        "ResponseText" : "Success"
                      },
                      "TxnResp" : {
                        "Action" : "payment",
                        "Amount" : 19900,
                        "AmountOriginal" : 19900,
                        "AmountSurcharge" : 0,
                        "ThreeDSResponse" : null,
                        "AuthoriseId" : "384582",
                        "BankAccountDetails" : null,
                        "BankResponseCode" : "00",
                        "CVNResult" : {
                        "CVNResultCode" : "Unsupported"
                      },
                      "CardDetails" : {
                        "CardHolderName" : "John Smith",
                        "ExpiryDate" : "0521",
                        "MaskedCardNumber" : "512345...346"
                      },
                        "CardType" : "MC",
                        "Currency" : "AUD",
                        "MerchantReference" : "test merchant ref",
                        "IsThreeDS" : false,
                        "IsCVNPresent" : true,
                        "MerchantNumber  " : "5353109000000000",
                        "OriginalTxnNumber" : null,
                        "ProcessedDateTime" : "2014-12-12T12:27:15.6830000",
                        "RRN" : "434612384582",
                        "ReceiptNumber" : "49316631179",
                        "Crn1" : "test crn1",
                        "Crn2" : "test crn2",
                        "Crn3" : "test crn3",
                        "ResponseCode" : "0",
                        "ResponseText" : "Approved",
                        "BillerCode" : "",
                        "SettlementDate" : "20141212",
                        "Source" : "api",
                        "StoreCard" : false,
                        "IsTestTxn" : false,
                        "SubType" : "single",
                        "TxnNumber" : "1179",
                        "DVToken" : null,
                        "Type" : "internet"
                      }
                    }
                    Wallets

                    Your payment page can integrate with the digital wallet solutions from major providers.

                    Including wallets.js

                    Add this script tag to your page (preferably at the bottom) to get started with the wallet integration.

                    <script src="https://www.bpoint.com.au/webapi/CBA/wallets.js?v=2&authkey={AuthKey}" type="text/javascript"></script>
                    Amex Express Checkout

                    After passing in the AmexExpressCheckout variable as true in the AuthKey request (see section AuthKey) the Amex Express Checkout button can be integrated and configured for your payment page.

                    Configuring the Amex Express Checkout button

                    Add this tag to your page (preferably at the bottom but before the wallets.js script tag) to configure the Amex Express Checkout appearance.

                    <wallets:init amex-express-checkout-container-id="amexExpressCheckout" amex-express-checkout-button-color="dark" amex-express-checkout-button-theme="desktop"></wallets:init>

                    Amex Express Checkout Button Init

                    The init tag defines how the button will display:

                    Property Description
                    amex-express-checkout-container-id Attach the Amex Express Checkout button to the element with this id.
                    amex-express-checkout-button-color Configure the button to either "light" or "dark" depending on the background shade.
                    amex-express-checkout-button-theme Configure the display by choosing between "desktop", "mobile" and "responsive".

                    Placing Amex Express Checkout button

                    To place the Amex Express Checkout button, add a div tag to your page with the id that was passed into the amex-express-checkout-container-id parameter.

                    <div id="amexExpressCheckout"></div>

                    Tokens

                    Processes a transaction using either a card or previously added dvtoken.

                    URL Endpoint

                    https://www.bpoint.com.au/webapi/v2/dvtoken/

                    2 Party DVToken

                    2 Party Add DVToken

                    Securely stores payment details and creates a unique dvtoken.

                    URL

                    POST /dvtokens/

                    Request Headers

                    Use this method for direct communication between your server and the payment platform.

                    Authorization
                    base64 encoded API user credentials
                    Content-Type
                    application/json; charset=utf-8

                    Response Headers

                    Content-Type
                    application/json; charset=utf-8

                    Request

                    Request is a DVTokenReq (DVToken request details) JSON object with following properties.

                    Property Type Description
                    DVTokenReq object DVToken Request object
                    POST https://www.bpoint.com.au/webapi/v2/dvtokens/ HTTP/1.1
                    Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=
                    Content-Type: application/json; charset=utf-8
                    Host: www.bpoint.com.au
                    Content-Length: 247
                    Expect: 100-continue
                    Connection: Keep-Alive
                    
                    {
                    	"DVTokenReq" : {
                    		"BankAccountDetails" : null,
                    		"CardDetails" : {
                    			"CardHolderName" : "John Smith",
                    			"CardNumber" : "5123456789012346",
                    			"Cvn" : null,
                    			"ExpiryDate" : "0521"
                    		},
                    		"AcceptBADirectDebitTC" : true,
                    		"EmailAddress" : "john.smith@email.com.au",
                    		"Crn1" : "12345",
                    		"Crn2" : "",
                    		"Crn3" : null
                    	}
                    }
                    include ("./API/BPOINT.php");
                    								
                    BPOINT\URLDirectory::setBaseURL("reserved","https://www.bpoint.com.au/webapi/v2");
                    $credentials = new BPOINT\Credentials("APIUserName", "Passw0rd", "5353109000000000", BPOINT\Mode::Live);
                    
                    $txn = new BPOINT\AddDVToken();
                    $cardDetails = new BPOINT\CardDetails();
                    
                    $txn->setCredentials($credentials);
                    
                    $cardDetails->setCardNumber("XXXXXXXXXXXXXXXX");
                    $cardDetails->setCardHolderName("cardholdername");
                    $cardDetails->setExpiryDate("9901");
                    
                    $txn->setCardDetails($cardDetails);
                    
                    $txn->setEmailAddress("user@email.com");
                    $txn->setCrn1("DVToken Crn 1");
                    $txn->setCrn2("DVToken Crn 2");
                    $txn->setCrn3("DVToken Crn 3");
                    
                    $response = $txn->submit();
                    from BPOINT.Requests import Credentials, AddDVTokenRequest
                    from BPOINT.Utils import CardDetails   
                    
                    credentials = Credentials("APIUserName", "Passw0rd", "5353109000000000")
                    
                    request = AddDVTokenRequest(credentials)
                    request.base_url = "https://www.bpoint.com.au/webapi/v2"
                    
                    request.card_details = CardDetails(
                        card_holder_name = "MR C CARDHOLDER", 
                        expiry_date = "0521",
                        card_number = "4444333322221111")
                    request.crn1 = "Ref One"
                    
                    response = request.submit()
                    require_relative "API/BPOINT"
                    
                    cred = BPOINT::Credentials.new("APIUserName", "Passw0rd", "5353109000000000")
                    
                    req = BPOINT::AddDVTokenRequest.new()
                    req.credentials = cred
                      
                    cc = BPOINT::CardDetails.new()
                    cc.card_holder_name = "Card Holder Name"
                    cc.expiry_date = "9901"
                    cc.card_number = "5123456789012346"
                      
                    req.base_url = "https://www.bpoint.com.au/webapi/v2"
                    req.card_details = cc
                    req.crn1 = "crn 1"
                      
                    response = req.submit()
                    import com.BPOINT.api.*;
                    
                    Credentials credentials = new Credentials("APIUserName", "Passw0rd", "5353109000000000");
                    Sender s = new Sender();
                    TokenAddRequest req = new TokenAddRequest(credentials);
                    CreditCardDetails cc = new CreditCardDetails();
                    DVTokenResp resp;
                    
                    cc.setCardNumber("4444333322221111");
                    cc.setExpiryDate("0521");
                    cc.setCardHolderName("MR C CARDHOLDER");
                    
                    req.setBaseUrl("https://www.bpoint.com.au/webapi/v2");
                    req.setCrn1("Java DVToken 1");
                    req.setCardDetails(cc);
                    
                    resp = s.submit(req);
                    use BPOINT::API;
                    use Data::Inspect qw(p);
                    
                    $BPOINT::Sender::base_url = "https://www.bpoint.com.au/webapi/v2";
                    
                    my $cred = BPOINT::Credentials->new(
                    username => 'APIUserName', 
                    password => 'Passw0rd', 
                    merchant_number => "5353109000000000"
                    );
                    
                    my $req;
                    
                    my $cc = BPOINT::CardDetails->new(
                    card_number => "4444333322221111", 
                    expiry_date => "0521", 
                    card_holder_name => "MR C CARDHOLDER");
                    
                    $req = BPOINT::TokenAddRequest->new(
                    credentials => $cred, 
                    crn1 => "Perl DVToken 1", 
                    card_details => $cc);
                        
                       
                    $result = $req->submit();
                    using BPOINT.API.Client.V2;
                    using API.Client.Common;
                    using API.Client.Common.Helpers;
                    
                    var tokenClient = ClientFactory.GetClientInstance<TokenClient>(
                    new JsonWebClientHelper(),
                    "https://www.bpoint.com.au/webapi/v2",
                    "APIUserName",
                    "5353109000000000",
                    "Passw0rd",
                    null);
                    
                    var apiReq = new AddDVTokenReq()
                    {
                        DVTokenReq = new TokenRequest()
                        {
                            CardDetails = new  CreditCardDetails(){
                                CardHolderName = "John Smith",
                                CardNumber = "5123456789012346",
                                ExpiryDate = "0521"
                            },
                            Crn1 = "12345",
                            Crn2 = "",
                            Crn3 = "",
                            EmailAddress = "john.smith@email.com.au"
                        }
                    };
                    
                    var response = tokenClient.AddToken(apiReq);
                    var BPOINT = require("./BPOINT_API/index.js");
                    var api = new BPOINT();
                    
                    var cc = new api.CardDetails({
                    CardNumber: "4444333322221111", 
                    ExpiryDate : "0521", 
                    CardHolderName : "MR C CARDHOLDER"});
                    
                    var req = new api.DVTokenRequest({
                    Crn1: "NodeJS DVToken 1", 
                    EmailAddress: "notatoken@dvtoken.com", 
                    CardDetails: cc});
                    
                    req.baseUrl("https://www.bpoint.com.au/webapi/v2");
                    
                    var creds = req.credentials({
                    Username : "APIUserName", 
                    Password: "Passw0rd", 
                    MerchantNumber   : "5353109000000000"});
                    
                    var resp = req.submit(ResponseHandler, // Custom Callback Function
                    function(code, body) { console.log(code + " : " + body); }, // Error Callback Function
                    creds);
                    //Not Available
                    //Not Available

                    Response

                    Response is a JSON object with the following properties.

                    Property Type Description
                    APIResponse object APIResponse object
                    DVTokenResp object DVTokenResp object
                    HTTP/1.1 200 OK
                    Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                    Pragma: no-cache
                    Content-Length: 339
                    Content-Type: application/json; charset=utf-8
                    Set-Cookie: ASP.NET_SessionId=v35boh4ee43lw34cnhhnelst; path=/; secure; HttpOnly
                    Access-Control-Allow-Origin: *
                    Access-Control-Allow-Headers: Content-Type
                    Access-Control-Allow-Methods: GET, POST, OPTIONS
                    Access-Control-Max-Age: 1728000
                    Date: Fri, 12 Dec 2014 01:35:07 GMT
                    
                    {
                    	"APIResponse" : {
                    		"ResponseCode" : 0,
                    		"ResponseText" : "Success"
                    	},
                    	"DVTokenResp" : {
                    		"BankAccountDetails" : null,
                    		"CardDetails" : {
                    			"CardHolderName" : "John Smith",
                    			"ExpiryDate" : "0521",
                    			"MaskedCardNumber" : "512345...346"
                    		},
                    		"CardType" : "MC",
                    		"EmailAddress" : "john.smith@email.com.au",
                    		"Crn1" : "12345",
                    		"Crn2" : "",
                    		"Crn3" : null,
                    		"DVToken" : "5999999789012346"
                    	}
                    }
                    2 Party Update DVToken

                    Updates details for a given dvtoken.

                    URL

                    PUT /dvtokens/{dvtoken}

                    URL Parameters

                    dvtoken - dvtoken to be updated

                    Request Headers

                    This is a direct integration method. You will be required to supply the following HTTP headers with your PUT request.

                    Authorization
                    base64 encoded API user credentials
                    Content-Type
                    application/json; charset=utf-8

                    Response Headers

                    Content-Type
                    application/json; charset=utf-8

                    Request

                    Request is a DVTokenReq (DVToken request details) JSON object with following properties.

                    Property Type Description
                    DVTokenReq object DVToken Request object

                    All fields other than CardNumber should be present in any update request. If a field other than CardNumber is omitted, the corresponding dvtoken details will be deleted.

                    PUT https://www.bpoint.com.au/webapi/v2/dvtokens/5999999789012346 HTTP/1.1
                    Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=
                    Content-Type: application/json; charset=utf-8
                    Host: www.bpoint.com.au
                    Content-Length: 249
                    Expect: 100-continue
                    
                    {
                    	"DVTokenReq" : {
                    		"BankAccountDetails" : null,
                    		"CardDetails" : {
                    			"CardHolderName" : "Joanne Smurf",
                    			"CardNumber" : "4005550000000001",
                    			"ExpiryDate" : "0521"
                    		},
                    		"EmailAddress" : "tommy.smith@email.com.au",
                    		"Crn1" : "12345",
                    		"Crn2" : "",
                    		"Crn3" : null
                    	}
                    }
                    include ("./API/BPOINT.php");
                    BPOINT\URLDirectory::setBaseURL("reserved","https://www.bpoint.com.au/webapi/v2");	
                    $credentials = new BPOINT\Credentials("APIUserName", "Passw0rd", "5353109000000000", BPOINT\Mode::Live);
                    
                    $txn = new BPOINT\UpdateDVToken("5999999789012346");
                    $cardDetails = new BPOINT\CardDetails();
                    
                    $cardDetails->setExpiryDate("9901");
                    
                    $txn->setCredentials($credentials);
                    $txn->setCardDetails($cardDetails);
                    $txn->setCrn1("New Crn 1");
                    $txn->setEmailAddress("user@email.com");
                    
                    $response = $txn->submit();
                    from BPOINT.Requests import Credentials, UpdateDVTokenRequest
                    from BPOINT.Utils import CardDetails   
                    
                    credentials = Credentials("APIUserName", "Passw0rd", "5353109000000000")
                    
                    request = UpdateDVTokenRequest(credentials,"5999999789012346")
                    request.base_url = "https://www.bpoint.com.au/webapi/v2"
                    
                    request.card_details = CardDetails(
                        card_holder_name = "MR C CARDHOLDER", 
                        expiry_date = "0521",
                        card_number = "4444333322221111")
                    request.crn1 = "Ref One"
                    
                    response = request.submit()
                    require_relative "API/BPOINT"
                    
                    cred = BPOINT::Credentials.new("APIUserName", "Passw0rd", "5353109000000000")
                    
                    req = BPOINT::UpdateDVTokenRequest.new("5999999789012346")
                    req.credentials = cred
                       
                    cc = BPOINT::CardDetails.new()
                    cc.card_holder_name = "MR C CARDHOLDER"
                    cc.expiry_date = "0521"
                    cc.card_number = "4444333322221111"
                      
                    req.base_url = "https://www.bpoint.com.au/webapi/v2"  
                    req.card_details = cc
                    req.crn1 = "DVToken Reference"
                       
                    response = req.submit()
                    import com.BPOINT.api.*;
                    
                    Credentials credentials = new Credentials("APIUserName", "Passw0rd", "5353109000000000");
                    Sender s = new Sender();
                    TokenUpdateRequest req = new TokenUpdateRequest(credentials, "5999999789012346");
                    CreditCardDetails cc = new CreditCardDetails();
                    DVTokenResp resp;
                    
                    cc.setCardNumber("4444333322221111");
                    cc.setExpiryDate("0521");
                    cc.setCardHolderName("MR C CARDHOLDER");
                    
                    req.setBaseUrl("https://www.bpoint.com.au/webapi/v2");
                    req.setCrn1("Java Update DVToken 1");
                    req.setCardDetails(cc);
                    
                    resp = s.submit(req);
                    use BPOINT::API;
                    use Data::Inspect qw(p);
                    
                    $BPOINT::Sender::base_url = "https://www.bpoint.com.au/webapi/v2";
                    
                    my $cred = BPOINT::Credentials->new(
                    username => 'APIUserName', 
                    password => 'Passw0rd', 
                    merchant_number => "5353109000000000"
                    );
                    
                    my $req;
                    
                    my $cc = BPOINT::CardDetails->new(
                    card_number => "4444333322221111", 
                    expiry_date => "0521",
                    card_holder_name => "MR C CARDHOLDER");
                    
                    $req = BPOINT::TokenUpdateRequest->new(
                    credentials => $cred, 
                    crn1 => "Perl DVToken 1", 
                    card_details => $cc, 
                    dvtoken => "5999999789012346" 
                    );    
                       
                    $result = $req->submit();
                    using BPOINT.API.Client.V2;
                    using API.Client.Common;
                    using API.Client.Common.Helpers;
                    
                    var tokenClient = ClientFactory.GetClientInstance<TokenClient>(
                    new JsonWebClientHelper(),
                    "https://www.bpoint.com.au/webapi/v2",
                    "APIUserName",
                    "5353109000000000",
                    "Passw0rd",
                    null);
                    
                    var apiReq = new UpdateDVTokenReq()
                    {
                        DVTokenReq = new TokenRequest()
                        {
                            CardDetails = new  CreditCardDetails(){
                                CardHolderName = "John Smith",
                                CardNumber = "5123456789012346",
                                ExpiryDate = "0521"
                            },
                            Crn1 = "12345",
                            Crn2 = "",
                            Crn3 = "",
                            EmailAddress = "john.smith@email.com.au"
                        }
                    };
                    
                    var response = tokenClient.UpdateToken("5999999789012346",apiReq);
                    var BPOINT = require("./BPOINT_API/index.js");
                    var api = new BPOINT();
                    
                    var cc = new api.CardDetails({
                    CardNumber: "4444333322221111", 
                    ExpiryDate : "0521", 
                    CardHolderName : "MR C CARDHOLDER"});
                    
                    var req = new api.TokenUpdate({ 
                    DVToken: "5999999789012346", 
                    CardDetails: cc, Crn1: 
                    "NodeJS DVToken 1 - Updated"});
                    
                    req.baseUrl("https://www.bpoint.com.au/webapi/v2");
                    
                    var creds = req.credentials({
                    Username : "APIUserName", 
                    Password: "Passw0rd", 
                    MerchantNumber   : "5353109000000000"});
                    
                    var resp = req.submit(ResponseHandler, // Custom Callback Function
                    function(code, body) { console.log(code + " : " + body); }, // Error Callback Function
                    creds);
                    //Not Available
                    //Not Available

                    Response

                    Response is a JSON object with the following properties.

                    Property Type Description
                    APIResponse object APIResponse object
                    DVTokenResp object DVTokenResp object
                    HTTP/1.1 200 OK
                    Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                    Pragma: no-cache
                    Content-Length: 339
                    Content-Type: application/json; charset=utf-8
                    Access-Control-Allow-Origin: *
                    Access-Control-Allow-Headers: Content-Type
                    Access-Control-Allow-Methods: GET, POST, OPTIONS
                    Access-Control-Max-Age: 1728000
                    Date: Fri, 12 Dec 2014 01:43:34 GMT
                    
                    {
                    	"APIResponse" : {
                    		"ResponseCode" : 0,
                    		"ResponseText" : "Success"
                    	},
                    	"DVTokenResp" : {
                    		"BankAccountDetails" : null,
                    		"CardDetails" : {
                    			"CardHolderName" : "Joanne Smurf",
                    			"ExpiryDate" : "0521",
                    			"MaskedCardNumber" : "400555...001"
                    		},
                    		"CardType" : "VC",
                    		"EmailAddress" : "tommy.smith@email.com.au",
                    		"Crn1" : "12345",
                    		"Crn2" : "",
                    		"Crn3" : "",
                    		"DVToken" : "5999999789012346"
                    	}
                    }
                    2 Party Tokenise Card

                    Creates a dvtoken using payment details from a previously processed transaction. The following conditions must be true to tokenise a previously processed transaction:

                    • The transaction was approved
                    • The transaction was submitted with StoreCard set to true (see sections 2 Party Payment and AuthKey)

                    URL

                    POST /dvtokens/txn/{txnNumber}

                    URL Parameters

                    txnNumber - transaction number of a previously processed transaction

                    Request Headers

                    This is a direct integration method. You will be required to supply the following HTTP headers with your POST request.

                    Authorization
                    base64 encoded API user credentials
                    Content-Type
                    application/json; charset=utf-8

                    Response Headers

                    Content-Type
                    application/json; charset=utf-8
                    POST https://www.bpoint.com.au/webapi/v2/dvtokens/txn/1180 HTTP/1.1
                    Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=
                    Content-Type: application/json; charset=utf-8
                    Host: www.bpoint.com.au
                    Content-Length: 0
                    include ("./API/BPOINT.php");
                    BPOINT\URLDirectory::setBaseURL("reserved","https://www.bpoint.com.au/webapi/v2");	
                    $credentials = new BPOINT\Credentials("APIUserName", "Passw0rd", "5353109000000000", BPOINT\Mode::Live);
                    
                    $txn = new BPOINT\TokeniseTransaction("1180");
                    $txn->setCredentials($credentials);
                    
                    $response = $txn->submit();
                    from BPOINT.Requests import Credentials, TokeniseTransactionRequest
                        
                    from BPOINT.Utils import CardDetails
                    
                    credentials = Credentials("APIUserName", "Passw0rd", "5353109000000000")
                    
                    request = TokeniseTransactionRequest(credentials, "1180")
                    request.base_url = "https://www.bpoint.com.au/webapi/v2"
                    
                    response = request.submit()
                    require_relative "API/BPOINT"
                    
                    cred = BPOINT::Credentials.new("APIUserName", "Passw0rd", "5353109000000000")
                    
                    req = BPOINT::TokeniseTransactionRequest.new("1180")
                    
                    req.base_url = "https://www.bpoint.com.au/webapi/v2"
                    req.credentials = cred
                    
                    response = req.submit()
                    import com.BPOINT.api.*;
                    
                    Credentials credentials = new Credentials("APIUserName", "Passw0rd", "5353109000000000");
                    Sender s = new Sender();
                    
                    TokeniseTransactionRequest req = new TokeniseTransactionRequest(credentials, "1180");
                    DVTokenResp resp;		
                    
                    req.setBaseUrl("https://www.bpoint.com.au/webapi/v2");
                    		
                    resp = s.submit(req);
                    use BPOINT::API;
                    use Data::Inspect qw(p);
                    
                    $BPOINT::Sender::base_url = "https://www.bpoint.com.au/webapi/v2";
                    
                    my $cred = BPOINT::Credentials->new(
                    username => 'APIUserName', 
                    password => 'Passw0rd', 
                    merchant_number => "5353109000000000"
                    );
                    
                    my $req;
                    
                    $req = BPOINT::TokeniseTransactionRequest->new(
                    credentials => $cred,
                    txn_number => "1180");     
                       
                    $result = $req->submit();
                    using BPOINT.API.Client.V2;
                    using API.Client.Common;
                    using API.Client.Common.Helpers;
                    
                    var tokenClient = ClientFactory.GetClientInstance<TokenClient>(
                    new JsonWebClientHelper(),
                    "https://www.bpoint.com.au/webapi/v2",
                    "APIUserName",
                    "5353109000000000",
                    "Passw0rd",
                    null);
                    
                    var response = tokenClient.TokeniseTxn("1180");
                    var BPOINT = require("./BPOINT_API/index.js");
                    var api = new BPOINT();
                    
                    var req = new api.TokeniseTransaction("0001");
                    
                    req.baseUrl("https://www.bpoint.com.au/webapi/v2");
                    
                    var creds = req.credentials({
                    Username : "APIUserName", 
                    Password: "Passw0rd", 
                    MerchantNumber   : "5353109000000000"});
                    
                    var resp = req.submit(ResponseHandler, // Custom Callback Function
                    function(code, body) { console.log(code + " : " + body); }, // Error Callback Function
                    creds);
                    //Not Available
                    //Not Available

                    Response

                    Response is a JSON object with the following properties.

                    Property Type Description
                    APIResponse object APIResponse object
                    DVTokenResp object DVTokenResp object
                    HTTP/1.1 200 OK
                    Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                    Pragma: no-cache
                    Content-Length: 329
                    Content-Type: application/json; charset=utf-8
                    Set-Cookie: ASP.NET_SessionId=0d1btj43s3vpxx3dc2zbt422; path=/; secure; HttpOnly
                    Access-Control-Allow-Origin: *
                    Access-Control-Allow-Headers: Content-Type
                    Access-Control-Allow-Methods: GET, POST, OPTIONS
                    Access-Control-Max-Age: 1728000
                    Date: Fri, 12 Dec 2014 01:48:31 GMT
                    
                    {
                    	"APIResponse" : {
                    		"ResponseCode" : 0,
                    		"ResponseText" : "Success"
                    	},
                    	"DVTokenResp" : {
                    		"BankAccountDetails" : null,
                    		"CardDetails" : {
                    			"CardHolderName" : null,
                    			"ExpiryDate" : "0521",
                    			"MaskedCardNumber" : "512345...346"
                    		},
                    		"CardType" : "MC",
                    		"EmailAddress" : null,
                    		"Crn1" : "test crn1",
                    		"Crn2" : "test crn2",
                    		"Crn3" : "test crn3",
                    		"DVToken" : "5999999789012346"
                    	}
                    }
                    2 Party Retrieve DVToken

                    Retrieves dvtoken details.

                    URL

                    GET /dvtokens/{token}

                    URL Parameters

                    dvtoken - dvtoken record to retrieve

                    Request Headers

                    This is a direct integration method. You will be required to supply the following HTTP headers with your GET request.

                    Authorization
                    base64 encoded API user credentials
                    Content-Type
                    application/json; charset=utf-8

                    Response Headers

                    Content-Type
                    application/json; charset=utf-8
                    GET https://www.bpoint.com.au/webapi/v2/dvtokens/5999999789012346 HTTP/1.1
                    Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=
                    Host: www.bpoint.com.au
                    include ("./API/BPOINT.php");
                    BPOINT\URLDirectory::setBaseURL("reserved","https://www.bpoint.com.au/webapi/v2");	
                    $credentials = new BPOINT\Credentials("APIUserName", "Passw0rd", "5353109000000000", BPOINT\Mode::Live);
                    
                    $txn = new BPOINT\RetrieveToken("5999999789012346");
                    
                    $txn->setCredentials($credentials);
                    
                    $response = $txn->submit();
                    from BPOINT.Requests import Credentials, DVTokenRetrievalRequest
                        
                    from BPOINT.Utils import CardDetails
                    
                    credentials = Credentials("APIUserName", "Passw0rd", "5353109000000000")
                    
                    request = DVTokenRetrievalRequest(credentials, "5999999789012346")
                    request.base_url = "https://www.bpoint.com.au/webapi/v2"
                       
                    response = request.submit()
                    require_relative "API/BPOINT"
                    
                    cred = BPOINT::Credentials.new("APIUserName", "Passw0rd", "5353109000000000")
                    
                    req = BPOINT::RetrieveDVTokenRequest.new("5999999789012346")
                    
                    req.base_url = "https://www.bpoint.com.au/webapi/v2"
                    req.credentials = cred
                    
                    response = req.submit()
                    import com.BPOINT.api.*;
                    
                    Credentials credentials = new Credentials("APIUserName", "Passw0rd", "5353109000000000");
                    Sender s = new Sender();
                    
                    TokenFetchRequest req = new TokenFetchRequest(credentials, "5999999789012346");
                    DVTokenResp resp;
                    
                    req.setBaseUrl("https://www.bpoint.com.au/webapi/v2");
                    
                    resp = s.submit(req);
                    use BPOINT::API;
                    use Data::Inspect qw(p);
                    
                    $BPOINT::Sender::base_url = "https://www.bpoint.com.au/webapi/v2";
                    
                    my $cred = BPOINT::Credentials->new(
                    username => 'APIUserName', 
                    password => 'Passw0rd', 
                    merchant_number => "5353109000000000"
                    );
                    
                    my $req;
                    
                    $req = BPOINT::TokenRetrievalRequest->new(
                    credentials => $cred, 
                    dvtoken => "5999999789012346");  
                       
                    $result = $req->submit();
                    using BPOINT.API.Client.V2;
                    using API.Client.Common;
                    using API.Client.Common.Helpers;
                    
                    var tokenClient = ClientFactory.GetClientInstance<TokenClient>(
                    new JsonWebClientHelper(),
                    "https://www.bpoint.com.au/webapi/v2",
                    "APIUserName",
                    "5353109000000000",
                    "Passw0rd",
                    null);
                    
                    var response = tokenClient.RetrieveToken("5999999789012346");
                    var BPOINT = require("./BPOINT_API/index.js");
                    var api = new BPOINT();
                    
                    var req = new api.RetrieveToken("5999999789012346");
                    
                    req.baseUrl("https://www.bpoint.com.au/webapi/v2");
                    
                    var creds = req.credentials({
                    Username : "APIUserName", 
                    Password: "Passw0rd", 
                    MerchantNumber   : "5353109000000000"});
                    
                    var resp = req.submit(ResponseHandler, // Custom Callback Function
                    function(code, body) { console.log(code + " : " + body); }, // Error Callback Function
                    creds);
                    //Not Available
                    //Not Available

                    Response

                    Response is a JSON object with the following properties.

                    Property Type Description
                    APIResponse object APIResponse object
                    DVTokenResp object DVTokenResp object
                    HTTP/1.1 200 OK
                    Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                    Pragma: no-cache
                    Content-Length: 337
                    Content-Type: application/json; charset=utf-8
                    Access-Control-Allow-Origin: *
                    Access-Control-Allow-Headers: Content-Type
                    Access-Control-Allow-Methods: GET, POST, OPTIONS
                    Access-Control-Max-Age: 1728000
                    Date: Fri, 12 Dec 2014 01:50:40 GMT
                    
                    {
                    	"APIResponse" : {
                    		"ResponseCode" : 0,
                    		"ResponseText" : "Success"
                    	},
                    	"DVTokenResp" : {
                    		"BankAccountDetails" : null,
                    		"CardDetails" : {
                    			"CardHolderName" : "John Smith",
                    			"ExpiryDate" : "0521",
                    			"MaskedCardNumber" : "512345...346"
                    		},
                    		"CardType" : "MC",
                    		"EmailAddress" : "john.smith@email.com.au",
                    		"Crn1" : "12345",
                    		"Crn2" : "",
                    		"Crn3" : "",
                    		"DVToken" : "5999999789012346"
                    	}
                    }
                    2 Party Search DVTokens

                    Performs a search on the merchant's tokens.

                    URL

                    POST /dvtokens/search

                    Request Headers

                    This is a direct integration method. You will be required to supply the following HTTP headers with your POST request.

                    Authorization
                    base64 encoded API user credentials
                    Content-Type
                    application/json; charset=utf-8

                    Response Headers

                    Content-Type
                    application/json; charset=utf-8

                    Request

                    Request is a SearchInput (Search details) JSON object with following properties.

                    Property Type Description
                    CardType string (MaxLen = 2) Optional
                    Crn1 string (MaxLen = 50) Optional
                    Crn2 string (MaxLen = 50) Optional
                    Crn3 string (MaxLen = 50) Optional
                    ExpiredCardsOnly boolean Flag to indicate search should only return tokens where the card expiry date is in the past. Optional
                    ExpiryDate string Card expiry date. MMYY format (MinLen = 4, MaxLen = 4) Optional
                    FromDate string Start date and time for a date range search, compared against the dvtoken creation date. In ISO8601 format. (MaxLen = 50) Optional
                    MaskedCardNumber string Masked card number. (MaxLen = 12) Optional
                    Source string Transaction origin -
                      Optional
                      ToDate string End date and time for a date range search, compared against the dvtoken creation date. In ISO8601 format. (MaxLen = 50) Optional
                      DVToken string DVToken Number (MaxLen = 16) Optional
                      UserCreated string Username of the user who created the dvtoken (MaxLen = 50) Optional
                      UserUpdated string Username of the user who last updated the dvtoken (MaxLen = 50) Optional

                      All fields other than CardNumber should be present in any update request. If a field other than CardNumber is omitted, the corresponding dvtoken details will be deleted.

                      POST https://www.bpoint.com.au/webapi/v2/dvtokens/search HTTP/1.1
                      Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=
                      Content-Type: application/json; charset=utf-8
                      Host: www.bpoint.com.au
                      Content-Length: 311
                      Expect: 100-continue
                      
                      {
                        "SearchInput" : {
                          "CardType" : null,
                          "ExpiredCardsOnly" : false,
                          "ExpiryDate" : null,
                          "FromDate" : "2014-12-11T12:52:24.8176630+11:00",
                          "MaskedCardNumber" : null,
                          "Crn1" : null,
                          "Crn2" : null,
                          "Crn3" : null,
                          "Source" : null,
                          "ToDate" : "2014-12-12T12:52:24.8176630+11:00",
                          "DVToken" : null,
                          "UserCreated" : null,
                          "UserUpdated" : null
                        }
                      }
                      include ("./API/BPOINT.php");
                      BPOINT\URLDirectory::setBaseURL("reserved","https://www.bpoint.com.au/webapi/v2");	
                      $credentials = new BPOINT\Credentials("APIUserName", "Passw0rd", "5353109000000000", BPOINT\Mode::Live);
                      
                      $search = new BPOINT\TokenSearch();
                      
                      $search->setCredentials($credentials);
                      $search->setMaskedCardNumber("444433...111");
                      
                      $response = $search->submit();
                      from BPOINT.Requests import Credentials, DVTokenSearchRequest
                          
                      from BPOINT.Utils import CardDetails
                      
                      credentials = Credentials("APIUserName", "Passw0rd", "5353109000000000")
                      request = DVTokenSearchRequest(credentials)
                      request.masked_card_number = "444433...111";
                      request.base_url = "https://www.bpoint.com.au/webapi/v2"
                      
                      response = request.submit()
                      require_relative "API/BPOINT"
                      
                      cred = BPOINT::Credentials.new("APIUserName", "Passw0rd", "5353109000000000")
                      
                      req = BPOINT::DVTokenSearchRequest.new()
                      
                      req.base_url = "https://www.bpoint.com.au/webapi/v2"
                      req.credentials = cred
                      req.masked_card_number = "444433...111"
                      
                      response = req.submit()
                      import com.BPOINT.api.*;
                      import java.util.ArrayList;
                      import java.util.List;
                      
                      Credentials credentials = new Credentials("APIUserName", "Passw0rd", "5353109000000000");
                      Sender s = new Sender();
                      
                      TokenSearchRequest req = new TokenSearchRequest(credentials);
                      TokenSearchResponse resp;
                      
                      req.setBaseUrl("https://www.bpoint.com.au/webapi/v2");		
                      req.setMaskedCardNumber("444433...111");
                      		
                      resp = s.submit(req);
                      use BPOINT::API;
                      use Data::Inspect qw(p);
                      
                      $BPOINT::Sender::base_url = "https://www.bpoint.com.au/webapi/v2";
                      
                      my $cred = BPOINT::Credentials->new(
                      username => 'APIUserName', 
                      password => 'Passw0rd', 
                      merchant_number => "5353109000000000"
                      );
                      
                      my $req;
                      
                      $req = BPOINT::TokenSearchRequest->new(
                      masked_card_number => "444433...111", 
                      credentials => $cred);
                         
                      $result = $req->submit();
                      using BPOINT.API.Client.V2;
                      using API.Client.Common;
                      using API.Client.Common.Helpers;
                      
                      var tokenClient = ClientFactory.GetClientInstance<TokenClient>(
                      new JsonWebClientHelper(),
                      "https://www.bpoint.com.au/webapi/v2",
                      "APIUserName",
                      "5353109000000000",
                      "Passw0rd",
                      null);
                      
                      var apiReq = new SearchDVTokensReq()
                      {
                      	SearchInput = new SearchTokensInput()
                      	{
                      		MaskedCardNumber = "444433...111"
                      	}
                      };
                      
                      var response = tokenClient.SearchTokens(apiReq);
                      var BPOINT = require("./BPOINT_API/index.js");
                      var api = new BPOINT();
                      
                      var req = new api.SearchTokens({
                      MaskedCardNumber : "444433...111" });
                      
                      req.baseUrl("https://www.bpoint.com.au/webapi/v2");
                      
                      var creds = req.credentials({
                      Username : "APIUserName", 
                      Password: "Passw0rd", 
                      MerchantNumber   : "5353109000000000"});
                      
                      var resp = req.submit(ResponseHandler, // Custom Callback Function
                      function(code, body) { console.log(code + " : " + body); }, // Error Callback Function
                      creds);
                      //Not Available
                      //Not Available

                      Response

                      Response is a JSON object with the following properties.

                      Property Type Description
                      APIResponse object APIResponse object
                      DVTokenRespList array Array of dvtoken response objects
                      HTTP/1.1 200 OK
                      Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                      Pragma: no-cache
                      Content-Length: 1963
                      Content-Type: application/json; charset=utf-8
                      Set-Cookie: ASP.NET_SessionId=ykvzrfcv53mexg0dbo5uluz0; path=/; secure; HttpOnly
                      Access-Control-Allow-Origin: *
                      Access-Control-Allow-Headers: Content-Type
                      Access-Control-Allow-Methods: GET, POST, OPTIONS
                      Access-Control-Max-Age: 1728000
                      Date: Fri, 12 Dec 2014 01:52:18 GMT
                      
                      {
                        "APIResponse" : {
                          "ResponseCode" : 0,
                          "ResponseText" : "Success"
                        },
                        "DVTokenRespList" : [{
                          "BankAccountDetails" : null,
                          "CardDetails" : {
                            "CardHolderName" : "John Smith",
                            "ExpiryDate" : "0521",
                            "MaskedCardNumber" : "512345...346"
                          },
                          "CardType" : "MC",
                          "EmailAddress" : "jimmy@email.com.au",
                          "Crn1" : "12345",
                          "Crn2" : "",
                          "Crn3" : "",
                          "DVToken" : "5999999789012346"
                        },..., {
                          "BankAccountDetails" : null,
                          "CardDetails" : {
                            "CardHolderName" : "John Smith",
                            "ExpiryDate" : "0521",
                            "MaskedCardNumber" : "512345...346"
                        },
                          "CardType" : "MC",
                          "EmailAddress" : "",
                          "Crn1" : "12345",
                          "Crn2" : "",
                          "Crn3" : "",
                          "DVToken" : "5999999789012346"
                        }]
                      }
                      2 Party Delete DVToken

                      Deletes an existing dvtoken

                      URL

                      DELETE /dvtokens/{dvtoken}

                      URL Parameters

                      dvtoken - dvtoken record to delete

                      Request Headers

                      This is a direct integration method. You will be required to supply the following HTTP headers with your DELETE request.

                      Authorization
                      base64 encoded API user credentials

                      Response Headers

                      Content-Type
                      application/json; charset=utf-8
                      DELETE https://www.bpoint.com.au/webapi/v2/dvtokens/5999999789012346 HTTP/1.1
                      Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=
                      Content-Type: application/json; charset=utf-8
                      Host: www.bpoint.com.au
                      Content-Length: 0
                      include ("./API/BPOINT.php");
                      BPOINT\URLDirectory::setBaseURL("reserved","https://www.bpoint.com.au/webapi/v2");	
                      $credentials = new BPOINT\Credentials("APIUserName", "Passw0rd", "5353109000000000", BPOINT\Mode::Live);
                      
                      $delete = new BPOINT\DeleteToken();
                      
                      $delete->setCredentials($credentials);
                      $delete->setToken("5999999789012346");
                      
                      $response = $delete->submit();
                      from BPOINT.Requests import Credentials, DeleteDVTokenRequest
                          
                      from BPOINT.Utils import CardDetails
                      
                      credentials = Credentials("APIUserName", "Passw0rd", "5353109000000000")
                      
                      request = DeleteDVTokenRequest(credentials, "5999999789012346")
                      request.base_url = "https://www.bpoint.com.au/webapi/v2"
                          
                      response = request.submit()
                      require_relative "API/BPOINT"
                      
                      cred = BPOINT::Credentials.new("APIUserName", "Passw0rd", "5353109000000000")
                      
                      req = BPOINT::DeleteDVTokenRequest.new("5999999789012346")
                      
                      req.base_url = "https://www.bpoint.com.au/webapi/v2"
                      req.credentials = cred
                      
                      response = req.submit()
                      import com.BPOINT.api.*;
                      
                      Credentials credentials = new Credentials("APIUserName", "Passw0rd", "5353109000000000");
                      Sender s = new Sender();
                      
                      TokenDeleteRequest req = new TokenDeleteRequest(credentials, "5999999789012346");
                      Response resp;
                      
                      req.setBaseUrl("https://www.bpoint.com.au/webapi/v2");
                      
                      resp = s.submit(req);
                      use BPOINT::API;
                      use Data::Inspect qw(p);
                      
                      $BPOINT::Sender::base_url = "https://www.bpoint.com.au/webapi/v2";
                      
                      my $cred = BPOINT::Credentials->new(
                      username => 'APIUserName', 
                      password => 'Passw0rd', 
                      merchant_number => "5353109000000000"
                      );
                      
                      my $req;
                      
                      $req = BPOINT::TokenDeleteRequest->new(
                      dvtoken => "5999999789012346", 
                      credentials => $cred);
                         
                      $result = $req->submit();
                      using BPOINT.API.Client.V2;
                      using API.Client.Common;
                      using API.Client.Common.Helpers;
                      
                      var tokenClient = ClientFactory.GetClientInstance<TokenClient>(
                      new JsonWebClientHelper(),
                      "https://www.bpoint.com.au/webapi/v2",
                      "APIUserName",
                      "5353109000000000",
                      "Passw0rd",
                      null);
                      
                      var response = tokenClient.DeleteToken("5999999789012346");
                      var BPOINT = require("./BPOINT_API/index.js");
                      var api = new BPOINT();
                      
                      var req = new api.DeleteToken("5999999789012346");
                      
                      req.baseUrl("https://www.bpoint.com.au/webapi/v2");
                      
                      var creds = req.credentials({
                      Username : "APIUserName", 
                      Password: "Passw0rd", 
                      MerchantNumber   : "5353109000000000"});
                      
                      var resp = req.submit(ResponseHandler, // Custom Callback Function
                      function(code, body) { console.log(code + " : " + body); }, // Error Callback Function
                      creds);
                      //Not Available
                      //Not Available

                      Response

                      Response is a JSON object with the following properties.

                      Property Type Description
                      APIResponse object APIResponse object
                      HTTP/1.1 200 OK
                      Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                      Pragma: no-cache
                      Content-Length: 59
                      Content-Type: application/json; charset=utf-8
                      Access-Control-Allow-Origin: *
                      Access-Control-Allow-Headers: Content-Type
                      Access-Control-Allow-Methods: GET, POST, OPTIONS
                      Access-Control-Max-Age: 1728000
                      Date: Fri, 12 Dec 2014 01:54:38 GMT
                      
                      {
                      	"APIResponse" : {
                      		"ResponseCode" : 0,
                      		"ResponseText" : "Success"
                      	}
                      }
                      AuthKey DVToken

                      AuthKey Add DVToken

                      Creates a one-time AuthKey to be used with "Add DVToken" operation when using Browser integration method.

                      This operation serves following functions:

                      • Authenticates the merchant by username, merchant number and password. If these details are not correct, the AuthKey will not be generated.
                      • Creates a unique AuthKey to allow merchant's customer to save their payment details.
                      • AuthKey prevents processing of duplicate requests.
                      • Allows merchant to "lock in" certain details and means they cannot be modified even if submitted in subsequent "Add DVToken" request. These fields include:
                        • Crn1
                        • Crn2
                        • Crn3
                        • EmailAddress
                      • AuthKey is valid only for a predefined period of time (20 minutes). If the request is not attempted during that time merchant's application will need to request a new AuthKey.

                      URL

                      POST /dvtokens/adddvtokenauthkey

                      Request Headers

                      This is a direct integration method. You will be required to supply the following HTTP headers with your POST request.

                      Authorization
                      base64 encoded API user credentials
                      Content-Type
                      application/json; charset=utf-8

                      Response Headers

                      Content-Type
                      application/json; charset=utf-8

                      Request

                      Request is a JSON object with following properties.

                      Property Type Description
                      FixedAddDVTokenData object Optional
                      HppParameters object Optional
                      IframeParameters object JSON object containing the iframe parameters (see 3 Party Iframe). Optional
                      RedirectionUrl string Merchant redirection URL.
                      WebHookUrl string Merchant web hook handler URL. Optional
                      POST https://www.bpoint.com.au/webapi/v2/dvtokens/adddvtokenauthkey HTTP/1.1
                      Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=
                      Content-Type: application/json; charset=utf-8
                      Host: www.bpoint.com.au
                      Content-Length: 91
                      Expect: 100-continue
                      
                      {
                        "FixedAddDVTokenData" : {
                          "Crn1" : "test crn1",
                          "Crn2" : "test crn2",
                          "Crn3" : "test crn3",
                          "EmailAddress" : "john.smith@email.com.au"
                        },
                        "HppParameters" : {
                          "HideCrn1" : "false",
                          "HideCrn2" : "true",
                          "HideCrn3" : "true",
                          "IsEddr" : "true",
                          "ShowCustomerDetailsForm" : "true",
                          "BillerCode" : "00Example00",
                          "Crn1Label" : "Reference1",
                          "Crn2Label" : "",
                          "Crn3Label" : ""
                        },
                        "IframeParameters" : {
                          "CSS" : ".control-label{color:blue;}",
                          "ShowSubmitButton": true
                        },
                        "RedirectionUrl" : "http://yourmerchantwebsite.com/dvtokenreceipt",
                        "WebHookUrl" : null
                      }
                      include ("./API/BPOINT.php");
                      BPOINT\URLDirectory::setBaseURL("reserved","https://www.bpoint.com.au/webapi/v2");	
                      $credentials = new BPOINT\Credentials("APIUserName", "Passw0rd", "5353109000000000", BPOINT\Mode::Live);
                      
                      $hppParameters = new BPOINT\HppParameters();
                      $hppParameters->setBillerCode("00Example00");
                      $hppParameters->setCrnLabel1("Reference1");
                      $hppParameters->setHideCrn1(false);
                      $hppParameters->setHideCrn2(true);
                      $hppParameters->setHideCrn3(true);
                      $hppParameters->setIsEddr(true);
                      $hppParameters->setShowCustomerDetailsForm(true);
                      
                      $iframeParameters = new BPOINT\IframeParameters();
                      $iframeParameters->setCSS(".control-label{color:blue;}");
                      $iframeParameters->setShowSubmitButton(true);
                      
                      $auth = new BPOINT\AddDVTokenAuthKey();
                      $auth->setCredentials($credentials);
                      $auth->setCrn1("Ref One");
                      $auth->setRedirectionUrl("http://yourmerchantwebsite.com/dvtokenreceipt");
                      $auth->setEmailAddress("user@email.com");
                      $auth->setHPPParameters($hppParameters);
                      $auth->setIframeParameters($iframeParameters);
                      
                      $response = $auth->submit();
                      from BPOINT.Requests import Credentials, AddDVTokenAuthKeyRequest, HppParameters, IframeParameters
                      
                      credentials = Credentials("APIUserName", "Passw0rd", "5353109000000000")
                      
                      hppParameters = HppParameters()
                      hppParameters.hide_crn1 = False
                      hppParameters.hide_crn2 = True
                      hppParameters.hide_crn3 = True
                      hppParameters.is_eddr = True
                      hppParameters.crn1_label = "Reference1"
                      hppParameters.biller_code = "00Exmaple00"
                      hppParameters.show_customer_details_form = True
                      
                      iframe_parameters = IframeParameters()
                      iframe_parameters.css = ".control-label{color:blue;}"
                      iframe_parameters.show_submit_button = True
                      
                      request = AddDVTokenAuthKeyRequest(credentials)
                      request.base_url = "https://www.bpoint.com.au/webapi/v2"
                      request.crn1 = "Ref One"
                      request.redirection_url = "http://yourmerchantwebsite.com/dvtokenreceipt"
                      request.hpp_parameters = hppParameters
                      request.iframe_parameters = iframe_parameters
                      
                      response = request.submit()
                      require_relative "API/BPOINT"
                      
                      cred = BPOINT::Credentials.new("APIUserName", "Passw0rd", "5353109000000000")
                      
                      hpp = BPOINT::HppParameters.new
                      hpp.hide_crn1 = false
                      hpp.hide_crn2 = true
                      hpp.hide_crn3 = true
                      hpp.is_eddr = true
                      hpp.crn1_label = "Reference1"
                      hpp.biller_code = "00Example00"
                      hpp.show_customer_details_form = true
                      
                      iframe_parameters = BPOINT::IframeParameters.new
                      iframe_parameters.css = ".control-label{color:blue;}"
                      iframe_parameters.show_submit_button = true
                          
                      req = BPOINT::AddDVTokenAuthKeyRequest.new()
                      req.base_url = "https://www.bpoint.com.au/webapi/v2"
                      req.crn1  = "Test Ref 1"
                      req.redirection_url ="http://yourmerchantwebsite.com/dvtokenreceipt"
                      req.credentials = cred
                      req.hpp_parameters = hpp
                      req.iframe_parameters = iframe_parameters
                      
                      response = req.submit()
                      import com.BPOINT.api.*;
                      
                      Credentials credentials = new Credentials("APIUserName", "Passw0rd", "5353109000000000");
                      Sender s = new Sender();
                      
                      TokenAddAuthKeyRequest req = new TokenAddAuthKeyRequest(credentials);
                      AuthKeyResponse resp;
                      
                      req.setBaseUrl("https://www.bpoint.com.au/webapi/v2");		
                      req.setCrn1("Java DVToken AuthKey Add Ref 1");
                      req.setRedirectionUrl("http://yourmerchantwebsite.com/dvtokenreceipt");
                      
                      IframeParameters iframeParameters = new IframeParameters();
                      iframeParameters.setCSS(".control-label{color:blue;}");
                      iframeParameters.setShowSubmitButton(true);
                          
                      HppTokenFlowParameters hppParameters = new HppTokenFlowParameters();
                      hppParameters.setBillerCode("00Example00");
                      hppParameters.setCrn1Label("Reference1");
                      hppParameters.setHideCrn1(false);
                      hppParameters.setIsEddr(true);
                      hppParameters.setShowCustomerDetailsForm(true);
                      
                      req.setHppTokenFlowParameters(hppParameters);
                      req.setIframeParameters(iframeParameters);
                      
                      resp = s.submit(req);
                      use BPOINT::API;
                      use Data::Inspect qw(p);
                      
                      $BPOINT::Sender::base_url = "https://www.bpoint.com.au/webapi/v2";
                      
                      my $cred = BPOINT::Credentials->new(
                      username => 'APIUserName', 
                      password => 'Passw0rd', 
                      merchant_number => "5353109000000000"
                      );
                      
                      my $req;
                      
                      my $hppParameters = BPOINT::HppParameters->new(
                          hide_crn1 => 0, hide_crn2 => 1, hide_crn3 => 1,
                          is_eddr => 1, crn1_label =>"Crn1", crn2_label =>"", crn3_label =>"", biller_code =>"00Example00",
                          show_customer_details_form => 1
                      );
                      
                      my $iframeParameters = BPOINT::IframeParameters->new(
                          css => ".control-label{color:blue;}", 
                          show_submit_button=> 1
                      );
                      
                      $req = BPOINT::TokenAddAuthKeyRequest->new(
                      credentials => $cred, 
                      crn1 => "Perl AuthKey DVToken Add 1", 
                      redirection_url => "http://yourmerchantwebsite.com/dvtokenreceipt",
                      iframe_parameters => $iframeParameters,
                      hpp_parameters => $hppParameters
                      );
                         
                      $result = $req->submit();
                      using BPOINT.API.Client.V2;
                      using API.Client.Common;
                      using API.Client.Common.Helpers;
                      
                      var tokenClient = ClientFactory.GetClientInstance<TokenClient>(
                      new JsonWebClientHelper(),
                      "https://www.bpoint.com.au/webapi/v2",
                      "APIUserName",
                      "5353109000000000",
                      "Passw0rd",
                      null);
                      
                      var apiReq = new CreateAddDVTokenAuthKeyReq()
                      {
                          WebHookUrl = null,
                          RedirectionUrl = "http://yourmerchantwebsite.com/dvtokenreceipt",
                          FixedAddDVTokenData = new AddTokenData
                              {
                                  Crn1 = "Ref One",
                                  Crn2 = "",
                                  Crn3 = "",
                                  EmailAddress = "user@email.com"
                              },
                          IframeParameters = new IframeFlowParameters 
                              {
                                  CSS = ".control-label{color:blue;}", 
                                  ShowSubmitButton = true
                              }
                      };
                      
                      var response = tokenClient.CreateAddTokenAuthKey(apiReq);
                      var BPOINT = require("./BPOINT_API/index.js");
                      var api = new BPOINT();
                      
                      var hppParameters = new api.HppParameters({
                          Hidecrn1 : false,
                          Hidecrn2 : true,
                          Hidecrn3 : true,
                          IsEddr : true,
                          ShowCustomerDetailsForm : true,
                          BillerCode : "00Example00",
                          crn1Label : "Reference1",
                          crn2Label : null,
                          crn3Label : null
                      });
                      
                      var iframeParameters = new api.IframeParameters({ 
                          CSS : ".control-label{color:blue;}", 
                          ShowSubmitButton : true
                      });
                                                       
                      req = new api.AddDVTokenAuthKey({ 
                      Crn1 : "NodeJS Add DVToken AuthKey 1", 
                      HppParameters : hppParameters,
                      IframeParameters : iframeParameters, 
                      RedirectionUrl: "http://yourmerchantwebsite.com"});
                      
                      req.baseUrl("https://www.bpoint.com.au/webapi/v2");
                      
                      var creds = req.credentials({
                      Username : "APIUserName", 
                      Password: "Passw0rd", 
                      MerchantNumber   : "5353109000000000"});
                      
                      var resp = req.submit(ResponseHandler, // Custom Callback Function
                      function(code, body) { console.log(code + " : " + body); }, // Error Callback Function
                      creds);
                      //Configure the ApiConfig.java file to input your API user and Merchant credentials
                      import main.java.com.BPOINT.android.api.ApiManager;
                      
                      String crn1 = "A CRN";
                      
                      String response = createAnAuthKeyToAddADataVaultTokenForUserWithEmail(crn1);
                      
                      
                      //Not Available

                      Response

                      Response is a JSON object with the following properties.

                      Property Type Description
                      APIResponse object APIResponse object
                      AuthKey string

                      Unique key that the merchant must use when invoking the "Add DVToken" operation using the Browser integration method.

                      The AuthKey is returned only if the API response code indicates success. (MaxLen = 500)

                      HTTP/1.1 200 OK
                      Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                      Pragma: no-cache
                      Content-Length: 108
                      Content-Type: application/json; charset=utf-8
                      Set-Cookie: ASP.NET_SessionId=rser1ad1g3i5umowtys5lpzg; path=/; secure; HttpOnly
                      Access-Control-Allow-Origin: *
                      Access-Control-Allow-Headers: Content-Type
                      Access-Control-Allow-Methods: GET, POST, OPTIONS
                      Access-Control-Max-Age: 1728000
                      Date: Fri, 12 Dec 2014 01:56:18 GMT
                      
                      {
                      	"APIResponse" : {
                      		"ResponseCode" : 0,
                      		"ResponseText" : "Success"
                      	},
                      	"AuthKey" : "df998fea-f309-4e6e-9629-7149799dc028"
                      }
                      AuthKey Update DVToken

                      Creates a one-time AuthKey to be used with the "Update DVToken" operation when using the Browser integration method.

                      This operation serves following functions:

                      • Authenticates the merchant by username, merchant number and password. If these details are not correct, the AuthKey will not be generated.
                      • Creates a unique AuthKey to allow merchant's customer to update their payment details.
                      • AuthKey prevents processing of duplicate requests.
                      • Allows merchant to "lock in" certain details and prevent the details from being modified. These fields include:
                        • Crn1
                        • Crn2
                        • Crn3
                        • EmailAddress
                      • AuthKey is valid only for a predefined period of time (20 minutes). If the request is not attempted during that time merchant's application will need to request a new AuthKey.

                      URL

                      POST /dvtokens/updatedvtokenauthkey

                      Request Headers

                      This is a direct integration method. You will be required to supply the following HTTP headers with your POST request.

                      Authorization
                      base64 encoded API user credentials
                      Content-Type
                      application/json; charset=utf-8

                      Response Headers

                      Content-Type
                      application/json; charset=utf-8

                      Request

                      Request is a JSON object with following properties.

                      Property Type Description
                      FixedUpdateDVTokenData object Optional
                      HppParameters object Optional
                      IframeParameters object JSON object containing the iframe parameters (see 3 Party Iframe). Optional
                      RedirectionUrl string Merchant redirection URL
                      WebHookUrl string Merchant web hook handler URL Optional
                      POST https://www.bpoint.com.au/webapi/v2/dvtokens/updatedvtokenauthkey HTTP/1.1
                      Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=
                      Content-Type: application/json; charset=utf-8
                      Host: www.bpoint.com.au
                      Content-Length: 270
                      Expect: 100-continue
                      
                      {
                        "FixedUpdateDVTokenData" : {
                          "EmailAddress" : "john.smith@email.com.au",
                          "Crn1" : "test crn1",
                          "Crn2" : "test crn2",
                          "Crn3" : "test crn3",
                          "DVToken" : "5999999789012346"
                        },
                        "HppParameters" : {
                          "HideCrn1" : "false",
                          "HideCrn2" : "true",
                          "HideCrn3" : "true",
                          "IsEddr" : "true",
                          "ShowCustomerDetailsForm" : "true",
                          "BillerCode" : "00Example00",
                          "Crn1Label" : "Reference1",
                          "Crn2Label" : "",
                          "Crn3Label" : ""
                        },
                        "IframeParameters" : {
                          "CSS" : ".control-label{color:blue;}",
                          "ShowSubmitButton": true
                        },
                        "RedirectionUrl" : "http://yourmerchantwebsite.com/dvtokenreceipt",
                        "WebHookUrl" : null
                      }
                      include ("./API/BPOINT.php");
                      BPOINT\URLDirectory::setBaseURL("reserved","https://www.bpoint.com.au/webapi/v2");	
                      $credentials = new BPOINT\Credentials("APIUserName", "Passw0rd", "5353109000000000", BPOINT\Mode::Live);
                      $hppParameters = new BPOINT\HppParameters();
                      
                      $hppParameters->setBillerCode("00Example00");
                      $hppParameters->setCrnLabel1("Reference1");
                      $hppParameters->setHideCrn1(false);
                      $hppParameters->setHideCrn2(true);
                      $hppParameters->setHideCrn3(true);
                      $hppParameters->setIsEddr(true);
                      $hppParameters->setShowCustomerDetailsForm(true);
                      
                      $iframeParameters = new BPOINT\IframeParameters();
                      $iframeParameters->setCSS(".control-label{color:blue;}");
                      $iframeParameters->setShowSubmitButton(true);
                      
                      $auth = new BPOINT\UpdateDVTokenAuthKey();
                      $auth->setCredentials($credentials);
                      $auth->setCrn1("Ref One");
                      $auth->setRedirectionUrl("http://yourmerchantwebsite.com/dvtokenreceipt");
                      $auth->setEmailAddress("user@email.com");
                      $auth->setToken("XXXXXXXXXXXXXXXX");
                      $auth->setHppParameters($hppParameters);
                      $auth->setIframeParameters($iframeParameters);
                      
                      $response = $auth->submit();
                      from BPOINT.Requests import Credentials, UpdateDVTokenAuthKeyRequest, HppParameters, IframeParameters
                      
                      credentials = Credentials("APIUserName", "Passw0rd", "5353109000000000")
                      
                      hppParameters = HppParameters()
                      hppParameters.hide_crn1 = False
                      hppParameters.hide_crn2 = True
                      hppParameters.hide_crn3 = True
                      hppParameters.is_eddr = True
                      hppParameters.crn1_label = "Reference1"
                      hppParameters.biller_code = "00Exmaple00"
                      hppParameters.show_customer_details_form = True
                      
                      iframe_parameters = IframeParameters()
                      iframe_parameters.css = ".control-label{color:blue;}"
                      iframe_parameters.show_submit_button = True
                      
                      request = UpdateDVTokenAuthKeyRequest(credentials,"5999999789012346")
                      request.base_url = "https://www.bpoint.com.au/webapi/v2"
                      request.crn1 = "Ref One"
                      request.redirection_url = "http://yourmerchantwebsite.com/dvtokenreceipt"
                      request.hpp_parameters = hppParameters
                      request.iframe_parameters = iframe_parameters
                      
                      response = request.submit()
                      require_relative "API/BPOINT"
                      
                      cred = BPOINT::Credentials.new("APIUserName", "Passw0rd", "5353109000000000")
                      
                      hpp = BPOINT::HppParameters.new
                      hpp.hide_crn1 = false
                      hpp.hide_crn2 = true
                      hpp.hide_crn3 = true
                      hpp.is_eddr = true
                      hpp.crn1_label = "Reference1"
                      hpp.biller_code = "00Example00"
                      hpp.show_customer_details_form = true
                      
                      iframe_parameters = BPOINT::IframeParameters.new
                      iframe_parameters.css = ".control-label{color:blue;}"
                      iframe_parameters.show_submit_button = true
                      
                      req = BPOINT::UpdateDVTokenAuthKeyRequest.new()
                      req.base_url = "https://www.bpoint.com.au/webapi/v2" 
                      req.crn1  = "Test Ref 1"
                      req.redirection_url ="http://yourmerchantwebsite.com/dvtokenreceipt"
                      req.dvtoken = "5999999789012346"
                      req.credentials = cred
                      req.hpp_parameters = hpp
                      req.iframe_parameters = iframe_parameters
                      
                      response = req.submit()
                      import com.BPOINT.api.*;
                      
                      Credentials credentials = new Credentials("APIUserName", "Passw0rd", "5353109000000000");
                      Sender s = new Sender();
                      
                      TokenUpdateAuthKeyRequest req = new TokenUpdateAuthKeyRequest(credentials);
                      AuthKeyResponse resp;
                      
                      req.setBaseUrl("https://www.bpoint.com.au/webapi/v2");		
                      req.setCrn1("Java DVToken AuthKey Update Ref 1");
                      req.setToken("XXXXXXXXXXXXXXXX");
                      req.setRedirectionUrl("http://yourmerchantwebsite.com/dvtokenreceipt");
                      
                      IframeParameters iframeParameters = new IframeParameters();
                      iframeParameters.setCSS(".control-label{color:blue;}");
                      iframeParameters.setShowSubmitButton(true);
                      
                      HppTokenFlowParameters hppParameters = new HppTokenFlowParameters();
                      hppParameters.setBillerCode("00Example00");
                      hppParameters.setCrn1Label("Reference1");
                      hppParameters.setHideCrn1(false);
                      hppParameters.setIsEddr(true);
                      hppParameters.setShowCustomerDetailsForm(true);
                      
                      req.setHppTokenFlowParameters(hppParameters);
                      req.setIframeParameters(iframeParameters);
                      
                      resp = s.submit(req);
                      use BPOINT::API;
                      use Data::Inspect qw(p);
                      
                      $BPOINT::Sender::base_url = "https://www.bpoint.com.au/webapi/v2";
                      
                      my $cred = BPOINT::Credentials->new(
                      username => 'APIUserName', 
                      password => 'Passw0rd', 
                      merchant_number => "5353109000000000"
                      );
                      
                      my $req;
                      
                      my $hppParameters = BPOINT::HppParameters->new(
                          hide_crn1 => 0, hide_crn2 => 1, hide_crn3 => 1,
                          is_eddr => 1, crn1_label => "Reference1", crn2_label => "", crn3_label => "", biller_code => "00Example00",
                          show_customer_details_form => 1
                      );
                      
                      my $iframeParameters = BPOINT::IframeParameters->new(
                          css => ".control-label{color:blue;}", 
                          show_submit_button => 1
                      );
                      
                      $req = BPOINT::TokenUpdateAuthKeyRequest->new(credentials => $cred,
                      crn1 => "Perl AuthKey DVToken Add 1", 
                      redirection_url => "http://yourmerchantwebsite.com/dvtokenreceipt", 
                      dvtoken => "XXXXXXXXXXXXXXXX",
                      iframe_parameters => $iframeParameters,
                      hpp_parameters => $hppParameters);
                         
                      $result = $req->submit();
                      using BPOINT.API.Client.V2;
                      using API.Client.Common;
                      using API.Client.Common.Helpers;
                      
                      var tokenClient = ClientFactory.GetClientInstance<TokenClient>(
                      new JsonWebClientHelper(),
                      "https://www.bpoint.com.au/webapi/v2",
                      "APIUserName",
                      "5353109000000000",
                      "Passw0rd",
                      null);
                      
                      var apiReq = new CreateUpdateDVTokenAuthKeyReq()
                      {
                          WebHookUrl = null,
                          RedirectionUrl = "http://yourmerchantwebsite.com/dvtokenreceipt",
                          FixedUpdateDVTokenData = new UpdateTokenData
                              {
                                  DVToken = "5999999789012346",
                                  Crn1 = "Ref One",
                                  Crn2 = "",
                                  Crn3 = "",
                                  EmailAddress = "user@email.com"
                              },
                          IframeParameters = new IframeFlowParameters 
                              {
                                  CSS = ".control-label{color:blue;}", 
                                  ShowSubmitButton = true
                              }
                      };
                      
                      var response = tokenClient.CreateUpdateTokenAuthKey(apiReq);
                      var BPOINT = require("./BPOINT_API/index.js");
                      var api = new BPOINT();
                      
                      var hppParameters = new api.HppParameters({
                          HideCrn1 : false,
                          HideCrn2 : true,
                          HideCrn3 : true,
                          IsEddr : true,
                          ShowCustomerDetailsForm : true,
                          BillerCode : "00Example00",
                          crn1Label : "Reference1",
                          crn2Label : null,
                          crn3Label : null
                      });
                      
                      var iframeParameters = new api.IframeParameters({ 
                          CSS : ".control-label{color:blue;}", 
                          ShowSubmitButton : true
                      }); 
                            
                      var req = new api.UpdateDVTokenAuthKey({ 
                      DVToken: "5999999789012346", 
                      Crn1 : "NodeJS Add DVToken AuthKey 1",
                      HppParameters : hppParameters, 
                      IframeParameters : iframeParameters, 
                      RedirectionUrl: "http://yourmerchantwebsite.com"});
                      
                      req.baseUrl("https://www.bpoint.com.au/webapi/v2");
                      
                      var creds = req.credentials({
                      Username : "APIUserName", 
                      Password: "Passw0rd", 
                      MerchantNumber   : "5353109000000000"});
                      
                      var resp = req.submit(ResponseHandler, // Custom Callback Function
                      function(code, body) { console.log(code + " : " + body); }, // Error Callback Function
                      creds);
                      //Configure the ApiConfig.java file to input your API user and Merchant credentials
                      import main.java.com.BPOINT.android.api.ApiManager;
                      
                      String dvtoken = "5999999789012346";
                      
                      String response = createAnAuthKeyToUpdateADataVaultToken(dvtoken);
                      //Not Available

                      Response

                      Response is a JSON object with the following properties.

                      Property Type Description
                      APIResponse object APIResponse object
                      AuthKey string

                      Unique key that the merchant must use when invoking the "Update DVToken" operation using the Browser integration method.

                      The AuthKey is returned only if the API response code indicates success. (MaxLen = 500)

                      HTTP/1.1 200 OK
                      Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                      Pragma: no-cache
                      Content-Length: 108
                      Content-Type: application/json; charset=utf-8
                      Access-Control-Allow-Origin: *
                      Access-Control-Allow-Headers: Content-Type
                      Access-Control-Allow-Methods: GET, POST, OPTIONS
                      Access-Control-Max-Age: 1728000
                      Date: Fri, 12 Dec 2014 01:57:55 GMT
                      
                      {
                      	"APIResponse" : {
                      		"ResponseCode" : 0,
                      		"ResponseText" : "Success"
                      	},
                      	"AuthKey" : "df998fea-f309-4e6e-9629-7149799dc028"
                      }
                      DVToken Webform

                      Add DVToken Webform

                      Securely stores payment details and creates a unique dvtoken

                      This request is made directly from the cardholder's browser. The browser will also automatically handle the response and redirect the cardholder to the appropriate URL.

                      URL

                      POST /dvtokens/webform/add

                      Request Headers

                      This is a browser integration method. You will be required to supply following HTTP headers with your POST request.

                      Content-Type
                      application/x-www-form-urlencoded charset=utf-8

                      Response Headers

                      Request

                      Request is a Form with following properties.

                      Property Type Description
                      AuthKey string Unique key created using the "Create AuthKey" operation (MaxLen = 500)
                      CardHolderName string (MaxLen = 50) Optional
                      CardNumber string (MinLen = 13, MaxLen = 16)
                      Cvn Not required and will be ignored if included in the request. CVN fields are never stored in the payment platform.
                      ExpiryDateMonth string

                      Card expiry date month

                      In MM format(MinLen = 2, MaxLen = 2)

                      ExpiryDateYear string

                      Card expiry date year

                      In YY format (MinLen = 2, MaxLen = 2)

                      AccountName The account name for bank account payments.
                      AccountNumber The account number for bank account payments. (MinLen = 3, MaxLen = 9)
                      BSBNumber The BSB number for bank account payments. (MinLen = 6, MaxLen = 6)
                      Crn1 string Ignored if provided in "Create AuthKey" request. (MaxLen = 50)
                      Crn2 string Ignored if provided in "Create AuthKey" request. (MaxLen = 50) Optional
                      Crn3 string Ignored if provided in "Create AuthKey" request. (MaxLen = 50) Optional
                      EmailAddress string Ignored if provided in "Create AuthKey" request. (MaxLen = 250) Optional
                      POST https://www.bpoint.com.au/webapi/v2/dvtokens/webform/add HTTP/1.1
                      Content-Type: application/x-www-form-urlencoded charset=utf-8
                      Host: www.bpoint.com.au
                      Content-Length: 226
                      Expect: 100-continue
                      
                      &Crn1=12345&Crn2=&Crn3=&EmailAddress=john.smith%40email.com.au&CardNumber=5123456789012346&ExpiryDateMonth=05&ExpiryDateYear=17&Cvn=123&CardHolderName=John+Smith&AuthKey=9ab0d695-d16d-4bf0-8800-7c784e1bd203

                      Response Location

                      URL to redirect to with result appended to query string

                      HTTP/1.1 302 Found
                      Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                      Pragma: no-cache
                      Location: http://yourmerchantwebsite.com/dvtokenreceipt?ResponseCode=0&ResponseText=Success&ResultKey=415d2da7-0cf1-4c75-8c8b-754bba573647
                      Set-Cookie: ASP.NET_SessionId=g0mgvdi2hzjj1jhibr3vnj2j; path=/; secure; HttpOnly
                      p3p: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
                      Access-Control-Allow-Origin: *
                      Access-Control-Allow-Headers: Content-Type
                      Access-Control-Allow-Methods: GET, POST, OPTIONS
                      Access-Control-Max-Age: 1728000
                      Date: Fri, 12 Dec 2014 01:56:18 GMT
                      Content-Length: 0
                      Update DVToken Webform

                      Updates payment details for existing an existing dvtoken

                      This request is made directly from the cardholder's browser. The browser will also automatically handle the response and redirect the cardholder to the appropriate URL.

                      URL

                      POST /dvtokens/webform/update

                      Request Headers

                      This is a browser integration method. You will be required to supply following HTTP headers with your POST request.

                      Content-Type
                      application/x-www-form-urlencoded charset=utf-8

                      Response Headers

                      Request

                      Request is a Form with following properties.

                      Property Type Description
                      AuthKey string Unique key created using the "Create AuthKey" operation (MaxLen = 500)
                      CardHolderName string (MaxLen = 50) Optional
                      CardNumber string Card number (MinLen = 13, MaxLen = 16)
                      Cvn Not required and will be ignored if included in the request. CVN fields are never stored in the payment platform.
                      ExpiryDateMonth string

                      Card expiry date month

                      In MM format (MinLen = 2, MaxLen = 2)

                      ExpiryDateYear string

                      Card expiry date year

                      In YY format (MinLen = 2, MaxLen = 2)

                      AccountName The account name for bank account payments.
                      AccountNumber The account number for bank account payments. (MinLen = 3, MaxLen = 9)
                      BSBNumber The BSB number for bank account payments. (MinLen = 6, MaxLen = 6)
                      Crn1 string Ignored if provided in "Create AuthKey" request. (MaxLen = 50)(this is optional if provided in "Create AuthKey" request)
                      Crn2 string Ignored if provided in "Create AuthKey" request. (MaxLen = 50) Optional
                      Crn3 string Ignored if provided in "Create AuthKey" request. (MaxLen = 50) Optional
                      EmailAddress string Ignored if provided in "Create AuthKey" request. (MaxLen = 250) Optional
                      POST https://www.bpoint.com.au/webapi/v2/dvtokens/webform/update HTTP/1.1
                      Content-Type: application/x-www-form-urlencoded charset=utf-8
                      Host: www.bpoint.com.au
                      Content-Length: 236
                      Expect: 100-continue
                      
                      &Crn1=test+crn1&Crn2=test+crn2&Crn3=test+crn3&EmailAddress=john%40john.com&CardNumber=5123456789012346&ExpiryDateMonth=05&ExpiryDateYear=17&Cvn=123&CardHolderName=John+Smith&AuthKey=5a9e7240-cdfc-4659-9be2-18a01c713b71

                      Response Location

                      URL to redirect to with result appended to query string

                      HTTP/1.1 302 Found
                      Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                      Pragma: no-cache
                      Location: http://yourmerchantwebsite.com/dvtokenreceipt?ResponseCode=0&ResponseText=Success&ResultKey=03a038f5-ae28-44a4-a8d0-8c78279f5445
                      Set-Cookie: ASP.NET_SessionId=fuarrfzj2u0flw3kdgt1h2o1; path=/; secure; HttpOnly
                      p3p: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
                      Access-Control-Allow-Origin: *
                      Access-Control-Allow-Headers: Content-Type
                      Access-Control-Allow-Methods: GET, POST, OPTIONS
                      Access-Control-Max-Age: 1728000
                      Date: Fri, 12 Dec 2014 01:57:56 GMT
                      Content-Length: 0
                      DVToken JavaScript - Simple

                      Add DVToken

                      The API JavaScript makes it easy to store card details without having the card data pass through your servers.

                      Including api.js

                      Add this script tag to your page (preferably at the bottom) to get started with the JavaScript API.

                      Setting up the add dvtoken form

                      This is all you need to start tokenising cards with the payment platform. The JavaScript library will store the card details and redirect the browser to the "RedirectionUrl" supplied when the AuthKey was created (Refer Add DVToken AuthKey). At the end of the redirection, invoke the "Lookup Add/Update DVToken Result" call (Refer Lookup DVToken Result) from your web server to retrieve the dvtoken information and render the confirmation receipt to your customers

                      The three parameters in the sample code above are compulsory. There are several optional parameters, which you can pass to the "SetupAddToken" method to further customise the form as required. Please find below information about the parameters which you can pass to "SetupAddToken" method.

                      <script src="https://www.bpoint.com.au/webapi/CBA/api.js?v=2" type="text/javascript"></script>
                      CBA.SetupAddToken({
                        AcceptBankAccountTerms: true ,
                        AppendToElementId: "add-form-location",
                        AuthKey: $("#AuthKey").val(),
                        DefaultErrorUrl: "https://www.yourdomain.com/handleerror"
                      });

                      Method Parameters

                      Property Type Description
                      AppendToElementId string ID of the HTML element on your page where you want the form to be inserted.
                      AuthKey string Unique key created using "Create AuthKey" operation (Refer AuthKey Add DVToken). You may store this in a hidden field and then pass the value. (MaxLen = 500)
                      DefaultErrorUrl string A fall-back URL which the browser is redirected to if a response is not received.
                      Crn1 object Include this object with appropriate flags if you wish to display the Crn 1 field on the page Optional
                      Crn2 object Include this object with appropriate flags if you wish to display the Crn 2 field on the page Optional
                      Crn3 object Include this object with appropriate flags if you wish to display the Crn 3 field on the page Optional
                      EmailAddress object Include this object with appropriate flags if you wish to display email address field on the page Optional
                      Type string The type of information that you wish to store. E.g. CREDITCARD for storing a CreditCard or BANKACCOUNT for storing a bank account.Optional

                      if this parameter is populated via "Create AuthKey" (Refer AuthKey Add DVToken) operation then that value will take precedence over value submitted here.

                      Update DVToken

                      The API JavaScript makes it easy to update a dvtoken without having the information pass through your servers.

                      Including api.js

                      Add this script tag to your page (preferably at the bottom) to get started with the JavaScript API.

                      Setting up update dvtoken form

                      This is all you need to get started with updating a dvtoken. The JavaScript library will update the card details and will redirect the browser to the "RedirectionUrl" supplied when the AuthKey was created (Refer AuthKey Update Token). At the end of the redirection, invoke the "Lookup Add/Update Token Result" call (Refer Lookup Token Result) from your web server to retrieve the token information and render the confirmation receipt to your customers.

                      The three parameters in the sample code above are compulsory. There are several optional parameters, which you can pass to the "SetupUpdateToken" method to further customise the form as required. Please find below information about the parameters which you can pass to "SetupUpdateToken" method.

                      <script src="https://www.bpoint.com.au/webapi/CBA/api.js?v=2" type="text/javascript"></script>
                      CBA.SetupUpdateToken({
                        AppendToElementId: "update-form-location",
                        AuthKey: $("#AuthKey").val(),
                        DefaultErrorUrl: "https://www.yourdomain.com/handleerror"
                      });

                      Method Parameters

                      Property Type Description
                      AppendToElementId string ID of the HTML element on your page where you want the form to be inserted.
                      AuthKey string Unique key created using "Create AuthKey" operation (Refer AuthKey Add DVToken). You may store this in a hidden field and then pass the value.(MaxLen = 500)
                      DefaultErrorUrl string A fall-back URL which the browser is redirected to if a response is not received.
                      Crn1 object Include this object with appropriate flags if you wish to display the Crn 1 field on the page Optional
                      Crn2 object Include this object with appropriate flags if you wish to display the Crn 2 field on the page Optional
                      Crn3 object Include this object with appropriate flags if you wish to display the Crn 3 field on the page Optional
                      EmailAddress object Include this object with appropriate flags if you wish to display email address field on the page Optional
                      Type string The type of information that you wish to store. E.g. CREDITCARD for storing a CreditCard or BANKACCOUNT for storing a bank account.Optional

                      if this parameter is populated via "Create AuthKey" (Refer AuthKey Update DVToken) operation then that value will take precedence over value submitted here.

                      DVToken JavaScript - Advanced

                      Add DVToken

                      "SetupAddToken" as explained above is the simple approach to start collecting card or bank account information using the API. For more control over the user experience, please follow the custom method as described below.

                      Process add dvtoken

                      Invoke the process add dvtoken method as explained below when you are ready to store the payment instrument e.g. a button click. "ProcessAddToken" is an asynchronous call - it returns immediately and invokes the "CallbackFunction" when it receives a response from the server.

                      CBA.ProcessAddToken({
                      	AuthKey: $("#AuthKey").val(),
                      	Crn1: $("#Crn1").val(),
                      	Crn2: $("#Crn2").val(),
                      	Crn3: $("#Crn3").val(),
                      	EmailAddress: $("#EmailAddress").val(),
                      	Type: "CREDITCARD",
                      	CardHolderName: $("#CardHolderName").val(),
                      	CardNumber: $("#CardNumber").val(),
                      	ExpiryMonth: $("#CardExpiryMonth").val(),
                      	ExpiryYear: $("#CardExpiryYear").val(),
                      	CallbackFunction: ProcessAddTokenCallBack
                      });

                      Method Parameters

                      Property Type Description
                      AuthKey string Unique key created using the "Create AuthKey" operation (Refer AuthKey Add DVToken). You may store this in a hidden field and then pass the value. (MaxLen = 500)
                      Crn1 string Crn 1 to store with the dvtoken (MaxLen = 50)
                      Optional if supplied while creating the AuthKey (Refer AuthKey Add DVToken)
                      Crn2 string Crn 2 to store with the dvtoken (MaxLen = 50) Optional
                      Crn3 string Crn 3 to store with the dvtoken (MaxLen = 50) Optional
                      EmailAddress string Email address to store with the dvtoken (MaxLen = 250) Optional
                      Type string The type of information that you wish to store. E.g. CREDITCARD for storing a CreditCard or BANKACCOUNT for storing a bank account.Optional
                      CardHolderName string Name on the card (MaxLen = 50) Optional
                      CardNumber numeric Card number you wish to tokenise
                      MANDATORYif TYPE is CREDITCARD
                      ExpiryMonth numeric Expiry month of the card
                      MANDATORY if TYPE is CREDITCARD
                      ExpiryYear numeric Expiry year of the card
                      MANDATORY if TYPE is CREDITCARD
                      CallbackFunction function This is a callback you provide to handle the response from the API. Please see below for more information on this.

                      The "CallbackFunction" is a JavaScript function you provide to handle the response from the API. It does the following:

                      1. If the payment information entered by the user returned an error, display it on the page
                      2. If an error was not returned, then submit the result back to your server to call the "Lookup Add/Update DVToken Result" (Refer Lookup DVToken Result) and render the conformation receipt. Note: It is recommended that you do not submit the card details to your server, and only submit the result of the call back to your server.

                      Below is a sample implementation of "ProcessAddTokenCallBack":

                      function ProcessAddTokenCallBack(result) {
                       var errors = new Array();
                      
                       if (result.AjaxResponseType == 0) { 
                       //AJAX call was successful
                      		
                        if (result.ApiResponseCode == 0) {
                        //API returned success. 
                        //Refer to (API Response Codes) for API Response codes.
                        //Submit result.ResultKey to your server for further 
                        //processing(Refer Lookup DVToken Result)
                        }
                        else {
                        errors = result.Errors;
                        }
                       }
                       else if(result.AjaxResponseType == 1) { 
                       //Error with AJAX call
                        errors = result.Errors;
                       }
                       else if(result.AjaxResponseType == 2) { 
                       //AJAX call timed out 
                        errors = result.Errors;
                       }
                      	
                       //Show errors on the page
                       if (errors.length > 0) {
                        var ul = $("<ul></ul>");
                      
                        $.each(errors, function (i, r) {
                        ul.append("<li>" + r.Message + "</li>");
                        });
                      
                        $(".validation-summary").append(ul).show();
                       }
                      }

                      Result

                      The result object is described as below:

                      Property Type Description
                      AjaxResponseType numeric

                      This is the result of the AJAX call. This will assist you in handling the call back.

                      Possible values are 0, 1 or 2. Where 0 is success, 1 is error and 2 is timeout.

                      ApiResponseCode numeric

                      This is the response code returned by the API

                      Please refer to Appendix (API Response Codes) for possible values

                      Errors array List of errors returned, e.g. validation errors.
                      ResultKey string This is the result key that you will have to submit to retrieve the dvtoken information, "Lookup Add/Update DVToken Result" (Refer Lookup DVToken Result).
                      Update DVToken

                      "SetupUpdateToken" as explained above is the simple approach to start updating previously stored card or bank account information using the API. For more control over the user experience, please follow the custom method as described below.

                      Process update dvtoken

                      Invoke the process update dvtoken method as explained below when you are ready to update the dvtoken e.g. a button click. "ProcessUpdateToken" is an asynchronous call - it returns immediately and invokes the "CallbackFunction" when it received a response from the server.

                      CBA.ProcessUpdateToken({
                      	AuthKey: $("#AuthKey").val(),
                      	Crn1: $("#Crn1").val(),
                      	Crn2: $("#Crn2").val(),
                      	Crn3: $("#Crn3").val(),
                      	EmailAddress: $("#EmailAddress").val(),
                      	Type: "CREDITCARD",
                      	CardHolderName: $("#CardHolderName").val(),
                      	CardNumber: $("#CardNumber").val(),
                      	ExpiryMonth: $("#CardExpiryMonth").val(),
                      	ExpiryYear: $("#CardExpiryYear").val(),
                      	CallbackFunction: ProcessUpdateTokenCallBack
                      });

                      Method Parameters

                      Property Type Description
                      AuthKey string Unique key created using the "Create AuthKey" operation (Refer AuthKey Update DVToken). You may store this in a hidden field and then pass the value. (MaxLen = 500)
                      Crn1 string Crn 1 to store with the dvtoken (MaxLen = 50)
                      Optional if supplied while creating the AuthKey (Refer AuthKey Update DVToken)
                      Crn2 string Crn 2 to store with the dvtoken (MaxLen = 50) Optional
                      Crn3 string Crn 3 to store with the dvtoken (MaxLen = 50) Optional
                      EmailAddress string Email address to store with the dvtoken (MaxLen = 250) Optional
                      Type string The type of information that you wish to store. E.g. CREDITCARD for storing a CreditCard or BANKACCOUNT for storing a bank account.Optional
                      CardHolderName string Name on the card (MaxLen = 50) Optional
                      CardNumber numeric Card number you wish to tokenise
                      MANDATORYif TYPE is CREDITCARD
                      ExpiryMonth numeric Expiry month of the card
                      MANDATORYif TYPE is CREDITCARD
                      ExpiryYear numeric Expiry year of the card
                      MANDATORYif TYPE is CREDITCARD
                      CallbackFunction function This is a callback you provide to handle the response from the API. Please see below for more information on this.

                      The "CallbackFunction" is a JavaScript function you provide to handle the response from the API. It does the following:

                      1. If the payment information entered by the user returned an error, display it on the page
                      2. If an error was not returned, then submit the result back to your server to call the "Lookup Add/Update DVToken Result" (Refer Lookup DVToken Result) and render the conformation receipt. Note: It is recommended that you do not submit the card details to your server, and only submit the result of the call back to your server.

                      Below is a sample implementation of "ProcessUpdateTokenCallBack":

                      function ProcessUpdateTokenCallBack(result) {
                       var errors = new Array();
                      
                       if (result.AjaxResponseType == 0) { 
                       //AJAX call was successful
                      		
                        if (result.ApiResponseCode == 0) {
                        //API returned success. 
                        //Refer to Appendix (API Response Codes)  for API Response codes.
                        //Submit result.ResultKey to your server for further
                        //processing(Refer Lookup DVToken Result)
                        }
                        else {
                        errors = result.Errors;
                        }
                       }
                       else if(result.AjaxResponseType == 1) { 
                       //Error with AJAX call
                        errors = result.Errors;
                       }
                       else if(result.AjaxResponseType == 2) { 
                       //AJAX call timed out 
                        errors = result.Errors;
                       }
                      	
                       //Show errors on the page
                       if (errors.length > 0) {
                        var ul = $("<ul></ul>");
                      
                        $.each(errors, function (i, r) {
                        ul.append("<li>" + r.Message + "</li>");
                        });
                      
                        $(".validation-summary").append(ul).show();
                       }
                      }

                      Result

                      The result object is described as below:

                      Property Type Description
                      AjaxResponseType numeric

                      This is the result of the AJAX call. This will assist you in handling the call back.

                      Possible values are 0, 1 or 2. Where 0 is success, 1 is error and 2 is timeout.

                      ApiResponseCode numeric

                      This is the response code returned by the API

                      Please refer to (API Response Codes) for possible values

                      Errors array List of errors returned, e.g. validation errors.
                      ResultKey string This is the result key that you will have to submit to retrieve the dvtoken information, "Lookup Add/Update DVToken Result" (Refer Lookup DVToken Result).
                      3 Party Redirect

                      Add DVToken Redirect

                      Note: The dvtoken add page presented to the cardholder comes directly from the payment platform.

                      To add a dvtoken using this method, the cardholder's browser must be directed to the appropriate URL using either a hyperlink or HTTP 302 redirect. In both cases, two values are required to be included:

                      • MerchantShortName. This is assigned by CBA and is part of your payment page URL.
                      • authKey - Obtained via AuthKey Add call

                      Hyperlink example

                      Render a link on your page similar to the following - this will direct the cardholder to the Hosted Payment Page

                      <a href="https://www.bpoint.com.au/pay/{MerchantShortName}.adddv?in_sessionid={authKey}">Add your payment details</a>

                      Redirect example

                      Send the following HTTP 302 Redirect to the cardholder's browser - this will direct the cardholder to the Hosted Payment Page

                      HTTP/1.1 302 Found
                      Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                      Pragma: no-cache
                      Location: https://www.bpoint.com.au/pay/{MerchantShortName}.adddv?in_sessionid={authKey} 

                      Response

                      An API response will be appended to the query string of the redirection URL specified in the authkey request.

                      HTTP/1.1 302 Found
                      Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                      Pragma: no-cache
                      Location: http://yourmerchantwebsite.com/dvtokenreceipt?ResponseCode=0&ResponseText=Success&ResultKey=415d2da7-0cf1-4c75-8c8b-754bba573647
                      Set-Cookie: ASP.NET_SessionId=g0mgvdi2hzjj1jhibr3vnj2j; path=/; secure; HttpOnly
                      p3p: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
                      Access-Control-Allow-Origin: *
                      Access-Control-Allow-Headers: Content-Type
                      Access-Control-Allow-Methods: GET, POST, OPTIONS
                      Access-Control-Max-Age: 1728000
                      Date: Fri, 12 Dec 2014 01:56:18 GMT
                      Content-Length: 0
                      Update DVToken Redirect

                      Note: The dvtoken update page presented to the cardholder comes directly from the payment platform.

                      To update a dvtoken using this method, the cardholder's browser must be directed to the appropriate URL using either a hyperlink or HTTP 302 redirect. In both cases, two values are required to be included:

                      • MerchantShortName. This is assigned by CBA and is part of your payment page URL.
                      • authKey - Obtained via AuthKey Update call

                      Hyperlink example

                      Render a link on your page similar to the following - this will direct the cardholder to the Hosted Payment Page

                      <a href="https://www.bpoint.com.au/pay/{MerchantShortName}.updatedv?in_sessionid={authKey}">Update your Payment details</a>

                      Redirect example

                      Send the following HTTP 302 Redirect to the cardholder's browser - this will direct the cardholder to the Hosted Payment Page

                      HTTP/1.1 302 Found
                      Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                      Pragma: no-cache
                      Location: https://www.bpoint.com.au/pay/{MerchantShortName}.updatedv?in_sessionid={authKey} 

                      Response

                      An API response will be appended to the query string of the redirection URL specified in the authkey request.

                      HTTP/1.1 302 Found
                      Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                      Pragma: no-cache
                      Location: http://yourmerchantwebsite.com/dvtokenreceipt?ResponseCode=0&ResponseText=Success&ResultKey=415d2da7-0cf1-4c75-8c8b-754bba573647
                      Set-Cookie: ASP.NET_SessionId=g0mgvdi2hzjj1jhibr3vnj2j; path=/; secure; HttpOnly
                      p3p: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
                      Access-Control-Allow-Origin: *
                      Access-Control-Allow-Headers: Content-Type
                      Access-Control-Allow-Methods: GET, POST, OPTIONS
                      Access-Control-Max-Age: 1728000
                      Date: Fri, 12 Dec 2014 01:56:18 GMT
                      Content-Length: 0
                      3 Party Iframe

                      3 Party DVToken Add Iframe

                      There are two available methods.

                      • Submit button inside iframe (multi page / button mode)
                      • Submit button outside iframe (single page / button mode)

                      Submit button inside example

                      If IframeParameters.ShowSubmitButton is set to true in a create AuthKey request (see AuthKey) then the iframe add DVToken page will operate in the multi-page / button mode. In this mode the "Process Add DVToken Iframe" method (See submit button outside example) does not need to be invoked. Instead, the DVTokenReq.Crn1 parameter needs to be submitted in the create AuthKey call.

                      <iframe src="https://www.bpoint.com.au/webapi/v2/dvtokens/iframe/add/{authKey}" frameborder="0"></iframe>

                      Clicking the "Submit" button inside iframe will process the add DVToken request and will redirect the iframe to the RedirectionUrl specified in the AuthKey request.

                      http://yourmerchantwebsite.com/tokenreceipt?ResponseCode=0&ResponseText=Success&ResultKey=13cfa799-8278-4872-a705-7ed49d516c0b

                      Request

                      Request is a DVTokenReq (DVToken request details) JSON object with following properties.

                      Property Type Description
                      DVTokenReq object DVToken Request object

                      Submit button outside example

                      If IframeParameters.ShowSubmitButton is either not set (default) or set to false in create AuthKey call (see AuthKey) then the iframe add DVToken page will operate in the single page / button mode. In this mode as the consumer enters their details into the card fields (card holder name, card number, expiry date), it will get stored on the AuthKey session. The Process Add DVToken Iframe (https://www.bpoint.com.au/webapi/v2/dvtokens/iframe/add/{authKey}) function will need to be invoked to process the add request, this can be either an ajax call or a server to server call.

                      Server to server example

                      POST https://www.bpoint.com.au/webapi/v2/dvtokens/iframe/add/{authKey} HTTP/1.1
                      Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=
                      Content-Type: application/json; charset=utf-8
                      Host: www.bpoint.com.au
                      Content-Length: 247
                      Expect: 100-continue
                      Connection: Keep-Alive
                      
                      {
                      	"DVTokenReq" : {
                      		"BankAccountDetails" : null,
                      		"CardDetails" : {
                      			"CardHolderName" : "John Smith"
                      		},
                      		"AcceptBADirectDebitTC" : true,
                      		"EmailAddress" : "john.smith@email.com.au",
                      		"Crn1" : "12345",
                      		"Crn2" : "",
                      		"Crn3" : null
                      	}
                      }
                      include ("./API/BPOINT.php");
                      
                      BPOINT\URLDirectory::setBaseURL("reserved","https://www.bpoint.com.au/webapi/v2");	
                      $credentials = new BPOINT\Credentials("APIUserName", "Passw0rd", "5353109000000000", BPOINT\Mode::Live);
                      
                      $cardDetails = new BPOINT\AuthKeyCardDetails();
                      $cardDetails->setCardHolderName("cardholdername");
                      
                      $addToken = new BPOINT\AddDVTokenViaIframe("{AuthKey}");
                      $addToken->setCredentials($credentials);
                      $addToken->setCardDetails($cardDetails);
                      $addToken->setEmailAddress("user@email.com");
                      $addToken->setCrn1("DVToken Crn 1");
                      $addToken->setCrn2("DVToken Crn 2");
                      $addToken->setCrn3("DVToken Crn 3");
                      
                      $response = $addToken->submit();
                      from BPOINT.Requests import Credentials, AddDVTokenViaIframe
                      from BPOINT.Utils import AuthKeyCardDetails   
                      
                      credentials = Credentials("APIUserName", "Passw0rd", "5353109000000000")
                      
                      request = AddDVTokenViaIframe(credentials,"{AuthKey}")
                      request.base_url = "https://www.bpoint.com.au/webapi/v2"
                      
                      request.card_details = AuthKeyCardDetails(card_holder_name = "MR C CARDHOLDER")
                      
                      request.crn1 = "Ref One"
                      
                      response = request.submit()
                      require_relative "API/BPOINT"
                      
                      cred = BPOINT::Credentials.new("APIUserName", "Passw0rd", "5353109000000000")
                      
                      req = BPOINT::AddDVTokenViaIframe.new("{AuthKey}")
                      req.credentials = cred
                        
                      cc = BPOINT::AuthKeyCardDetails.new()
                      cc.card_holder_name = "Card Holder Name"
                        
                      req.base_url = "https://www.bpoint.com.au/webapi/v2"
                      req.card_details = cc
                      req.crn1 = "crn 1"
                        
                      response = req.submit()
                      import com.BPOINT.api.*;
                      
                      Credentials credentials = new Credentials("APIUserName", "Passw0rd", "5353109000000000");
                      Sender s = new Sender();
                      
                      CreditCardDetailsWith2PartExpiryDate cc = new CreditCardDetailsWith2PartExpiryDate();
                      cc.setCardHolderName("MR C CARDHOLDER");
                      
                      AddTokenViaIframe req = new AddTokenViaIframe(credentials);
                      req.setAuthKey("{authKey}");
                      req.setBaseUrl("https://www.bpoint.com.au/webapi/v2");
                      req.setCrn1("Java DVToken 1");
                      req.setCardDetails(cc);
                      
                      ResultKeyResponse resp;
                      resp = s.submit(req);
                      use BPOINT::API;
                      use Data::Inspect qw(p);
                      
                      $BPOINT::Sender::base_url = "https://www.bpoint.com.au/webapi/v2";
                      
                      my $cred = BPOINT::Credentials->new(
                      username => 'APIUserName', 
                      password => 'Passw0rd', 
                      merchant_number => "5353109000000000"
                      );
                      
                      my $req;
                      
                      my $cc = BPOINT::AuthKeyCardDetails->new(card_holder_name => "MR C CARDHOLDER");
                      
                      $req = BPOINT::AddTokenViaIframe->new(
                      credentials => $cred, 
                      crn1 => "Perl DVToken 1", 
                      card_details => $cc,
                      auth_key => "{authKey}");
                          
                         
                      $result = $req->submit();
                      using BPOINT.API.Client.V2;
                      using API.Client.Common;
                      using API.Client.Common.Helpers;
                      
                      var tokenClient = ClientFactory.GetClientInstance<TokenClient>(
                      new JsonWebClientHelper(),
                      "https://www.bpoint.com.au/webapi/v2",
                      "APIUserName",
                      "5353109000000000",
                      "Passw0rd",
                      null);
                      
                      var apiReq = new AddDVTokenWithAuthKeyReq()
                      {
                          DVTokenReq = new TokenRequestWithAuthKey()
                          {
                              CardDetails = new  CreditCardDetailsWith2PartExpiryDate(){
                                  CardHolderName = "John Smith"
                              },
                              Crn1 = "12345",
                              Crn2 = "",
                              Crn3 = "",
                              EmailAddress = "john.smith@email.com.au"
                          }
                      };
                      
                      var response = tokenClient.AddTokenViaIframe("{authKey}",apiReq);
                      var BPOINT = require("./BPOINT_API/index.js");
                      var api = new BPOINT();
                      
                      var cc = new api.AuthKeyCardDetails({
                      CardHolderName : "MR C CARDHOLDER"});
                      
                      var req = new api.AddDVTokenViaIframe({
                      Crn1: "NodeJS DVToken 1", 
                      EmailAddress: "notatoken@dvtoken.com", 
                      CardDetails: cc,
                      AuthKey: "{AuthKey}"});
                      
                      req.baseUrl("https://www.bpoint.com.au/webapi/v2");
                      
                      var creds = req.credentials({
                      Username : "APIUserName", 
                      Password: "Passw0rd", 
                      MerchantNumber   : "5353109000000000"});
                      
                      var resp = req.submit(ResponseHandler, // Custom Callback Function
                      function(code, body) { console.log(code + " : " + body); }, // Error Callback Function
                      creds);
                      //Not Available
                      //Not Available

                      Ajax example

                      <div class="validation-summary"></div>
                      
                      <div>
                          <label>Crn1:</label>
                          <input id="Crn1" name="Crn1" type="text"/>
                      </div>
                      <div>
                          <label>Crn2:</label>
                          <input id="Crn2" name="Crn2" type="text"/>
                      </div>
                      <div>
                          <label>Crn3:</label>
                          <input id="Crn3" name="Crn3" type="text"/>
                      </div>
                      <div>
                          <label>EmailAddress:</label>
                          <input id="EmailAddress" name="EmailAddress" type="text"/>
                      </div>
                      <div>
                          <label>CardHolderName:</label>
                          <input id="CardHolderName" name="CardHolderName" type="text"/>
                      </div>
                      
                      <div>
                          <iframe src="https://www.bpoint.com.au/webapi/v2/dvtokens/iframe/add/{authKey}" frameborder="0"></iframe>
                      </div>
                      
                      <div>
                      <button id="btnProcess" type="button">Process</button>
                      </div>
                      
                      <script type="text/javascript">
                          $(document).ready(function () {
                              $("#btnProcess").click(function () {
                                  $("input").attr("disabled", "disabled");
                                  setTimeout(ProcessTokenisation, 1000);
                              });
                          });
                          
                      function ProcessTokenisation() {
                          $(".validation-summary").empty().hide();
                          var url = "https://www.bpoint.com.au/webapi/v2/dvtokens/iframe/add/{authKey}";
                          var jsonModel = JSON.stringify(GetModelForProcessing());
                      
                          $.ajax({
                              type: "POST",
                              dataType: "json",
                              contentType: "application/json",
                              url: url,
                              data: jsonModel,
                              success: function (result) {
                                  $("input").removeAttr("disabled");
                      
                                  if (result && result.APIResponse) {
                                      if (result.APIResponse.ResponseCode == 0) {
                                          window.location.href = result.RedirectionUrl;
                                      }
                                      else
                                          ShowError(result.APIResponse.ResponseText);
                                  }
                                  else {
                                      ShowError("Error processing your request. Response from API is either empty or invalid.");
                                  }
                              },
                              error: function (jqXhr, textStatus) {
                                  $("input").removeAttr("disabled");
                                  $("#btnProcess").removeAttr("disabled");
                                  ShowError("AJAX Error processing your request. XHR Status: " + textStatus);
                              }
                          });
                      }
                          
                      function ShowError(errorText) {
                          var ul = $("<ul></ul>");
                      
                          ul.append("<li>" + errorText + "</li>");
                      
                          $(".validation-summary").append(ul).show();
                      }
                      
                      function GetModelForProcessing() {
                          var model = new Object();
                      
                          model.DVTokenReq = new Object();
                          model.DVTokenReq.Crn1 = $("#CRN1").val();
                          model.DVTokenReq.Crn2 = $("#CRN2").val();
                          model.DVTokenReq.Crn3 = $("#CRN3").val();
                          model.DVTokenReq.EmailAddress = $("#EmailAddress").val();
                          model.DVTokenReq.CardDetails = new Object();
                          model.DVTokenReq.CardDetails.CardHolderName = $("#CardHolderName").val();
                      
                          return model;
                      } 
                      </script>

                      Response

                      Response is a JSON object with the following properties.

                      Property Type Description
                      APIResponse object APIResponse object
                      ResultKey string This is the result key that you will have to submit to retrieve the add token result and present the receipt to the customer, "Lookup DVToken Result" (Refer Lookup DVToken Result).
                      RedirectionUrl string URL to use for redirection (if you receive an ApiResponseCode of 300, perform a full browser redirect with this value).
                      HTTP/1.1 200 OK
                      Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                      Pragma: no-cache
                      Content-Length: 144
                      Content-Type: application/json; charset=utf-8
                      Set-Cookie: ASP.NET_SessionId=qmytl98r23956x2998tyuins; path=/; secure; HttpOnly
                      Access-Control-Allow-Origin: *
                      Access-Control-Allow-Headers: Content-Type
                      Access-Control-Allow-Methods: GET, POST, OPTIONS
                      Access-Control-Max-Age: 1728000
                      Date: Fri, 12 Dec 2014 01:27:07 GMT
                      
                      {
                        "APIResponse" : {
                          "ResponseCode" : 0,
                          "ResponseText" : "Success"
                        },
                        "ResultKey" : "df998fea-f309-4e6e-9629-7149799dc028",
                        "RedirectionUrl" : "http://yourmerchantwebsite.com/tokenreceipt?ResponseCode=0&ResponseText=Success&ResultKey=df998fea-f309-4e6e-9629-7149799dc028"
                      }
                      3 Party DVToken Update Iframe

                      There are two available methods.

                      • Submit button inside iframe (multi page / button mode)
                      • Submit button outside iframe (single page / button mode)

                      Submit button inside example

                      If IframeParameters.ShowSubmitButton is set to true in a create AuthKey request (see AuthKey) then the iframe update DVToken page will operate in the multi-page / button mode. In this mode the "Process Update DVToken Iframe" method (See submit button outside example) does not need to be invoked. Instead, the DVTokenReq.Crn1 parameter needs to be submitted in the create AuthKey call.

                      <iframe src="https://www.bpoint.com.au/webapi/v2/dvtokens/iframe/update/{authKey}" frameborder="0"></iframe>

                      Clicking the "Submit" button inside iframe will process the update DVToken request and will redirect the iframe to the RedirectionUrl specified in the AuthKey request.

                      http://yourmerchantwebsite.com/tokenreceipt?ResponseCode=0&ResponseText=Success&ResultKey=13cfa799-8278-4872-a705-7ed49d516c0b

                      Request

                      Request is a DVTokenReq (DVToken request details) JSON object with following properties.

                      Property Type Description
                      DVTokenReq object DVToken Request object

                      Submit button outside example

                      If IframeParameters.ShowSubmitButton is either not set (default) or set to false in create AuthKey call (see AuthKey) then the iframe update DVToken page will operate in the single page / button mode. In this mode as the consumer enters their details into the card fields (card holder name, card number, expiry date), it will get stored on the AuthKey session. The Process Update DVToken Iframe (https://www.bpoint.com.au/webapi/v2/dvtokens/iframe/update/{authKey}) function will need to be invoked to process the update request, this can be either an ajax call or a server to server call.

                      Server to server example

                      POST https://www.bpoint.com.au/webapi/v2/dvtokens/iframe/update/{authKey} HTTP/1.1
                      Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=
                      Content-Type: application/json; charset=utf-8
                      Host: www.bpoint.com.au
                      Content-Length: 247
                      Expect: 100-continue
                      Connection: Keep-Alive
                      
                      {
                          "DVTokenReq" : {
                              "BankAccountDetails" : null,
                              "CardDetails" : {
                                  "CardHolderName" : "John Smith"
                              },
                              "AcceptBADirectDebitTC" : true,
                              "EmailAddress" : "john.smith@email.com.au",
                              "Crn1" : "12345",
                              "Crn2" : "",
                              "Crn3" : null
                          }
                      }
                      include ("./API/BPOINT.php");
                      
                      BPOINT\URLDirectory::setBaseURL("reserved","https://www.bpoint.com.au/webapi/v2");	
                      $credentials = new BPOINT\Credentials("APIUserName", "Passw0rd", "5353109000000000", BPOINT\Mode::Live);
                      
                      $cardDetails = new BPOINT\AuthKeyCardDetails();
                      $cardDetails->setCardHolderName("cardholdername");
                      
                      $addToken = new BPOINT\UpdateDVTokenViaIframe("{AuthKey}");
                      $addToken->setCredentials($credentials);
                      $addToken->setCardDetails($cardDetails);
                      $addToken->setEmailAddress("user@email.com");
                      $addToken->setCrn1("DVToken Crn 1");
                      $addToken->setCrn2("DVToken Crn 2");
                      $addToken->setCrn3("DVToken Crn 3");
                      
                      $response = $addToken->submit();
                      from BPOINT.Requests import Credentials, UpdateDVTokenViaIframe
                      from BPOINT.Utils import AuthKeyCardDetails   
                      
                      credentials = Credentials("APIUserName", "Passw0rd", "5353109000000000")
                      
                      request = UpdateDVTokenViaIframe(credentials,"{AuthKey}")
                      request.base_url = "https://www.bpoint.com.au/webapi/v2"
                      
                      request.card_details = AuthKeyCardDetails(card_holder_name = "MR C CARDHOLDER")
                      request.crn1 = "Ref One"
                      
                      response = request.submit()
                      require_relative "API/BPOINT"
                      
                      cred = BPOINT::Credentials.new("APIUserName", "Passw0rd", "5353109000000000")
                      
                      req = BPOINT::UpdateDVTokenViaIframe.new("{AuthKey}")
                      req.credentials = cred
                        
                      cc = BPOINT::AuthKeyCardDetails.new()
                      cc.card_holder_name = "Card Holder Name"
                        
                      req.base_url = "https://www.bpoint.com.au/webapi/v2"
                      req.card_details = cc
                      req.crn1 = "crn 1"
                        
                      response = req.submit()
                      import com.BPOINT.api.*;
                      
                      Credentials credentials = new Credentials("APIUserName", "Passw0rd", "5353109000000000");
                      Sender s = new Sender();
                      
                      CreditCardDetailsWith2PartExpiryDate cc = new CreditCardDetailsWith2PartExpiryDate();
                      cc.setCardHolderName("MR C CARDHOLDER");
                      
                      UpdateTokenViaIframe req = new UpdateTokenViaIframe(credentials);
                      req.setAuthKey("{authKey}");
                      req.setBaseUrl("https://www.bpoint.com.au/webapi/v2");
                      req.setCrn1("Java DVToken 1");
                      req.setCardDetails(cc);
                      
                      ResultKeyResponse resp;
                      resp = s.submit(req);
                      use BPOINT::API;
                      use Data::Inspect qw(p);
                      
                      $BPOINT::Sender::base_url = "https://www.bpoint.com.au/webapi/v2";
                      
                      my $cred = BPOINT::Credentials->new(
                      username => 'APIUserName', 
                      password => 'Passw0rd', 
                      merchant_number => "5353109000000000"
                      );
                      
                      my $req;
                      
                      my $cc = BPOINT::AuthKeyCardDetails->new(card_holder_name => "MR C CARDHOLDER");
                      
                      $req = BPOINT::UpdateTokenViaIframe->new(
                      credentials => $cred, 
                      crn1 => "Perl DVToken 1", 
                      card_details => $cc,
                      auth_key => "{authKey}");
                          
                         
                      $result = $req->submit();
                      using BPOINT.API.Client.V2;
                      using API.Client.Common;
                      using API.Client.Common.Helpers;
                      
                      var tokenClient = ClientFactory.GetClientInstance<TokenClient>(
                      new JsonWebClientHelper(),
                      "https://www.bpoint.com.au/webapi/v2",
                      "APIUserName",
                      "5353109000000000",
                      "Passw0rd",
                      null);
                      
                      var apiReq = new UpdateDVTokenWithAuthKeyReq()
                      {
                          DVTokenReq = new DVTokenRequestWithAuthKey()
                          {
                              CardDetails = new  CreditCardDetailsWith2PartExpiryDate(){
                                  CardHolderName = "John Smith"
                              },
                              Crn1 = "12345",
                              Crn2 = "",
                              Crn3 = "",
                              EmailAddress = "john.smith@email.com.au"
                          }
                      };
                      
                      var response = tokenClient.UpdateTokenViaIframe("{authKey}",apiReq);
                      var BPOINT = require("./BPOINT_API/index.js");
                      var api = new BPOINT();
                      
                      var cc = new api.AuthKeyCardDetails({
                      CardHolderName : "MR C CARDHOLDER"});
                      
                      var req = new api.UpdateDVTokenViaIframe({
                      Crn1: "NodeJS DVToken 1", 
                      EmailAddress: "notatoken@dvtoken.com", 
                      CardDetails: cc,
                      AuthKey: "{AuthKey}"});
                      
                      req.baseUrl("https://www.bpoint.com.au/webapi/v2");
                      
                      var creds = req.credentials({
                      Username : "APIUserName", 
                      Password: "Passw0rd", 
                      MerchantNumber   : "5353109000000000"});
                      
                      var resp = req.submit(ResponseHandler, // Custom Callback Function
                      function(code, body) { console.log(code + " : " + body); }, // Error Callback Function
                      creds);
                      //Not Available
                      //Not Available

                      Ajax example

                      <div class="validation-summary"></div>
                      
                      <div>
                          <label>Crn1:</label>
                          <input id="Crn1" name="Crn1" type="text"/>
                      </div>
                      <div>
                          <label>Crn2:</label>
                          <input id="Crn2" name="Crn2" type="text"/>
                      </div>
                      <div>
                          <label>Crn3:</label>
                          <input id="Crn3" name="Crn3" type="text"/>
                      </div>
                      <div>
                          <label>EmailAddress:</label>
                          <input id="EmailAddress" name="EmailAddress" type="text"/>
                      </div>
                      <div>
                          <label>CardHolderName:</label>
                          <input id="CardHolderName" name="CardHolderName" type="text"/>
                      </div>
                      
                      <div>
                          <iframe src="https://www.bpoint.com.au/webapi/v2/dvtokens/iframe/update/{authKey}" frameborder="0"></iframe>
                      </div>
                      
                      <div>
                      <button id="btnProcess" type="button">Process</button>
                      </div>
                      
                      <script type="text/javascript">
                          $(document).ready(function () {
                              $("#btnProcess").click(function () {
                                  $("input").attr("disabled", "disabled");
                                  setTimeout(ProcessTokenisation, 1000);
                              });
                          });
                          
                      function ProcessTokenisation() {
                          $(".validation-summary").empty().hide();
                          var url = "https://www.bpoint.com.au/webapi/v2/dvtokens/iframe/update/{authKey}";
                          var jsonModel = JSON.stringify(GetModelForProcessing());
                      
                          $.ajax({
                              type: "POST",
                              dataType: "json",
                              contentType: "application/json",
                              url: url,
                              data: jsonModel,
                              success: function (result) {
                                  $("input").removeAttr("disabled");
                      
                                  if (result && result.APIResponse) {
                                      if (result.APIResponse.ResponseCode == 0) {
                                          window.location.href = result.RedirectionUrl;
                                      }
                                      else
                                          ShowError(result.APIResponse.ResponseText);
                                  }
                                  else {
                                      ShowError("Error processing your request. Response from API is either empty or invalid.");
                                  }
                              },
                              error: function (jqXhr, textStatus) {
                                  $("input").removeAttr("disabled");
                                  $("#btnProcess").removeAttr("disabled");
                                  ShowError("AJAX Error processing your request. XHR Status: " + textStatus);
                              }
                          });
                      }
                          
                      function ShowError(errorText) {
                          var ul = $("<ul></ul>");
                      
                          ul.append("<li>" + errorText + "</li>");
                      
                          $(".validation-summary").append(ul).show();
                      }
                      
                      function GetModelForProcessing() {
                          var model = new Object();
                      
                          model.DVTokenReq = new Object();
                          model.DVTokenReq.Crn1 = $("#CRN1").val();
                          model.DVTokenReq.Crn2 = $("#CRN2").val();
                          model.DVTokenReq.Crn3 = $("#CRN3").val();
                          model.DVTokenReq.EmailAddress = $("#EmailAddress").val();
                          model.DVTokenReq.CardDetails = new Object();
                          model.DVTokenReq.CardDetails.CardHolderName = $("#CardHolderName").val();
                      
                          return model;
                      } 
                      </script>

                      Response

                      Response is a JSON object with the following properties.

                      Property Type Description
                      APIResponse object APIResponse object
                      ResultKey string This is the result key that you will have to submit to retrieve the update token result and present the receipt to the customer, "Lookup DVToken Result" (Refer Lookup DVToken Result).
                      RedirectionUrl string URL to use for redirection (if you receive an ApiResponseCode of 300, perform a full browser redirect with this value).
                      HTTP/1.1 200 OK
                      Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                      Pragma: no-cache
                      Content-Length: 144
                      Content-Type: application/json; charset=utf-8
                      Set-Cookie: ASP.NET_SessionId=qmytl98r23956x2998tyuins; path=/; secure; HttpOnly
                      Access-Control-Allow-Origin: *
                      Access-Control-Allow-Headers: Content-Type
                      Access-Control-Allow-Methods: GET, POST, OPTIONS
                      Access-Control-Max-Age: 1728000
                      Date: Fri, 12 Dec 2014 01:27:07 GMT
                      
                      {
                        "APIResponse" : {
                          "ResponseCode" : 0,
                          "ResponseText" : "Success"
                        },
                        "ResultKey" : "df998fea-f309-4e6e-9629-7149799dc028",
                        "RedirectionUrl" : "http://yourmerchantwebsite.com/tokenreceipt?ResponseCode=0&ResponseText=Success&ResultKey=df998fea-f309-4e6e-9629-7149799dc028"
                      }
                      Lookup DVToken Result

                      Retrieves result of a dvtoken added/updated via operation using Browser integration method. Should the resultKey value not be available, a dvtoken search (see 2 Party Search Tokens) should be performed to confirm that the dvtoken is in place and required details retrieved.

                      URL

                      GET /dvtokens/withauthkey/{resultKey}

                      URL Parameters

                      resultKey - result key returned in a response to add/update transaction operation

                      Request Headers

                      This is a merchant integration method. You will be required to supply following HTTP headers with your GET request

                      Authorization
                      base64 encoded API user credentials

                      Response Headers

                      Content-Type
                      application/json; charset=utf-8
                      GET https://www.bpoint.com.au/webapi/v2/dvtokens/withauthkey/03a038f5-ae28-44a4-a8d0-8c78279f5445 HTTP/1.1
                      Authorization: dXNlcm5hbWV8bWVyY2hhbnRudW1iZXI6cGFzc3dvcmQ=
                      Host: www.bpoint.com.au
                      include ("./API/BPOINT.php");
                      BPOINT\URLDirectory::setBaseURL("reserved","https://www.bpoint.com.au/webapi/v2");	
                      $credentials = new BPOINT\Credentials("APIUserName", "Passw0rd", "5353109000000000", BPOINT\Mode::Live);
                      
                      $reskey = new BPOINT\TokenResultKeyRetrieval();
                      $reskey->setCredentials($credentials);
                      $reskey->setResultKey("03a038f5-ae28-44a4-a8d0-8c78279f5445");
                      
                      $response = $reskey->submit();
                      from BPOINT.Requests import Credentials, DVTokenResultKeyRequest
                      
                      credentials = Credentials("APIUserName", "Passw0rd", "5353109000000000")
                      
                      request = DVTokenResultKeyRequest(credentials,"03a038f5-ae28-44a4-a8d0-8c78279f5445")
                      request.base_url = "https://www.bpoint.com.au/webapi/v2"
                      
                      response = request.submit()
                      require_relative "API/BPOINT"
                      
                      cred = BPOINT::Credentials.new("APIUserName", "Passw0rd", "5353109000000000")
                      
                      req = BPOINT::DVTokenAuthKeyResultRequest.new("03a038f5-ae28-44a4-a8d0-8c78279f5445")
                      
                      req.base_url = "https://www.bpoint.com.au/webapi/v2"
                      req.credentials = cred
                      
                      response = req.submit()
                      import com.BPOINT.api.*;
                      
                      Credentials credentials = new Credentials("APIUserName", "Passw0rd", "5353109000000000");
                      Sender s = new Sender();
                      
                      TokenResultKeyRequest req = new TokenResultKeyRequest(credentials, "03a038f5-ae28-44a4-a8d0-8c78279f5445");
                      DVTokenResp resp;
                      
                      req.setBaseUrl("https://www.bpoint.com.au/webapi/v2");
                      
                      resp = s.submit(req);
                      use BPOINT::API;
                      use Data::Inspect qw(p);
                      
                      $BPOINT::Sender::base_url = "https://www.bpoint.com.au/webapi/v2";
                      
                      my $cred = BPOINT::Credentials->new(
                      username => 'APIUserName', 
                      password => 'Passw0rd', 
                      merchant_number => "5353109000000000"
                      );
                      
                      my $req;
                      
                      $req = BPOINT::TokenResultKeyRequest->new(
                      resultkey => "03a038f5-ae28-44a4-a8d0-8c78279f5445", 
                      credentials => $cred);
                           
                      $result = $req->submit();
                      using BPOINT.API.Client.V2;
                      using API.Client.Common;
                      using API.Client.Common.Helpers;
                      
                      var tokenClient = ClientFactory.GetClientInstance<TokenClient>(
                      new JsonWebClientHelper(),
                      "https://www.bpoint.com.au/webapi/v2",
                      "APIUserName",
                      "5353109000000000",
                      "Passw0rd",
                      null);
                      
                      var response = tokenClient.
                      RetrieveAddUpdateTokenResult("03a038f5-ae28-44a4-a8d0-8c78279f5445");
                      var BPOINT = require("./BPOINT_API/index.js");
                      var api = new BPOINT();
                      
                      var req = new api.TokenResultKey(
                      "13cfa799-8278-4872-a705-7ed49d516c0b");
                      
                      req.baseUrl("https://www.bpoint.com.au/webapi/v2");
                      
                      var creds = req.credentials({
                      Username : "APIUserName", 
                      Password: "Passw0rd", 
                      MerchantNumber   : "5353109000000000"});
                      
                      var resp = req.submit(ResponseHandler, // Custom Callback Function
                      function(code, body) { console.log(code + " : " + body); }, // Error Callback Function
                      creds);
                      //Configure the ApiConfig.java file to input your API user and Merchant credentials
                      import main.java.com.BPOINT.android.api.ApiManager;
                      
                      String authKey = "13cfa799-8278-4872-a705-7ed49d516c0b";
                      
                      String response = lookupAddUpdateDataVaultWithTokenResult(authKey);
                      //Not Available

                      Response

                      Response is a JSON object with the following properties.

                      Property Type Description
                      APIResponse object APIResponse object
                      DVTokenResp object DVTokenResp object
                      HTTP/1.1 200 OK
                      Cache-Control: private,no-store,no-cache,must-revalidate,proxy-revalidate
                      Pragma: no-cache
                      Content-Length: 359
                      Content-Type: application/json; charset=utf-8
                      Access-Control-Allow-Origin: *
                      Access-Control-Allow-Headers: Content-Type
                      Access-Control-Allow-Methods: GET, POST, OPTIONS
                      Access-Control-Max-Age: 1728000
                      Date: Fri, 12 Dec 2014 01:57:56 GMT
                      
                      {
                      	"APIResponse" : {
                      		"ResponseCode" : 0,
                      		"ResponseText" : "Success"
                      	},
                      	"DVTokenResp" : {
                      		"BankAccountDetails" : null,
                      		"CardDetails" : {
                      			"CardHolderName" : "John Smith",
                      			"ExpiryDate" : "0521",
                      			"MaskedCardNumber" : "512345...346"
                      		},
                      		"CardType" : "MC",
                      		"EmailAddress" : "john.smith@email.com.au",
                      		"Crn1" : "test crn1",
                      		"Crn2" : "test crn2",
                      		"Crn3" : "test crn3",
                      		"DVToken" : "5999999789012346"
                      	}
                      }

                      WebHooks

                      WebHooks are an asynchronous notification mechanism. They are triggered by operations invoked using the Browser integration method. They notify merchant systems that a successful operation has taken place and provides the detailed result.

                      WebHooks are triggered only if the merchant has provided a WebHook URL in the request to obtain an AuthKey. The system will attempt the WebHook notification upon transaction completion, retrying at 1 hour intervals until successfully acknowledged by the merchant or the retry period has expired. The retry period is 24 hours.

                      To acknowledge a WebHook notification, the merchant's application must respond to the request with the HTTP Status Code 200. HTTP responses with Status Codes other than 200 will be interpreted as the WebHook call having failed, with retries being attempted until a response featuring a HTTP Status Code of 200 is received or the retry period expires.

                      Note: There is a possibility that multiple WebHook calls for the same action may be seen by the Merchant's server. For this reason, it is important that WebHook request contents are checked for uniqueness prior to updating data.

                      Note: China UnionPay transactions will always have a response code of "P". You will need to poll BPOINT using the 2 Party Search Transaction method to obtain the result. China UnionPay only returns a response for approved transactions. If the transaction is not completed and approved within 2 hours then a response code of "3" - "TIMED_OUT" will be returned.

                      Originating IP addresses

                      WebHook calls originate from specified IP addresses. Please refer to the Firewall Configuration section under References

                      Consuming a WebHook call

                      All WebHook calls are HTTP POST methods containing a JSON payload. The contents of the payload depend on the action that caused the WebHook call to be made, as per the following table:

                      Request Type:

                      Payload:

                      Process Transaction
                      APIResponse and TxnResp (see section 3 Party Redirect)
                      Add DVToken
                      APIResponse and DVTokenResp (see section AuthKey Add)
                      Update DVToken
                      APIResponse and DVTokenResp (see section AuthKey Update)

                      Example WebHook Request Triggered by Process Transaction operation

                      POST http://yourmerchantwebsite.com/txnWebHook HTTP/1.1
                      Content-Type: application/json; charset=utf-8
                      Host: merchant.com
                      Content-Length: 827
                      Expect: 100-continue
                      Proxy-Connection: Keep-Alive
                      {
                        "Action" : "payment",
                        "Amount" : 19900,
                        "AmountSurcharge" : 0,
                        "ThreeDSResponse" : null,
                        "AuthoriseId" : "380662",
                        "BankAccountDetails" : null,
                        "BankResponseCode" : "00",
                        "CVNResult" : {
                            "CVNResultCode" : "Unsupported"
                        },
                        "CardDetails" : {
                            "CardHolderName" : "John Smith",
                            "ExpiryDate" : "0521",
                            "MaskedCardNumber" : "512345...346"
                        },
                        "CardType" : "MC",
                        "Currency" : null,
                        "MerchantReference" : "test merchant ref",
                        "IsThreeDS" : false,
                        "IsCVNPresent" : true,
                        "MerchantNumber  " : "5353109000000000",
                        "OriginalTxnNumber" : null,
                        "ProcessedDateTime" : "2014-12-12T12:21:00.8300000",
                        "RRN" : "434612380662",
                        "ReceiptNumber" : "49316511178",
                        "Crn1" : "test crn1",
                        "Crn2" : "test crn2",
                        "Crn3" : "test crn3",
                        "ResponseCode" : "0",
                        "ResponseText" : "Approved",
                        "BillerCode" : null,
                        "SettlementDate" : "20141212",
                        "Source" : "api",
                        "StoreCard" : false,
                        "SubType" : "single",
                        "TxnNumber" : "1178",
                        "Type" : "internet"
                      }

                      Libraries

                      Web
                      C#
                      Version:
                      Java
                      Version:
                      Node.js
                      Version:
                      Perl
                      Version:
                      PHP
                      Version:
                      Python
                      Version:
                      Ruby
                      Version:
                      Mobile

                      Plugins

                      CommerceKickstart

                      Save several weeks of configuration required to create a commerce website on Drupal with Commerce Kickstart. Use the free built in features to encourage sales, simplify order processing, design a mobile responsive website and accelerate the process to market.

                      Supports

                      • Commerce Kickstart version 2.25
                      • Drupal version 7.37
                      CSCart

                      CS-Cart is the perfect all-inclusive e-commerce solution for any online business, from a small startup to large webshop. A beautiful storefront, powerful admin panel and unlimited scalability through additional store fronts are all you need for a quick start and stable growth.

                      Supports

                      • CS-Cart version 4.3.6
                      CubeCart

                      Join the thousands of merchants using CubeCart to sell digital and physical products globally. CubeCart is a powerful, free open-source shopping cart suitable for both inexperienced and experienced users. Features include built-in functionality plus an extension marketplace for plugins.

                      Supports

                      • CubeCart version 6.0.11
                      EventEspresso

                      Event Espresso is the ultimate event management plugin for WordPress. With Event Espresso you get it all featured on a new or existing WordPress blog; everything from custom registration forms and emails, seating limits, multiple price options and discount codes to printable tickets.

                      Supports

                      • Event Espresso version 3.x
                      • Event Espresso version 4.9.3
                      magento

                      Magento is a popular open-source platform for creating and managing an e-commerce website. Access a wide range of tools and plugins to improve customer experience, website management, marketing tools and design themes.

                      Supports

                      • Magento version 1.8.1
                      • Magento version 1.9.2.4
                      OpenCart

                      OpenCart is a robust, feature rich e-commerce solution that provides websites with flexibility and control. The platform supports templates, product management, sales tools and marketing tools. Features such as multi-languages and multi-store are ideal for large organisations.

                      Supports

                      • OpenCart version 1.5.6.4
                      • OpenCart version 2.2.0.0
                      osCommerce

                      osCommerce solution features both a catalogue frontend and an administration back office with access to over 7,000 plugins for design templates, order management, logistics and more. Create a self-hosted e-commerce website with osCommerce and securely offer products or services worldwide.

                      Supports

                      • osCommerce version 2.3.4
                      PrestaShop

                      PrestaShop attracts customers to your business with beautiful designs that fit your brand, choose from over 2,000 mobile responsive templates. Features include a powerful online store builder, a secure shopping cart, a mobile responsive back office, brilliant online marketing tools and more.

                      Supports

                      • PrestaShop version 1.6.1.5
                      Spiffy Stores

                      Spiffy Stores are an all-in-one e-commerce solution that has been simplified, making it easier for you to start selling online in no time. Get all the features you need without getting overloaded from complicated tools. It even feeds your product listings to shopping comparison sites.

                      BPOINT is pre-integrated into the Spiffy Stores. Downloads and installations are not required.

                      UberCart

                      Ubercart is an exciting open source e-commerce shopping cart that fully integrates with Drupal, the leading open source content management system. Build a community around a product, sell access to premium content, offer paid file downloads, and more.

                      Supports

                      • UberCart version 2.3.4
                      • Drupal version 7.x
                      VirtueMart

                      VirtueMart is a complete open-source solution that supports e-commerce sites using Joomla! CMS. It includes thousands of features and plugins that are easy to use for both beginners and experts. Manage your inventory, logistics and marketing using the VirtueMart platform.

                      Supports

                      • VirtueMart version 2.6.18
                      • Joomla version 2.5.28
                      • VirtueMart version 3.0.14
                      • Joomla version 2.5.28
                      Woo Commerce

                      WooCommerce is a fast growing and leading open-source plugin for e-commerce websites created with WordPress. Choose from a range of clean checkout designs, make modifications in real-time, and enjoy a flexible experience without losing usability.

                      Supports

                      • WooCommerce version 2.5.5
                      • WordPress version 4.2.2
                      WP eCommerce

                      WP eCommerce supports all the tools required to sell products through an enticing online WordPress store. Create powerful products, review intelligent reporting, automate digital marketing using multiple channels, and use the robust coupon management system.

                      Supports

                      • WP eCommerce version 3.11.3
                      • WordPress version 4.2.2
                      X-Cart

                      X-Cart is easy to use, maintain and modify. Join thousands of business around the world trusting X-Cart as their e-commerce platform. Choose from one of the incredible design templates, or customise the Administration area and shopfront with access to hundreds of add-on extensions.

                      Supports

                      • X-Cart version 5.2.13
                      Zen-Cart

                      Zen Cart is a user-friendly open source shopping cart program that puts your business and your customers first. Install the Zen Cart software with basic computer skills and access the freely customisable back office, many supported hosting providers and uses your domain name.

                      Supports

                      • Zen Cart version 1.5.5a

                      References

                      API Response Codes

                      A list of the api response codes.

                      Response Code Description
                      0 Success
                      1 Invalid credentials
                      2 Invalid permissions
                      3 User not found
                      100 Invalid field: original amount
                      101 Invalid field: action
                      102 Invalid field: type
                      103 Invalid field: subtype
                      104 Invalid field: merchant number
                      105 Invalid field: biller code
                      106 Invalid field: Crn1
                      107 Invalid field: Crn2
                      108 Invalid field: Crn3
                      109 Invalid field: currency
                      110 Invalid field: amount
                      111 Invalid field: merchant reference
                      112 Invalid field: card number
                      113 Invalid field: cardholder name
                      114 Invalid field: expiry date
                      115 Invalid field: CVN
                      116 Invalid field: web hook URL
                      117 Invalid field: redirection URL
                      118 Invalid field: transaction number
                      119 Invalid field: original transaction number
                      120 Invalid field: receipt number
                      121 Invalid field: settlement date
                      122 Invalid field: masked card number
                      123 Invalid field: DVToken
                      124 Invalid field: bank account number
                      125 Invalid field: BSB number
                      126 Invalid field: bank account name
                      127 Invalid field: email address
                      128 Invalid field: store card
                      131 Invalid field: surcharge amount
                      132 Invalid field: country code
                      133 Invalid field: phone number
                      134 Invalid field: sms message
                      135 Invalid field: wallet amount should be greater than 0
                      136 Invalid field: wallet crn1, should not be Null or empty
                      137 Invalid field: amount should be greater than 0 if ShowSubmitButton setting is set to true
                      138 Invalid field: crn1 should not be null or empty if ShowSubmitButton setting is set to true
                      139 Hide BillerCode flag set to true but BillerCode not provided
                      140 Shopify: missing required field
                      141 Shopify: invaild signature
                      142 Shopify: key not found
                      143 Empty payment page base URL
                      144 Card number not allowed for token payments
                      145 Invalid field: return URL
                      146 Invalid field: agent
                      147 Invalid field: agent phone number
                      201 Transaction not found
                      202 DVToken not found
                      203 Transaction type cannot be tokenised
                      204 Transactions cannot be tokenised because cardholder has not given permission
                      205 Biller code not found
                      206 Session not found
                      207 Invalid session
                      208 Transaction must be approved to be tokenised
                      209 Search returned no results
                      210 Merchant details not found
                      211 Merchant account settings not found
                      212 Country code not allowed
                      213 Could not issue secure code
                      214 Could not verify secure code
                      215 Invalid secure code
                      216 Wallet not found
                      217 Amex wallet error
                      218 Amex wallet card data not found
                      219 Only credit card tokens accepted
                      220 DataVault operation not supported
                      221 Action not applied
                      300 Follow redirection (perform a full browser redirect with the value given in RedirectionUrl property, if you receive this response code)
                      900 One or more sub-systems are currently unavailable
                      999 Fatal error

                      TxnResp Responses

                      A list of the transaction response codes.

                      Response Code Bank Response Code Response Text
                      0 00 Approved
                      0 08 Honour with ID
                      0 16 Approved, Update Track 3
                      1 09 Request in progress
                      1 10 Approved for partial amount
                      1 11 Approved VIP
                      1 12 Invalid transaction
                      1 13 Invalid amount
                      1 17 Customer cancellation
                      1 18 Customer dispute
                      1 20 Invalid response
                      1 21 No action taken
                      1 22 Suspected malfunction
                      1 23 Unacceptable transaction fee
                      1 24 File update not supported by receiver
                      1 26 Duplicate file update record, old record replaced
                      1 27 File update field edit error
                      1 28 File update file locked out
                      1 29 File update not successful, contact acquirer
                      1 30 Format error
                      1 32 Completed partially
                      1 35 Card acceptor contact acquirer
                      1 37 Card acceptor call acquirer security
                      1 38 Allowable PIN tries exceeded
                      1 40 Request function not supported
                      1 42 No universal account
                      1 44 No investment account
                      1 45 Reserved for ISO use
                      1 46 Reserved for ISO use
                      1 47 Reserved for ISO use
                      1 48 Reserved for ISO use
                      1 49 Reserved for ISO use
                      1 50 Reserved for ISO use
                      1 52 No cheque account
                      1 53 No savings account
                      1 55 Incorrect PIN
                      1 56 No card record
                      1 57 Transaction not permitted to cardholder
                      1 58 Transaction not permitted to acquirer
                      1 60 Card acceptor contact acquirer
                      1 62 Restricted card
                      1 63 Security violation
                      1 64 Original amount incorrect
                      1 66 Card acceptor call acquirer's security department
                      1 67 Hard capture (requires that the card be picked up at ATM)
                      1 69 Reserved for ISO use
                      1 70 Reserved for ISO use
                      1 71 Reserved for ISO use
                      1 72 Reserved for ISO use
                      1 73 Reserved for ISO use
                      1 74 Reserved for ISO use
                      1 75 Allowable number of PIN tries exceeded
                      1 76 Reserved for private use
                      1 77 Reserved for private use
                      1 78 Reserved for private use
                      1 79 Reserved for private use
                      1 80 Reserved for private use
                      1 81 Reserved for private use
                      1 82 Reserved for private use
                      1 83 Reserved for private use
                      1 84 Reserved for private use
                      1 85 Reserved for private use
                      1 86 Reserved for private use
                      1 87 Reserved for private use
                      1 88 Reserved for private use
                      1 89 Reserved for private use
                      1 93 Transaction cannot be completed, violation of law
                      1 94 Duplicate transmission
                      1 95 Reconcile error
                      1 96 System malfunction
                      1 97 Advises that reconciliation totals have been reset
                      2 01 Refer to card issuer
                      2 02 Refer to card issuer's special conditions
                      2 03 Invalid merchant
                      2 04 Pick up card
                      2 05 Do not honor
                      2 06 Error
                      2 07 Pick up card, special condition
                      2 14 Invalid card number
                      2 15 No such Issuer
                      2 19 Re-enter transaction
                      2 25 Unable to locate record on file
                      2 31 Bank not supported by switch
                      2 34 Suspected fraud
                      2 36 Restricted card
                      2 39 No credit account
                      2 41 Lost card
                      2 43 Stolen card, pick up
                      2 59 Suspected fraud
                      2 61 Exceeds withdrawal amount limits
                      2 65 Exceeds withdrawal frequency limit
                      2 90 Cut-off is in process (switch ending a days business and starting the next. Transaction can be sent again in a few minutes.)
                      2 91 Issuer or switch inoperative
                      2 92 Financial institution or intermediate network facility cannot be found for routing
                      2 98 MAC error
                      2 99 Reserved for National Use
                      3 68 Response received too late
                      4 33 Expired card
                      4 54 Expired card
                      5 51 Not sufficient funds
                      ? Response Unknown
                      6 Transaction Declined - Error Communicating with Bank
                      7 Payment Server Processing Error - Typically caused by invalid input data such as an invalid card number. Processing errors can also occur
                      8 Transaction Declined - Transaction Type Not Supported
                      9 Bank Declined Transaction (Do not contact Bank)
                      A Transaction Aborted
                      C Transaction Cancelled
                      D Deferred Transaction
                      E Issuer Returned a Referral Response
                      F 3D Secure Authentication Failed
                      I Card Security Code Failed
                      L Shopping Transaction Locked (This indicates that there is another transaction taking place using the same shopping transaction number)
                      N Cardholder is not enrolled in 3D Secure (Authentication Only)
                      P Transaction is Pending
                      R Retry Limits Exceeded, Transaction Not Processed
                      S Duplicate OrderInfo used. (This is only relevant for Payment Servers that enforce the uniqueness of this field)
                      U Card Security Code Failed
                      PT_E1 Database error.
                      PT_E2 Unable to encrypt card number.
                      PT_E3 Unable to decrypt card number.
                      PT_E4 Server shutdown in progress.
                      PT_E5 Server busy, transaction timed out in queue and was not sent to the bank.
                      PT_E6 Processing aborted, payment server is shutting down.
                      PT_V1 Invalid transaction type.
                      PT_V2 Invalid financial type.
                      PT_V3 Invalid amount.
                      PT_V4 Invalid card number.
                      PT_V5 Invalid expiry date.
                      PT_V6 Invalid CVN.
                      PT_V7 Financial transaction type not supported by gateway.
                      PT_V8 Reversal not supported.
                      PT_V9 Merchant/biller details not found.
                      PT_V10 Unable to retrieve merchant/biller details.
                      PT_V11 Cardholder not authenticated (VbV, SecureCode).
                      PT_V12 Error authenticating cardholder (VbV, SecureCode).
                      PT_V13 Invalid BSB number.
                      PT_V14 Invalid account number.
                      PT_V15 Invalid account name.
                      PT_V16 Payment details not provided.
                      PT_V17 No valid DDA found.
                      PT_V18 Payment failed anti fraud rule validation.
                      PT_V19 Refund not allowed, daily refund limit of X reached.
                      PT_V20 Refund not allowed, daily refund amount limit of $x.xx exceeded.
                      PT_T1 DVToken payment not allowed for Internet, IVR and call centre transaction types.
                      PT_T2 Card payment details not found for this dvtoken.
                      PT_T3 Unable to decrypt card number.
                      PT_T4 Unable to retrieve card payment details due to system error.
                      PT_T5 DVToken payment not supported.
                      PT_T6 DVToken not yet valid.
                      PT_T7 DVToken expired.
                      PT_R1 Original transaction not found.
                      PT_R2 Original transaction was not approved.
                      PT_R3 Original transaction is locked.
                      PT_R4 Transaction already fully refunded.
                      PT_R5 Only $x.xx available for refund.
                      PT_R6 Preauth transaction already completed.
                      PT_R7 Unable to verify if reversal can be processed.
                      PT_R8 Transaction already reversed.
                      PT_R9 Transaction partially refunded.
                      PT_R10 (Only for reversals of timed out transactions) Original transaction not found.
                      PT_R11 (Only for reversals of timed out transactions) Multiple instances of original transaction found.
                      PT_R12 (Only for reversals of timed out transactions) Original transaction was not successful.
                      PT_R13 (Only for reversals of timed out transactions) Original transaction number not found.
                      PT_R14 (Only for reversals of timed out transactions) Error looking up result of original transaction.
                      PT_R15 Invalid amount. Reversal amount must be the same as the amount of the original transaction.
                      PT_R16 DE payment already rejected.
                      PT_G1 Gateway configuration error.
                      PT_G2 Unable to build gateway request.
                      PT_G3 Unable to connect to gateway.
                      PT_G4 Unable to send transaction request data.
                      PT_G5 Unable to get response data.
                      PT_G6 Unable to process transaction.
                      PT_G7 Unable to process, server busy.
                      PT_G8 Unable to parse response data.
                      PT_G9 PayPal gateway error.
                      PT_G10 Payment response details not present in PayPal response.
                      PT_G11 PayPal communication error.
                      PT_G12 Gateway error.
                      PT_G13 Message response timeout.

                      ThreeDS Responses

                      Eci Responses
                      Code Description
                      05 Cardholder authenticated
                      06 Cardholder not enrolled
                      Note: The values may change depending on the locale or Issuer.
                      Enrolled Responses
                      Code Description
                      Y Yes, cardholder is enrolled
                      N No, cardholder is not enrolled
                      U Unavailable to check
                      Status Responses
                      Code Description
                      Y Yes, cardholder authenticated
                      N No, cardholder was not authenticated
                      A Attempted Authentication
                      U Unavailable to check
                      Verify Security Level Responses
                      Code Description
                      0 MasterCard - merchant is not participating in ThreeDS
                      1 MasterCard - Cardholder is not participating in ThreeDS
                      2 MasterCard - Cardholder authenticated
                      05

                      Visa - Fully authenticated

                      Amex - Fully authenticated

                      06

                      Visa - Not authenticated (cardholder is not participating in ThreeDS)

                      Amex - Not authenticated (cardholder is enrolled, but authentication failed)

                      07

                      Visa - Note authenticated. Usually related to a system issue.

                      Amex - Not authenticated.

                      Verify Status Responses
                      Code Description
                      Y Cardholder successfully authenticated
                      M Cardholder is not enrolled, but the Issuer attempted processing
                      E Cardholder is not enrolled
                      F Request format error
                      N Verification failed
                      S The signature on the response received from the Issuer could not be validated
                      P Error receiving input from Issuer
                      I Internal error
                      U Verification was unable to be completed. This can be caused by network or system failures
                      T The cardholder session timed out and the browser did not return from the Issuer's ThreeDS site
                      A Merchant authentication failed
                      D Communication error
                      C Card type not supported
                      Verify Type Responses
                      Code Description
                      3DS ThreeDS
                      SPA Secure Payment Authentication from MasterCard

                      Firewall Configuration

                      For connections initiated by our servers (WebHook callbacks), all connections are initiated from the following IP addresses:

                      • 203.195.127.4 (Primary)
                      • 202.166.187.3 (Secondary)

                      For WebHook calls, only requests to HTTP and HTTPS services (on ports 80 and 443 respectively) will be attempted.

                      Currency List

                      A list of the ISO 4217 currencies

                      ISO 4217 code Currency Name
                      ALL Albanian Lek
                      DZD Algerian Dinar
                      ARS Argentine Peso
                      AUD Australian Dollar
                      BSD Bahamian Dollar
                      BHD Bahraini Dinar
                      BDT Bangladeshi Taka
                      AMD Armenian Dram
                      BBD Barbados Dollar
                      BMD Bermudian Dollar
                      BTN Bhutanese Ngultrum
                      BOB Boliviano
                      BWP Botswana Pula
                      BZD Belize Dollar
                      SBD Solomon Islands Dollar
                      BND Brunei Dollar
                      MMK Myanmar Kyat
                      BIF Burundi Franc
                      KHR Cambodian Riel
                      CAD Canadian Dollar
                      CVE Cape Verde Escudo
                      KYD Cayman Islands Dollar
                      LKR Sri Lanka Rupee
                      CLP Chilean Peso
                      CNY Yuan Renminbi
                      KMF Comoros Franc
                      CRC Costa Rican Colon
                      HRK Croatian Kuna
                      CUP Cuban Peso
                      CZK Czech Koruna
                      DKK Danish Krone
                      DOP Dominican Peso
                      ETB Ethiopian Birr
                      ERN Eritrean Nakfa
                      FKP Falkland Islands Pound
                      FJD Fiji Dollar
                      DJF Djibouti Franc
                      GMD Gambian Dalasi
                      GIP Gibraltar Pound
                      GTQ Guatemalan Quetzal
                      GNF Guinea Franc
                      GYD Guyana Dollar
                      HTG Haitian Gourde
                      HNL Honduran Lempira
                      HKD Hong Kong Dollar
                      HUF Hungarian Forint
                      ISK Iceland Krona
                      INR Indian Rupee
                      IDR Indonesian Rupiah
                      IRR Iranian Rial
                      IQD Iraqi Dinar
                      ILS Israeli New Shekel
                      JMD Jamaican Dollar
                      JPY Japanese Yen
                      KZT Kazakhstan Tenge
                      JOD Jordanian Dinar
                      KES Kenyan Shilling
                      KPW North Korean Won
                      KRW Korean Won
                      KWD Kuwaiti Dinar
                      KGS Kyrgyzstani Som
                      LAK Lao Kip
                      LBP Lebanese Pound
                      LSL Lesotho Loti
                      LRD Liberian Dollar
                      LYD Libyan Dinar
                      MOP Macau Pataca
                      MWK Malawi Kwacha
                      MYR Malaysian Ringgit
                      MVR Maldive Rufiyaa
                      MRO Mauritanian Ouguiya
                      MUR Mauritius Rupee
                      MXN Mexican Nuevo Peso
                      MNT Mongolian Tugrik
                      MDL Moldovan Leu
                      MAD Moroccan Dirham
                      OMR Omani Rial
                      NAD Namibian Dollar
                      NPR Nepalese Rupee
                      ANG Netherlands Antillean guilder
                      AWG Aruban Guilder
                      VUV Vanuatu Vatu
                      NZD New Zealand Dollar
                      NIO Nicaraguan Cordoba Oro
                      NGN Nigerian Naira
                      NOK Norwegian Krone
                      PKR Pakistan Rupee
                      PAB Panamanian Balboa
                      PGK Papua New Guinea Kina
                      PYG Paraguay Guarani
                      PEN Peruvian Nuevo Sol
                      PHP Philippine Peso
                      QAR Qatari Rial
                      RUB Russian Ruble
                      RWF Rwanda Franc
                      SHP St. Helena Pound
                      STD Dobra
                      SAR Saudi Riyal
                      SCR Seychelles Rupee
                      SLL Sierra Leone Leone
                      SGD Singapore Dollar
                      VND Vietnamese Dong
                      SOS Somali Shilling
                      ZAR South African Rand
                      SSP South Sudan Pound
                      SZL Swaziland Lilangeni
                      SEK Swedish Krona
                      CHF Swiss Franc
                      SYP Syrian Pound
                      THB Thai Baht
                      TOP Tongan Paanga
                      TTD Trinidad and Tobago Dollar
                      AED Arab Emirates Dirham
                      TND Tunisian Dollar
                      UGX Uganda Shilling
                      MKD Denar
                      EGP Egyptian Pound
                      GBP Pound sterling
                      TZS Tanzanian Shilling
                      USD US Dollar
                      UYU Uruguayan Peso
                      UZS Uzbekistan Sum
                      WST Samoan Tala
                      YER Yemeni Rial
                      TWD New Taiwan dollar
                      CUC Cuban convertible peso
                      ZWL Zimbabwean Dollar
                      TMT Turkmenistani manat
                      GHS Ghanaian cedi
                      VEF Venezuelan bolívar
                      SDG Sudanese pound
                      RSD Serbian dinar
                      MZN Mozambican metical
                      AZN Azerbaijani manat
                      RON Romanian new leu
                      TRY Turkish lira
                      XAF CFA franc BEAC
                      XCD East Caribbean dollar
                      XOF Communauté Financière Africaine (BCEAO) Franc
                      XPF Comptoirs Franç ais du Pacifique (CFP) Franc
                      XDR International Monetary Fund (IMF) Special Drawing Rights
                      ZMW Zambia Kwacha
                      SRD Suriname Dollar
                      MGA Malagasy Ariary
                      AFN Afghan Afghani
                      TJS Tajikistani Somoni
                      AOA Angolan Kwanza
                      BYR Belarusian Ruble
                      BGN Bulgarian lev
                      CDF Congolese Franc
                      BAM Bosnia and Herzegovina Convertible Marka
                      EUR Euro
                      UAH Ukrainian Hryvnia
                      GEL Georgian Lari
                      PLN Poland Zloty
                      BRL Brazil Real

                      Test Mode Transactions

                      Whilst integrating or otherwise testing, transactions can be performed in test mode for all payment types. Test transactions are visible and searchable in the backoffice but do not impact actual settlement, and can be differentiated by inspecting the IsTestTxn flag in the TxnResp object returned by the payment call (2-party), ResultKey or WebHook call (3-party).

                      Specific responses can be obtained for test mode transactions to test the various scenarios likely to be encountered whilst processing payments.

                      Test cards
                      Card Type: Card Number:
                      MasterCard 5123456789012346
                      MasterCard 2 Series 2720010040360012
                      Visa 4987654321098769
                      American Express 345678901234564
                      Diners 30123456789019
                      JCB 3530111333300000
                      Simulating bank response codes

                      While performing test mode transactions, specific parameters can be provided to obtain specific simulated bank response codes (see section TxnResp Responses).

                      Response codes between 00 and 99 can be obtained in one of two ways:

                      • A normally formatted, future-dated expiry date can be provided, in which case the response code will be the same as the last two digits of the provided transaction amount. For example, with an expiry date of 1121 (11/21) and an amount of 12011 ($120.11), a bank response code of 11 will be returned.

                        Specifying a CVN of 987 will result in the bank response code of 05 being returned for all amounts and standard expiry dates.

                      • A specially selected expiry date of the form 99XX (99/XX) can be provided, in which case the XX value will form the response code. For example, submitting a transaction with an expiry date of 9945 will result in a bank response code of 45 being returned
                      Simulating CVN Responses

                      The following CVN values can be submitted to obtain the listed simulated CVN responses responses:

                      CVN: CVN Response: Bank Response Code:
                      987 N 05, regardless of amount or expiry date
                      876 P Determined by amount or expiry date (see section Simulating bank response codes)
                      765 U Determined by amount or expiry date (see section Simulating bank response codes)
                      All others M Determined by amount or expiry date (see section Simulating bank response codes)

                      CVN responses:

                        Simulating timeouts

                        To simulate a timeout, an amount of 11199 ($111.99) can be specified. This will result in a 50 second delay before a PT_G5 response code is returned.