1. Go to this page and download the library: Download dhavalsagepaypi/sagepay-pi library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
dhavalsagepaypi / sagepay-pi example snippets
use Lumnn\SagePayPi\SagePayPi;
$sagepay = new SagePayPi(
'vendor',
'integration_key',
'integration_password',
SagePayPi::TEST_ENDPOINT // or SagePayPi::LIVE_ENDPOINT, or ommit for live one
);
use Lumnn\SagePayPi\Card\Cards;
use Lumnn\SagePayPi\Transaction\Transactions;
$cards = new Cards($sagepay);
$transactions = new Transactions($sagepay);
use Lumnn\SagePayPi\Card\CardDetails;
use Lumnn\SagePayPi\Card\Cards;
$cards = new Cards($sagepay);
$card = new CardDetails();
$card
->setCardNumber("1234123412341234")
->setCardholderName('Test Name')
->setExpiryDate('1223') // December 2023
->setSecurityCode('123');
$cardIdentifier = $cards->createIdentifier($card);
use Lumnn\SagePayPi\Transaction\PaymentRequest;
use Lumnn\SagePayPi\Transaction\Transactions;
// $sagepay - from previous example
// $cardIdentifier - from previous examples
// $address - just intantiated and populated Address class. It's a simple getter setter class
$transactions = new Transactions($sagepay);
$paymentRequest = new PaymentRequest();
$paymentRequest
->setAmount(1000)
->setCurrency('GBP')
->setDescription('One testing service of SagePay Pi PHP Library')
->setBillingDetails($address)
->setCardIdentifier($cardIdentifier)
->setCustomerEmail('[email protected]')
->setEntryMethod(PaymentRequestInterface::ENTRY_TELEPHONE_ORDER)
->setTransactionType(PaymentRequestInterface::TYPE_PAYMENT)
->setVendorTxCode('php_lib_test'.time());
$payment = $this->transactions->createPayment($paymentRequest);
use Lumnn\SagePayPi\Transaction\PaymentRequest;
use Lumnn\SagePayPi\Transaction\Transactions;
use Lumnn\SagePayPi\Transaction\Request\StrongCustomerAuthentication;
use Lumnn\SagePayPi\Transaction\Request\StrongCustomerAuthenticationInterface;
use Lumnn\SagePayPi\Transaction\Response\ThreeDSv2AuthResponse;
// $sagepay - from previous example
// $cardIdentifier - from previous examples
// $address - just intantiated and populated Address class. It's a simple getter setter class
$transactions = new Transactions($sagepay);
$paymentRequest = new PaymentRequest();
$paymentRequest
->setAmount(1000)
->setCurrency('GBP')
->setDescription('One testing service of SagePay Pi PHP Library')
->setBillingDetails($address)
->setCardIdentifier($cardIdentifier)
->setCustomerEmail('[email protected]')
->setEntryMethod(PaymentRequestInterface::ENTRY_ECOMMERCE)
->setApply3DSecure(PaymentRequestInterface::SECURITY_CHECK_FORCE)
->setVendorTxCode('php_lib_test_3dv2'.time());
$strongCustomerAuth = new StrongCustomerAuthentication();
$notificationURL = 'http://127.0.0.1:8080';
$strongCustomerAuth
->setNotificationURL($notificationURL)
->setBrowserIP('127.0.0.1')
->setBrowserAcceptHeader('*/*')
->setBrowserJavascriptEnabled(true)
->setBrowserJavaEnabled(false)
->setBrowserLanguage('en-US')
->setBrowserColorDepth('32')
->setBrowserScreenHeight('1080')
->setBrowserScreenWidth('1920')
->setBrowserTZ('0')
->setBrowserUserAgent('Mozilla/5.0 (Linux x86_64; rv:93.0) Gecko/20100101 Firefox/93.0')
->setChallengeWindowSize('Small')
->setTransType(StrongCustomerAuthenticationInterface::TRANSACTION_TYPE_GOODS_AND_SERVICE_PURCHASE);
$paymentRequest->setStrongCustomerAuthentication($strongCustomerAuth);
$threeDSv2AuthResponse = $this->transactions->createPayment($paymentRequest);
// for simplicity in this example. However it's not guaranteed it's going to be 3Ds v2 challenge
if (!$payment instanceof ThreeDSv2AuthResponse) {
throw new \Exception("Response invalid in this example");
}
$acsUrl = $threeDSv2AuthResponse->getAcsUrl();
$acsParams = [
'creq' => $threeDSv2AuthResponse->getCReq(),
];
// at this point you should redirect customer to acsUrl with creq param
// it will then come back with cRes value. The cRes value will be POST-ed to
// your $notificationURL
$cRes = $_POST['cRes'];
$completedPayment = $transactions->create3DSChallenge($threeDSv2AuthResponse->getId(), $cRes);