1. Go to this page and download the library: Download travijuu/bkm-express 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/ */
travijuu / bkm-express example snippets
use Travijuu\BkmExpress\BkmExpress;
use Travijuu\BkmExpress\Common\Bank;
use Travijuu\BkmExpress\Common\Bin;
use Travijuu\BkmExpress\Common\Installment;
$mid = '7b928290-b6d2-469e-ac10-29eb36b8c1f6'; // BKM Merchant ID
$successUrl = 'https://example.com/bkm/success';
$cancelUrl = 'https://example.com/bkm/error';
$privateKeyPath = '/path/to/mykey.pem';
$publicKeyPath = '/path/to/mykey.pub';
$bkmPublicKeyPath = '/path/to/bkm.pub';
// Infrastructure of the bank you choose as a default payment gateway.
// ['Posnet', 'NestPay', 'Gvp'] one of them should be chosen.
$defaultBank = 'NestPay';
$bkm = new BkmExpress($mid, $successUrl, $cancelUrl, $privateKeyPath, $publicKeyPath, $bkmPublicKeyPath, $defaultBank);
$wsdl = '/path/to/BkmExpressPaymentService.wsdl';
$sAmount = 100.50; // Sale Amount
$cAmount = 4.50; // Cargo Amount
$banks = [];
$bank = new Bank('0062', 'Garanti Bank', 'Garanti Bank via BKM Express');
$bin = new Bin('554960');
$installment = new Installment($cAmount, $sAmount, 1, 'Garanti Bank without installment', true);
$bin->addInstallment($installment);
$installment = new Installment($cAmount, $sAmount, 3, 'Garanti Bank with 3 installments', true);
$bin->addInstallment($installment);
$bank->addBin($bin);
$banks[] = $bank;
$response = $bkm->initPayment($wsdl, $sAmount, $cAmount, $banks);
use Travijuu\BkmExpress\Common\VirtualPos;
use Travijuu\BkmExpress\Payment\RequestMerchInfo\RequestMerchInfoWSRequest;
$wsdlServer = '/path/to/RequestMerchInfoService_latest.wsdl';
$virtualPosList = [];
$virtualPos = new VirtualPos();
$virtualPos->setPosUrl('https://sanalposprovtest.garanti.com.tr/VPServlet')
->setPosUid('600218');
->setPosPwd('123qweASD');
->setMpiUrl('https://sanalposprovtest.garanti.com.tr/servlet/gt3dengine')
->setMpiUid('600218')
->setMpiPwd('123qweASD')
->setMd('')
->setXid('')
->setCIp('192.168.0.1')
->setExtra('{"terminalprovuserid":"PROVAUT", "terminalmerchantid":"7000679", "storekey":"12345678", "terminalid":"30690168"}')
->setIs3ds(false)
->setIs3dsFDec(false);
// Garanti Bank Id: 0062
$virtualPosList['0062'] = $virtualPos;
/* This callback can help you to be informed what kind of
* payment method is selected in BKM Express website.
* You may insert this into database for info purposes.
* Note: This is optional.
*/
$callback = function(RequestMerchInfoWSRequest $request) {
$token = $response->getToken();
$bankId = $response->getBankId();
$installment = $response->getInstallment();
...
}
$bkm->requestMerchInfo($wsdlServer, $virtualPosList, $callback);
// This part can be used in both success and cancel url. $confirmation->success() will return the result.
$data = $_POST;
$confirmation = $bkm->confirm($data);
if ($confirmation->isSuccess()) {
// remember the callback which I decribed above. If you save $token, $bankId, $installment into your database, now you can use them to identify the posResponse.
$token = $confirmation->getToken();
$bankId = '0062'; // get the bank Id from database according to token
$posResponse = $bkm->getPosResponse($bankId, $confirmation->getPosRef());
// This means that bank transcation is successfully completed so you got the money
// now you can save the success result to your database.
if ($posResponse->isSuccess()) {
$authCode = $posResponse->getAuthCode();
$rawResponse = $posResponse->getRawResponse();
...
} else {
// Transaction failed so get the error message and code
$errorCode = $posResponse->getResponseCode();
$errorMessage = $posResponse->getResponseMessage();
...
}
}
$data = $_POST;
$confirmation = $bkm->confirm($data);
/* You can use the same methodology as above.
* Save $token, $bankId, $installment into your database,
* now you can use them to identify the posResponse. (Garanti, YKB, Akbank, etc..)
*/
$token = $confirmation->getToken();
$bankId = '0062'; // get the bank Id from database according to token
$posResponse = $bkm->getPosResponse($bankId, $confirmation->getPosRef());
html
<form name="bankexpresspayForm" id="bankexpresspayForm" action=" echo $response->getUrl();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.