splitit/sdk

Splitit Web API SDK for PHP

1.8.0 2022-08-30 07:46 UTC

README

This is Splitit Web API SDK source code for PHP 5.5+ applications. For other languages, please visit Splitit.SDKs.

  • API version: 1.0.0
  • Package version: 1.6.10

Requirements

PHP 5.5 and later

Installation & Usage

Composer

To install the bindings via Composer, add the following to composer.json:

  • PHP 5.5+, PHP 7.x, PHP 8.x,
{
  "require": {
    "splitit/sdk": "1.8.*"
  }
}

Then run composer install.

Getting Started

Replace YOUR_SANDBOX_API_KEY, YOUR_PRODUCTION_API_KEY, YOUR_USERNAME and YOUR_PASSWORD placeholders with your corresponding credentials. Please follow the installation procedure and then run the following:

<?php
require_once(__DIR__ . '/vendor/autoload.php');

use SplititSdkClient\Configuration;
use SplititSdkClient\ObjectSerializer;
use SplititSdkClient\Api\LoginApi;
use SplititSdkClient\Api\InstallmentPlanApi;
use SplititSdkClient\Model\LoginRequest;
use SplititSdkClient\Model\PlanData;
use SplititSdkClient\Model\ConsumerData;
use SplititSdkClient\Model\RequestHeader;
use SplititSdkClient\Model\AddressData;
use SplititSdkClient\Model\PlanApprovalEvidence;
use SplititSdkClient\Model\CardData;
use SplititSdkClient\Model\MoneyWithCurrencyCode;
use SplititSdkClient\Model\InitiateInstallmentPlanRequest;
use SplititSdkClient\Model\CreateInstallmentPlanRequest;

Configuration::sandbox()->setApiKey('_YOUR_SANDBOX_API_KEY_');
Configuration::production()->setApiKey('_YOUR_PRODUCTION_API_KEY_');

# Using the sandbox environment. Use Configuration::production() for production or omit the parameter.
$loginApi = new LoginApi(Configuration::sandbox());

try{
    $request = new LoginRequest();
    
    # Replace with your login information
    $request->setUserName('_YOUR_USERNAME_');
    $request->setPassword('_YOUR_PASSWORD_');
    $loginResponse = $loginApi->loginPost($request);
    
    $session_id = $loginResponse->getSessionId();
    
    # Use Configuration::production() for production API
    $installmentPlanApi = new InstallmentPlanApi(
        Configuration::sandbox(),
        $session_id
    );

    //$installmentPlanApi->setCulture('de-DE'); -> optionally set culture to be used in subsequent calls to this API.
    
    $initiateRequest = new InitiateInstallmentPlanRequest();
    
    $plan_data = new PlanData();
    $plan_data->setNumberOfInstallments(3);
    $plan_data->setAmount(new MoneyWithCurrencyCode(array("value" => 1000, "currency_code" => "USD")));
    
    $billing_address = new AddressData(array(
        "address_line" => "260 Madison avenue",
        "address_line2" => "Apt. 1",
        "city" => "New York",
        "country" => "USA",
        "zip" => "10016"
    ));
    
    $consumer_data = new ConsumerData(array(
        "full_name" => "John Smith",
        "email" => "j.smith@fake-email.com",
        "phone_number" => "4343-555-45",
        "culture_name" => "en-us",
        "is_locked" => false,
        "is_data_restricted" => false,
    ));
    
    $initiateRequest->setPlanData($plan_data);
    $initiateRequest->setBillingAddress($billing_address);
    $initiateRequest->setConsumerData($consumer_data);
    
    $initResponse = $installmentPlanApi->installmentPlanInitiate($initiateRequest);

    echo "Calling /Initiate...\r\n";
    echo $initResponse->getResponseHeader();

    $createRequest = new CreateInstallmentPlanRequest();
    $createRequest->setCreditCardDetails(new CardData(array(
        'card_number' => "411111111111111",
        'card_cvv' => "123",
        'card_holder_full_name' => "John Smith",
        'card_exp_month' => "12",
        'card_exp_year' => "2022"
    )));
    $createRequest->setInstallmentPlanNumber($initResponse->getInstallmentPlan()->getInstallmentPlanNumber());
    $createRequest->setPlanApprovalEvidence(new PlanApprovalEvidence(array(
        "are_terms_and_conditions_approved" => true
    )));

    $createResponse = $installmentPlanApi->installmentPlanCreate($createRequest);

    echo "Calling /Create...\r\n";
    echo $createResponse->getResponseHeader();

} catch(Exception $e){
    echo "Exception has ocurred:\r\n";
    echo $e;
    echo "\r\n**********************\r\n";
}
?>

