BKM Express adalah sistem pembayaran yang mudah dan cepat di Turki yang memungkinkan pembayaran online tanpa memberikan informasi kartu kredit utuh sehingga perpustakaan ini memberi Anda API sederhana untuk itu.
###### CATATAN: Saat ini sedang mengerjakan proyek ini. Dokumentasi belum selesai.
Anda cukup menginstal pustaka ini melalui komposer.
Pertama, tambahkan baris ini ke composer.json Anda
{
"require" : {
"travijuu/bkm-express" : " 1.0.3 "
}
} dan kemudian jalankan perintah composer update .
Ada empat langkah untuk melakukan transaksi pembayaran.
Mari kita mulai dengan langkah pertama.
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 ); Kemudian, buat permintaan pos ke $response->getUrl() dengan 3 parameter dengan mengarahkan ulang halaman ke BKM Express
[
' t ' => $ response -> getToken (),
' s ' => $ response -> getSignature (),
' ts ' => $ response -> getTimestamp ()
]Cara lain dari permintaan pasca. (Tetapi tidak disukai)
< form name =" bankexpresspayForm " id =" bankexpresspayForm " action =" <?php echo $response->getUrl(); ?> " method =" POST " >
< input type =" hidden " name =" t " value =" <?php echo $response->getToken(); ?> " >
< input type =" hidden " name =" ts " value =" <?php echo $response->getSignature(); ?> " >
< input type =" hidden " name =" s " value =" <?php echo $response->getTimestamp(); ?> " >
<!-- To support javascript unaware/disabled browsers -->
< noscript >
< center >
Eğer yönlenme olmazsa lütfen tıklayınız. < br >
</ center >
</ noscript >
</ form >
< script type =" text/javascript " >
setTimeout ( function ( ) {
$ ( '#bankexpresspayForm' ) . submit ( ) ;
} , 500 ) ;
</ script >Setelah langkah ini, Anda harus diarahkan ke situs web BKM Express.
Setelah pelanggan masuk ke dalam sistem, kartu kredit yang tersedia akan terdaftar. Jadi, pelanggan dapat melihat semua opsi angsuran yang dikirim dalam inisialisasi permintaan pembayaran.
Setelah pemilihan kartu kredit, kata sandi SMS akan diminta dari pelanggan.
Pada langkah selanjutnya, BKM Express akan membuat permintaan SOAP ke aplikasi Anda untuk mendapatkan informasi API bank yang terkait dengan kartu yang dipilih pelanggan ( Request Merch Info )
PENTING: Anda harus mendeklarasikan URL layanan web ke Layanan Pelanggan BKM Express.
Dengan demikian, BKM Express akan membuat permintaan SOAP ke URL ini untuk mendapatkan informasi API bank dari server Anda.
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 ); Hasil dari permintaan ini akan dikembalikan ke BKM Express dan itu akan membuat transaksi bank dengan informasi API bank Anda. Setelah itu, BKM Express akan membuat permintaan pasca sesuai dengan hasil transaksi bank ( success / cancel url )
BKM Express akan membuat permintaan pos ke URL sukses (https://example.com/bkm/success) atau membatalkan URL (https://example.com/bkm/error) Anda perlu mendapatkan data posting dan meneruskannya ke fungsi konfirmasi konfirmasi
CATATAN: https://example.com/bkm/success/{OrderCode} Anda dapat menggunakan URL kesuksesan Anda seperti ini sehingga dapat membantu Anda memahami pesanan mana yang Anda coba bayar.
// 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 ();
. . .
}
} Terlepas dari success url , BKM Express akan melakukan permintaan posting ini ke URL konfirmasi Anda untuk pencegahan. Mereka berasumsi bahwa permintaan yang dikirim ke success url mungkin tidak dihubungi.
PENTING: Anda harus mendeklarasikan URL konfirmasi ke Layanan Pelanggan BKM Express.
$ 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 ());Jika Anda memiliki saran, jangan ragu untuk membuat masalah di sini di GitHub dan/atau garpu repo ini, buat perubahan dan kirimkan permintaan tarik!