3D olmayan işlemlerin dönüş parametreleri:
"RESPONSE_CODE=2&RESPONSE_DATA=İşlem Başarılı&USE_3D=false&RND=1630051651137&MERCHANT_NO=400000001&AUTH_CODE=S00586&REFERENCE_CODE=IKSIRPF102168&CLIENT_REFERENCE_CODE=42794212&TIMESTAMP=2021-08-27&TRANSACTION_AMOUNT=1.00&AUTHORIZATION_AMOUNT=1.00&COMMISION=0.00000000&COMMISION_RATE=null&INSTALLMENT=1&hashData=bjb49lGdnE2D/D5Jze2/sn7Xfk0="
3D Ön Onay

3D işleminden sonra, size bankadan gelen ilk onayı gönderiyoruz. Bu onay para çekildiği anlamına gelmemektedir, bankadan gelen ön onaydır.

Başarılı ön onay successUrl olarak girdiğiniz linke post edilir. İşlem başarısız olursa failUrl olarak girdiğiniz linke dönüş yapılacaktır.

İşlemin successUrl sayfasına dönmesi işlemin başarılı olduğu anlamına gelmemektedir.

İşlem sonucu olarak RESPONSE_CODE = 2 olması işlemin başarılı olduğu anlamına gelir fakat AUTH_CODE boş veya sıfır (0) olmamalıdır. İşlemin başarılı olup olmadığı kontrol edilirken AUTH_CODE kontrolü de mutlaka yapılmalıdır. ( AUTH_CODE > 0 şartı kontrol edilmeldir. Bankadan gelen onay kodudur.) 3D işlemlerde AUTH_CODE completePayment methodu çağırıldıktan sonra kontrol edilmelidir.

AUTHORIZATION_AMOUNT karttan çekilen tutarı gösterir. İşlem sonrasında dönülen AUTHORIZATION_AMOUNT ile sizin ödeme sayfasına POST ettiğiniz amount değerini karşılaştırmanızı öneririz.

3D Ön Onay Parametreleri

RESPONSE_CODE : 2
RESPONSE_DATA : İşlem Başarılı.
REFERENCE_CODE : YPsvysCzU936bJ8AnntVMvGEbjOfODCEzdkB5QrTAb2R7LmscfXcctEcbnceJiSorYOb3ipBGRK6aSpbeib1nXM3U48=
USE_3D : true
MERCHANT_NO : 400000002
AUTH_CODE :
CLIENT_REFERENCE_CODE : 24809740
TIMESTAMP : 2022-02-24 13:58:36.353
TRANSACTION_AMOUNT : 1.00
AUTHORIZATION_AMOUNT : 1.00
COMMISION : 0.00
COMMISION_RATE : 0.0000
INSTALLMENT : 1
RND : 1645700316156
hashData : +wDy2xeI1hOCnwaatSqylWhtj9E=

Burada size RESPONSE_CODE= 2 dönülmüşse ön onay işlemi başarılı demektir. ( Ön onay alınmıştır) Ödeme işlemini tamamlamak için sx değerinizle birlikte REFERENCE_CODE’u aşağıdaki linke form datası olarak body’de post etmeniz gerekmektedir.

TEST linki : https://paynkolaytest.nkolayislem.com.tr/Vpos/v1/CompletePayment
PROD linki : https://paynkolay.nkolayislem.com.tr/Vpos/v1/CompletePayment

'REFERENCE_CODE'u para çekme işlemini tamamlamak için şu şekilde post edebilirsiniz.

PHP ile İşlemi Tamamlama (CompletePayment Metodu)