Flex Fields

Common usage for Splitit PHP SDK is in making necessary server-side requests as part of FlexFields product integration. The code below is an example of how SDK wrappers can be used to simplify acquiring public token and verifying payment. For more information, please visit FlexFields documentation.

Server-side code consists of two parts: acquiring public token which needs to be passed to FlexFields JS library and verifying payment before order is finalized and shipped.

Getting public token

<?php

use SplititSdkClient\Configuration;
use SplititSdkClient\ObjectSerializer;
use SplititSdkClient\FlexFields;

Configuration::sandbox()->setApiKey('_YOUR_SANDBOX_API_KEY_');
Configuration::production()->setApiKey('_YOUR_PRODUCTION_API_KEY_');

try{
    $ff = FlexFields::authenticate(Configuration::sandbox(), 'YOUR_USERNAME', 'YOUR_PASSWORD');
    $publicToken = $ff->getPublicToken(1000, "USD");

    echo $publicToken;
} catch(Exception $e){
    ...
}
?>

Payment verification

<?php

use SplititSdkClient\Configuration;
use SplititSdkClient\ObjectSerializer;
use SplititSdkClient\FlexFields;

Configuration::sandbox()->setApiKey('_YOUR_SANDBOX_API_KEY_');
Configuration::production()->setApiKey('_YOUR_PRODUCTION_API_KEY_');

try{
    $ff = FlexFields::authenticate(Configuration::sandbox(), 'YOUR_USERNAME', 'YOUR_PASSWORD');
    $verifyPaymentResponse = $ff->verifyPayment($installmentPlanNumber, 1000);

    if ($verifyPaymentResponse) 
    {
        # all good
    }
    else
    {
        # error
    }
} catch(Exception $e){
    ...
}
?>

For detailed information on request and response procedures, please visit Splitit Web API documentation

Documentation for API Endpoints

All URIs are relative to https://webapi.production.splitit.com

Class Method HTTP request Description
InfrastructureApi infrastructureGetResourcesGET GET /api/Infrastructure/GetResources
InfrastructureApi infrastructureGetResourcesPOST POST /api/Infrastructure/GetResources
InstallmentPlanApi installmentPlanApprove POST /api/InstallmentPlan/Approve
InstallmentPlanApi installmentPlanCancel POST /api/InstallmentPlan/Cancel
InstallmentPlanApi installmentPlanChargeBack POST /api/InstallmentPlan/ChargeBack
InstallmentPlanApi installmentPlanCreate POST /api/InstallmentPlan/Create
InstallmentPlanApi installmentPlanGet POST /api/InstallmentPlan/Get
InstallmentPlanApi installmentPlanGet3DSecureParameters POST /api/InstallmentPlan/Get3DSecureParameters
InstallmentPlanApi installmentPlanGetExtended POST /api/InstallmentPlan/GetExtended
InstallmentPlanApi installmentPlanGetFraudStatusDisplay POST /api/InstallmentPlan/GetFraudStatusDisplay
InstallmentPlanApi installmentPlanGetInitiatedInstallmentPlanRequest POST /api/InstallmentPlan/GetInitiatedInstallmentPlanRequest
InstallmentPlanApi installmentPlanGetInitiatedUpdatePaymentData GET /api/InstallmentPlan/GetInitiatedUpdatePaymentData
InstallmentPlanApi installmentPlanGetLearnMoreDetails POST /api/InstallmentPlan/GetLearnMoreDetails
InstallmentPlanApi installmentPlanGetPGTL POST /api/InstallmentPlan/GetPGTL
InstallmentPlanApi installmentPlanGetSchedules POST /api/InstallmentPlan/GetSchedules
InstallmentPlanApi installmentPlanInitiate POST /api/InstallmentPlan/Initiate
InstallmentPlanApi installmentPlanRefund POST /api/InstallmentPlan/Refund
InstallmentPlanApi installmentPlanRequestPayment POST /api/InstallmentPlan/RequestPayment
InstallmentPlanApi installmentPlanStartInstallments POST /api/InstallmentPlan/StartInstallments
InstallmentPlanApi installmentPlanTermsAndConditions POST /api/InstallmentPlan/TermsAndConditions
InstallmentPlanApi installmentPlanTestCard POST /api/InstallmentPlan/TestCard
InstallmentPlanApi installmentPlanUpdate POST /api/InstallmentPlan/Update
InstallmentPlanApi installmentPlanVerifyPayment POST /api/InstallmentPlan/Get/VerifyPayment
LoginApi loginPost POST /api/Login

Documentation For Models

Author

Splitit