Ödeme Sonucu
3D olmayan işlemlerin dönüş parametreleri #
- İşlem sonucunda size gönderilen Response Hash'i (hashDataV2) mutlaka kontrol ediniz. Şayet sizin oluşturduğunuz hash ile size gönderilen hash farklıysa bu işlem paynkolaydan gelmiyor demektir, işlemi kesmeniz gerekir.
- Ödeme alındı bilgisi için RESPONSE_CODE = 2 olmalı ve AUTH_CODE mutlaka geçerli bir değer (boş veya 0 olmayan) içermelidir.
- İşlem sonucunun successURL sayfasına dönmesi işlemin başarılı olduğu anlamına gelmez. Bu nedenle, her zaman yukarıdaki kontrolleri yapmalısınız.
- Burada dönüşü yapılan hashDataV2 değeri, Hash Yanıtı Hesaplama sayfasında anlatılan şekilde hesaplanıp size gönderilmiştir. Doğruluğunu teyit ediniz. Request oluştururken hesapladığınız hashDataV2'dan farklıdır.
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=
hashDataV2 : lunnRyNfDu6pdpNjjlFrlATE4PjUluM89iqAobpWkxEmzlDe9lNkP76Ua19WvYeb++yKufjhUa6ZRorBNfEzHA==İşlem Başarılı mı? Nasıl Anlaşılır? #
Tek kural: Ödeme yalnızca
RESPONSE_CODE = 2 ve AUTH_CODE geçerli bir değerken başarılıdır. AUTH_CODE değeri "" (boş), "0" veya "00" ise işlem başarısızdır. successURL'e dönmüş olması başarı anlamına gelmez.flowchart LR
A[İşlem sonucu alındı] --> B{hashDataV2 doğru mu?}
B -- Hayır --> X[BAŞARISIZ]
B -- Evet --> C{RESPONSE_CODE == 2 ?}
C -- Hayır --> X
C -- Evet --> D{AUTH_CODE boş, 0 veya 00 mu?}
D -- Evet --> X
D -- Hayır --> S[BAŞARILI]payment-result.php
function isPaymentSuccessful(array $result): bool
{
$code = $result['RESPONSE_CODE'] ?? null;
$auth = trim((string)($result['AUTH_CODE'] ?? ''));
// RESPONSE_CODE must be 2 AND AUTH_CODE must be a real value.
return (string)$code == '2'
&& !in_array($auth, ['', '0', '00'], true);
}function isPaymentSuccessful(result) {
const code = String(result.RESPONSE_CODE ?? '');
const auth = String(result.AUTH_CODE ?? '').trim();
// RESPONSE_CODE must be 2 AND AUTH_CODE must be a real value.
return code == '2' && !['', '0', '00'].includes(auth);
}def is_payment_successful(result: dict) -> bool:
code = str(result.get("RESPONSE_CODE", ""))
auth = str(result.get("AUTH_CODE", "")).strip()
# RESPONSE_CODE must be 2 AND AUTH_CODE must be a real value.
return code == "2" and auth not in ("", "0", "00")public static bool IsPaymentSuccessful(IDictionary<string, string> result)
{
result.TryGetValue("RESPONSE_CODE", out var code);
result.TryGetValue("AUTH_CODE", out var auth);
auth = (auth ?? "").Trim();
// RESPONSE_CODE must be 2 AND AUTH_CODE must be a real value.
return code == "2"
&& auth != "" && auth != "0" && auth != "00";
}public static boolean isPaymentSuccessful(Map<String, String> result) {
String code = result.getOrDefault("RESPONSE_CODE", "");
String auth = result.getOrDefault("AUTH_CODE", "").trim();
// RESPONSE_CODE must be 2 AND AUTH_CODE must be a real value.
return code.equals("2")
&& !auth.equals("") && !auth.equals("0") && !auth.equals("00");
}3D İşlem Onay (AutoComplete) #
- Başarılı işlem 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.
- AUTHORIZATION_AMOUNT karttan çekilen tutarı gösterir. İşlem sonrasında dönülen AUTHORIZATION_AMOUNT ile sizin ödeme sayfasına POST ettiğiniz amount (tutar) değerini karşılaştırmanız gerekir. AUTHORIZATION_AMOUNT sizin gönderdiğiniz tutara eşit veya büyük olmalıdır.
- İşlem sonunda size gönderilen Response Hash'i (hashData) mutlaka kontrol ediniz. Şayet sizin oluşturduğunuz hash ile size gönderilen hash farklıysa bu işlem paynkolaydan gelmiyor demektir.
- İşlem sonucu olarak RESPONSE_CODE = 2 olmalı ve AUTH_CODE mutlaka geçerli bir değer (boş veya 0 olmayan) içermelidir.
3D İşlem Onay (AutoComplete) Dönüş Parametreleri #
RESPONSE_CODE : 2
RESPONSE_DATA : İşlem Başarılı.
REFERENCE_CODE : IKSIRPF142277040
USE_3D : true
MERCHANT_NO : 400000002
AUTH_CODE : 345344
CLIENT_REFERENCE_CODE : 24809740|988922
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=
hashDataV2 : lunnRyNfDu6pdpNjjlFrlATE4PjUluM89iqAobpWkxEmzlDe9lNkP76Ua19WvYeb++yKufjhUa6ZRorBNfEzHA==
BANK_RESULT: Response : IKSIRPF142277040 ...
ERROR_CODE: 0- Başarılı işlem sonucu olarak RESPONSE_CODE = 2 olmalı ve AUTH_CODE mutlaka geçerli bir değer (boş veya 0 olmayan) değer içermelidir.
- İşlem başarılı değil yani hatalı ise RESPONSE_CODE = 0 döner, RESPONSE_DATA içinde hata mesajı iletilir ve hatalı işlemde AUTH_CODE boştur.
İki aşamalı 3D Secure işlemlerinde ödeme tamamlama için Ödeme Kapatma Servisi ( 2 Aşamalı 3D secure için ) sayfasını inceleyiniz.