$REFERENCE_CODE = $_POST['REFERENCE_CODE'];
$ch = curl_init();
$arrData = array(
  "sx" => "114488219|SjEH1wb6qoqWtN2X9/5Y6sVy/JxniIbR01EKWRcHxPl0iAjkadGNaNAEV5l6O3tjzcPEiFOO8OwCSb6dzo/fN/2zyv7sVbweqJvgKr7cWnMwPIgqipXBk+B7Z4bFqmeD1LlUgNMXdstufUNxmCHIfb3nT0NDrfScCxlQX8H1YYPvcNE+oTtci3fB+X/fpYec0Gu2JPAIzG74pQN07MmdHq+GSR73+RkAjMi0cP4pfjNf6C/0Igc6qcnTtYH9YIJIpRxySQ==",
  "referenceCode" => $REFERENCE_CODE
);
curl_setopt($ch, CURLOPT_URL,"https://paynkolaytest.nkolayislem.com.tr/Vpos/v1/CompletePayment");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $arrData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
var_dump($server_output);
.NET ile İşlemi Tamamlama (CompletePayment Metodu)

var refCode = formCollection["REFERENCE_CODE"];
var formContent = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("sx", SxDegeri),
new KeyValuePair<string, string>("referenceCode", refCode)
});
var client = new HttpClient();
var response = await client.PostAsync(PaymentConfirmUrl, formContent);
string responseJson = await response.Content.ReadAsStringAsync();
  
Postman Ekran Görüntüsü

Başarılı post işlemi sonrası ödeme alınır ve sonuç yine aynı sayfaya Json formatında dönülür. RESPONSE_CODE = 2 olması işlemin başarılı olduğu anlamına gelir fakat AUTH_CODE boş olmamalıdır. İşlemin başarılı olup olmadığı kontrol edilirken AUTH_CODE kontrolü de mutlaka yapılmalıdır. ( Bankadan gelen onay kodudur.)

Postman Collection'ını indirmek için tıklayınız.

Son Dönüş Parametreleri JSON Decode Hali

