BKM Express ist in der Türkei einfach und schnell Zahlungssystem, das Online -Zahlungen ermöglicht, ohne dass alle Kreditkarteninformationen übergeben sind. Diese Bibliothek bietet Ihnen eine einfache API dafür.
###### Hinweis: Derzeit arbeiten Sie an diesem Projekt. Die Dokumentation wurde noch nicht abgeschlossen.
Sie können diese Bibliothek einfach über einen Komponisten installieren.
Fügen Sie zuerst diese Zeile in Ihren composer.json
{
"require" : {
"travijuu/bkm-express" : " 1.0.3 "
}
} und dann den Befehl composer update ausführen.
Es gibt vier Schritte, um Zahlungstransaktion abzuschließen.
Beginnen wir mit dem ersten Schritt.
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 ); Machen Sie dann die Anforderung an $response->getUrl() mit 3 Parametern, indem Sie die Seite zu BKM Express umleiten
[
' t ' => $ response -> getToken (),
' s ' => $ response -> getSignature (),
' ts ' => $ response -> getTimestamp ()
]Eine andere Art der Postanfrage. (Aber nicht bevorzugt)
< 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 >Nach diesem Schritt sollten Sie auf die BKM Express -Website weitergeleitet werden.
Sobald der Kunde im System angemeldet ist, werden verfügbare Kreditkarten aufgeführt. Daher kann der Kunde alle Ratenzahlungsoptionen sehen, die in der Initialisierungsanfrage gesendet werden.
Nach Auswahl der Kreditkarten wird ein SMS -Passwort vom Kunden angefordert.
Im nächsten Schritt stellt BKM Express eine SOAP -Anfrage an Ihre Bewerbung auf, um Bank -API -Informationen zu erhalten, die sich auf die ausgewählte Karte des Kunden beziehen ( Request Merch Info ).
WICHTIG: Sie sollten einen Webservice -URL für den BKM Express -Kundendienst einlegen.
Daher wird BKM Express eine SOAP -Anfrage an diese URL stellen, um Bank -API -Informationen von Ihrem Server zu erhalten.
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 ); Das Ergebnis dieser Anfrage wird an BKM Express zurückgegeben und führt eine Bankgeschäfte mit Ihren Bank -API -Informationen durch. Danach stellt BKM Express eine Postanfrage gemäß dem Ergebnis der Banktransaktion ( success / cancel url ).
BKM Express stellt eine Postanforderung an die Erfolgs -URL (https://example.com/bkm/success) oder die Abbrechen von URL (https://example.com/bkm/error). Sie müssen die Postdaten abrufen und in die Funktion bestätigen
Hinweis: https://example.com/bkm/success/ <ordercode} Sie können Ihre Erfolgs -URL wie diese verwenden, damit Sie verstehen können, welche Reihenfolge Sie bezahlen möchten.
// 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 ();
. . .
}
} Neben der success url wird BKM Express diese Post -Anfrage an Ihre Bestätigungs -URL zur Vorsichtsmaßnahme durchführen. Sie gingen davon aus, dass die an success url gesendete Anfrage möglicherweise nicht erreicht wird.
WICHTIG: Sie sollten die URL der Bestätigung für den BKM Express -Kundendienst angeben.
$ 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 ());Wenn Sie Vorschläge haben, können Sie hier auf Github und/oder dieses Repo ein Problem erstellen, Änderungen vornehmen und eine Pull -Anfrage vorlegen!