array(23) { ["REFERENCE_CODE"]=> string(13) "IKSIRPF339234" ["AUTH_CODE"]=> string(6) "S17481" ["COMMISION"]=> string(6) "0.0300" ["COMMISION_RATE"]=> string(6) "2.5500" ["INSTALLMENT"]=> string(1) "1" ["AUTHORIZATION_AMOUNT"]=> string(4) "1.00" ["BANK_CODE"]=> string(3) "111" ["TRANSACTION_AMOUNT"]=> string(4) "1.00" ["CLIENT_REFERENCE_CODE"]=> string(8) "93350956" ["BANK_RESULT"]=> string(2676) "RequestGuid=1000000080766902;;TransactionDate=14.10.2022 11:25:22;;MbrId=5;;MerchantID=085300000009704;;OrderId=IKSIRPF339234;;RequestIp=213.14.209.194;;RequestStat=1,3,5,1,6,10;;SecureType=3DModel;;PurchAmount=1.00;;Exponent=2;;Currency=949;;Description=;;OkUrl=https://iksirexttest.nkolayislem.com.tr/uat/VPosApi/Pf/Ok/PfVpos/C816C74F-1461-4770-B5CF-760F94EED4D3/SALES;;FailUrl=https://iksirexttest.nkolayislem.com.tr/uat/VPosApi/Pf/Fail/PfVpos/C816C74F-1461-4770-B5CF-760F94EED4D3/SALES;;PayerTxnId=MjAyMjEwMTQxMTI1MTU2MzgwMTM=;;PayerAuthenticationCode=AAABB2kmSYATQ1IVdCZJAAAAAAA=;;Eci=05;;MD=;;Hash=Zk2J7B6jZflXH4kihOPODXptgkc=;;TerminalID=VS010481;;TxnType=Auth;;OrgOrderId=;;SubMerchantCode=000000400000128;;recur_frequency=;;recur_expiry=;;CardType=V;;Lang=TR;;BonusAmount=;;InstallmentCount=0;;Rnd=Fri0Oct014011:25:140EET02022;;AlphaCode=TL;;Ecommerce=1;;MrcCountryCode=792;;MrcName=HAYALEVI;;MerchantHomeUrl=https://vpostest.qnbfinansbank.com/;;CardHolderName=;;IrcDet=;;IrcCode=;;Version=1.0.2;;TxnStatus=Y;;CavvAlg=2;;ParesVerified=true;;ParesSyntaxOk=true;;ErrMsg=Onaylandı;;VendorDet=;;D3Stat=Y;;TxnResult=Success;;AuthCode=S17481;;HostRefNum=228711252864;;RRN=228711252864;;ProcReturnCode=00;;ReturnUrl=https://iksirexttest.nkolayislem.com.tr/uat/VPosApi/Pf/Ok/PfVpos/C816C74F-1461-4770-B5CF-760F94EED4D3/SALES;;ErrorData=;;BatchNo=4179;;VoidDate=;;CardMask=415565******6111;;ReqId=24937508;;UsedPoint=0;;SrcType=VPO;;RefundedAmount=0;;RefundedPoint=0;;ReqDate=20221014;;SysDate=20221014;;F11=252864;;F37=228711252864;;IsRepeatTxn=;;CavvResult=;;VposElapsedTime=1639;;BankingElapsedTime=0;;SocketElapsedTime=0;;HsmElapsedTime=4;;MpiElapsedTime=6187;;hasOrderId=False;;TemplateType=0;;HasAddressCount=False;;IsPaymentFacilitator=True;;MerchantCountryCode=TR;;OrgTxnType=;;F11_ORG=0;;F12_ORG=0;;F13_ORG=;;F22_ORG=0;;F25_ORG=0;;MTI_ORG=0;;DsBrand=V;;IntervalType=0;;IntervalDuration=0;;RepeatCount=0;;CustomerCode=;;RequestMerchantDomain=;;RequestClientIp=90.158.16.70;;ResponseRnd=PF638013435218254758;;ResponseHash=cj/FnXtmA7OZCefoXDDuwpaiyB0=;;BankInternalResponseCode=;;BankInternalResponseSubcode=;;BankInternalResponseSubmessage=;;BayiKodu=;;VoidTime=0;;VoidUserCode=;;PaymentLinkId=0;;ClientId=;;IsQRValid=;;IsFastValid=;;IsQR=;;IsFast=;;QRRefNo=;;FASTGonderenKatilimciKodu=;;FASTAlanKatilimciKodu=;;FASTReferansNo=;;FastGonderenIBAN=;;FASTGonderenAdi=;;MobileECI=;;HubConnId=;;WalletData=;;Tds2dsTransId=;;PaymentFacilitatorId=268983;;IndSalesOrgId=IKSIRPF339234;;SubmerchantMCC=5651;;CardAcceptorName=HAYALEVI;;CardAcceptorCity=ADANA;;CardAcceptorPostalCode=34025;;CardAcceptorCountry=792;;CardAcceptorStreet=ADANA;;CardAcceptorState=ADANA;;HashType=Sha1" ["TDSECURE_TYPE"]=> string(4) "true" ["BANK_MESSAGE"]=> string(10) "Onaylandı" ["BANK_CARD_HOLDER_NAME"]=> string(0) "" ["USER_ID"]=> NULL ["TRAN_ID"]=> NULL ["AGENT_CODE"]=> string(0) "" ["RESPONSE_CODE"]=> int(2) ["ERROR_CODE"]=> NULL ["RESPONSE_DATA"]=> string(19) "İşlem Başarılı" ["sessionId"]=> string(36) "999b9c2f-4420-43b9-94ca-d1f7fc78d4fe" ["CORE_TRX_ID_RESERVED"]=> string(36) "0BB716DC-D6A2-4A59-98C4-1C13A9EBEF1B" ["ERROR_MESSAGE"]=> string(10) "Onaylandı" ["TimeStamp"]=> NULL }

PHP İşlem Dönüş Parametrelerine Erişim


$ch = curl_init();

$arrData = array(
  "sx" => "114488219|SjEH1wb6qoqWtN2X9/5Y6sVy/JxniIbR01EKWRcHxPl0iAjkadGNaNAEV5l6O3tjzcPEiFOO8OwCSb6dzo/fN/2zyv7sVbweqJvgKr7cWnMwPIgqipXBk+B7Z4bFqmeD1LlUgNMXdstufUNxmCHIfb3nT0NDrfScCxlQX8H1YYPvcNE+oTtci3fB+X/fpYec0Gu2JPAIzG74pQN07MmdHq+GSR73+RkAjMi0cP4pfjNf6C/0Igc6qcnTtYH9YIJIpRxySQ==",
  "referenceCode" => $REFERENCE_CODE
);

curl_setopt($ch, CURLOPT_URL,"https://paynkolaytest.nkolayislem.com.tr/Vpos/v1/CompletePayment");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $arrData);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server_output = curl_exec($ch);

$obj = json_decode($server_output);

echo "<br>RESPONSE_CODE:  " . $RESPONSE_CODE= ($obj->RESPONSE_CODE);
echo "<br>RESPONSE_DATA:  " . $RESPONSE_DATA= ($obj->RESPONSE_DATA);
echo "<br>REFERENCE_CODE:  " . $REFERENCE_CODE= ($obj->REFERENCE_CODE);
echo "<br>COMMISION:  " . $COMMISION= ($obj->COMMISION);
echo "<br>COMMISION_RATE:  " . $COMMISION_RATE= ($obj->COMMISION_RATE);
echo "<br>AUTHORIZATION_AMOUNT:  " . $AUTHORIZATION_AMOUNT= ($obj->AUTHORIZATION_AMOUNT);
echo "<br>TRANSACTION_AMOUNT:  " . $TRANSACTION_AMOUNT= ($obj->TRANSACTION_AMOUNT);
echo "<br>BANK_CODE:  " . $BANK_CODE= ($obj->BANK_CODE);
echo "<br>CLIENT_REFERENCE_CODE:  " . $CLIENT_REFERENCE_CODE= ($obj->CLIENT_REFERENCE_CODE);
echo "<br>BANK_RESULT:  " . $BANK_RESULT= ($obj->BANK_RESULT);
echo "<br>ERROR_MESSAGE:  " . $ERROR_MESSAGE= ($obj->ERROR_MESSAGE);
echo "<br>BANK_MESSAGE:  " . $BANK_MESSAGE= ($obj->BANK_MESSAGE);
echo "<br>AUTH_CODE:  " . $AUTH_CODE= ($obj->AUTH_CODE);

Örnek Success Sayfası ( PHP )


// TEST BAŞARILI SONUÇ SAYFASI

if ($_SERVER['REQUEST_METHOD'] === 'POST') 
{
 
    $MERCHANT_SECRET_KEY="_YXMmaRPOK05Gzztl9lds";
    
    $USE_3D = $_POST['USE_3D'];


    //3D referans kodu
    $REFERENCE_CODE = isset($_POST['REFERENCE_CODE']) ? $_POST['REFERENCE_CODE'] : false;

    $RESPONSE_CODE = $_POST['RESPONSE_CODE'];
    $USE_3D = $_POST['USE_3D'];
    $MERCHANT_NO = $_POST['MERCHANT_NO'];
    $AUTH_CODE = $_POST['AUTH_CODE'];
    $CLIENT_REFERENCE_CODE = $_POST['CLIENT_REFERENCE_CODE'];
    $AUTHORIZATION_AMOUNT = $_POST['AUTHORIZATION_AMOUNT'];
    $INSTALLMENT = $_POST['INSTALLMENT'];
    $RND = $_POST['RND'];
    $HASHDATA = $_POST['hashData'];

    $HASHTR = $MERCHANT_NO . $REFERENCE_CODE . $AUTH_CODE . $RESPONSE_CODE . $USE_3D . $RND . $INSTALLMENT . $AUTHORIZATION_AMOUNT . $MERCHANT_SECRET_KEY ;

    $HASH_CREATED = base64_encode(pack('H*',sha1($HASHTR)));

    if ($HASH_CREATED != $HASHDATA ) 
        {
            exit ('hash data hatası');
        }

    
    // İŞLEM 3D DEĞİL İSE
    if ($USE_3D == "false")
    
    {
    
        //test ortamda
        if ( $RESPONSE_CODE == 2  ) 
        // prod ortamda $AUTH_CODE > 0 şartı da kontrol edilmelidir.
        // if ( $RESPONSE_CODE == 2 &&  $AUTH_CODE > 0 ) 
        {
            echo "Ödeme işlemi başarılı";
        } 
        else 
        {
            echo "hatalı deneme 2D.";
            exit;
        }
    }
    
    // İŞLEM 3D İSE
    else
    
    {
    
        // COMPLETE PAYMENT ADIMI
    
        $ch = curl_init();
    
        $arrData = array(
        "sx" => "114488219|SjEH1wb6qoqWtN2X9/5Y6sVy/JxniIbR01EKWRcHxPl0iAjkadGNaNAEV5l6O3tjzcPEiFOO8OwCSb6dzo/fN/2zyv7sVbweqJvgKr7cWnMwPIgqipXBk+B7Z4bFqmeD1LlUgNMXdstufUNxmCHIfb3nT0NDrfScCxlQX8H1YYPvcNE+oTtci3fB+X/fpYec0Gu2JPAIzG74pQN07MmdHq+GSR73+RkAjMi0cP4pfjNf6C/0Igc6qcnTtYH9YIJIpRxySQ==",
        "referenceCode" => $REFERENCE_CODE
        );
    
        curl_setopt($ch, CURLOPT_URL,"https://paynkolaytest.nkolayislem.com.tr/Vpos/v1/CompletePayment");
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $arrData);
    
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
        $server_output = curl_exec($ch);
        curl_close ($ch);

        $obj = json_decode($server_output);
        
        echo "<br>RESPONSE_CODE:  " . $RESPONSE_CODE= ($obj->RESPONSE_CODE);
        echo "<br>RESPONSE_DATA:  " . $RESPONSE_DATA= ($obj->RESPONSE_DATA);
        echo "<br>REFERENCE_CODE:  " . $REFERENCE_CODE= ($obj->REFERENCE_CODE);
        echo "<br>COMMISION:  " . $COMMISION= ($obj->COMMISION);
        echo "<br>COMMISION_RATE:  " . $COMMISION_RATE= ($obj->COMMISION_RATE);
        echo "<br>AUTHORIZATION_AMOUNT:  " . $AUTHORIZATION_AMOUNT= ($obj->AUTHORIZATION_AMOUNT);
        echo "<br>TRANSACTION_AMOUNT:  " . $TRANSACTION_AMOUNT= ($obj->TRANSACTION_AMOUNT);
        echo "<br>BANK_CODE:  " . $BANK_CODE= ($obj->BANK_CODE);
        echo "<br>CLIENT_REFERENCE_CODE:  " . $CLIENT_REFERENCE_CODE= ($obj->CLIENT_REFERENCE_CODE);
        echo "<br>BANK_RESULT:  " . $BANK_RESULT= ($obj->BANK_RESULT);
        echo "<br>ERROR_MESSAGE:  " . $ERROR_MESSAGE= ($obj->ERROR_MESSAGE);
        echo "<br>BANK_MESSAGE:  " . $BANK_MESSAGE= ($obj->BANK_MESSAGE);
        echo "<br>AUTH_CODE:  " . $AUTH_CODE= ($obj->AUTH_CODE);

        //test ortamda
        if ( $RESPONSE_CODE == 2  ) 
        // prod ortamda ise $AUTH_CODE > 0 şartı da kontrol edilmelidir.
        // if ( $RESPONSE_CODE == 2 &&  $AUTH_CODE > 0 )
        {
            echo "Ödeme işlemi başarılı";
        } 
        else 
        {
            echo "hatalı deneme 3D.";
            exit;
        }
    
    
    }
}

İşlem Başarısız olursa ( Fail durumunda ) Dönüş Parametrelerine Erişim ( PHP )


foreach ($_POST as $param_name => $param_val) {
    echo "Param: $param_name; Value: $param_val
\n"; }