Genel Bilgiler

PosFix ödeme, cüzdan ve diğer servisler, dünya standartlarına uygun yapıda ve tüm yazılımlarla entegre olarak çalışabilecek şekilde oturum bilgisi tutmayan (stateless) Restful servis odaklı bir mimaride geliştirilmiştir. Yine bu rehbere eşlik edecek örnek projeler sayesinde PosFix servislerine çok daha kolay entegre olabilirsiniz.

Başlarken

PosFix servislerine, servis yapılarına göre XML veya JSON formatında veri göndererek ve alarak hızlıca entegre olabilirsiniz. Yaptığınız işlemlerin sonuçlarını PosFix kurumsal panelinden rahatlıkla takip edebilirsiniz.

Yine bu rehber sayesinde entegrasyon adımlarını, istediğiniz yazılım dilinde kolayca gerçekleştirebileceksiniz. PosFix github hesabı üzerinden bu örnek projelere erişebildiğiniz gibi burada da ilgili kod parçalarını görebileceksiniz. PosFix servislerini kullanabilmek için bir kurum hesabı oluşturmanız gereklidir.

Hesabınızı oluşturduktan sonra

  • Mağaza Açık Anahtarı (PublicKey)
  • Mağaza Gizli Anahtarı (PrivateKey)
bilgileri kurum panelinizde sol menüde bulunan Mağaza Listesi > Detay sayfası içerisindeki Public ve Private Key Gönder butonuna tıklayarak tanımlı e-posta adresinize iletilmesini sağlayabilirsiniz.

Private Key'iniz size özeldir ve hiç bir şekilde paylaşmamamızı veya herhangi bir çağrıda açık olarak göndermemenizi rica ederiz.

Test modundaki bilgiler ve sorgular ile canlı ortamdaki bilgi ve sorgular ve sonuçları birbirinden bağımsız olarak çalışır.

PosFix entegrasyon için, tüm yazılım dilleriyle entegre olabilir yapıları sunar. Bunun yanında bu rehber boyunca aşağıdaki dillerde örnek kodlara ve github üzerinden örnek projelere de ulaşarak hızlıca entegrasyon sağlayabilirsiniz.

Entegrasyon sürecinde dikkat edilecek noktalar

Canlı ortamda PosFix'in apilerine gönderilen parametrelere müşteriden alınan bilgiler ilgili alanlara koyularak gönderilmelidir. Canlı ortamda hiç bir şekilde sabit, dummy değerler ilgili servislere gönderilmemelidir. Örnek projelerde yer alan örnek değerler sizin konuyu daha kolay anlamanıza yardımcı olmak amacıyla vardır. Müşteri, ürün, miktar gibi bilgilerin tümü müşterilerizin beyan ettiği veya veritabanınızdan gelecek değerler olmalıdır. Bu sahteciliği önlemek adına çok önemlidir. Entegrasyon sonrası, test işlemlerinde gönderilen parametreler PosFix kurum panelinizdeki sipariş arama sayfası üzerinden mutlaka kontrol edilmeli ve doğru gönderildiğinden emin olunmalıdır.

Önemli Notlar
  • Servisleri kullanabilmek için PosFix kurum başvuru aşamalarını tamamlamış olmanız gerekmektedir. Başvuru adımlarını tamamladıktan sonra kurum panelinizden alabileceğiniz public ve private key bilgileri ile servisleri kullanabilirsiniz.
  • Entegrasyon işlemlerinde encoding “UTF-8” kullanılması gerekmektedir. Özellikle token parametresinden kaynaklı alınan hataların büyük çoğunluğu encoding problemlerinden kaynaklanmaktadır. Ek olarak XML dili için olan özel karakterlerin gönderiminde hata almamak için yine encoding yapılması gerekmektedir.
  • Servis isteği yaparaken göndermiş olduğunuz alanların başında ve sonunda oluşabilecek boşluk alanlarını kaldırmanızı ( trim() ) önemle rica ederiz. Çünkü bu alanlar oluşacak hash sonuçlarını etkilemektedir.
  • Entegrasyon dahilinde gönderilen input alanlarında, kart numarası alanı dışında kart numarası bilgisi gönderilmesi halinde işlem reddedilecektir.
İstek Modu

PosFix bir kere canlıya geçtikten sonra test geliştirmelerine devam edebilmeniz için her servis çağrısında o çağrının test ortamda mı yoksa canlı ortam için mi yapıldığını sağlamak adına bu bilgiyi sizden bir parametre olarak ister.

Test modu gerçek kart bilgisi kullanmaya gerek kalmadan test ödemeleri yapmanızı sağlayan bir ödeme modudur. Bu sayede SMS ile 3D secure doğrulaması yapmadan testlerinizi hızlıca yapabilirsiniz. Ayrıca test ödemelerinde gerçek bir banka posu kullanılmadığından, ödeme gerçek kart bilgileri ile yapıldığında bile test kartlarından para çekilmeyecektir. Test modunda ödeme yapabilmek için ödeme isteklerinizde mode parametresini "T" olarak yollamanız gerekmektedir. PosFix panelinizdeki "Sipariş Arama" sayfasında sağ alttaki "Test Ödemeleri" tercihi ile arama yaptığınız zaman test ödemelerinizi görebilirsiniz. Test işlemlerinizi bitirdikten sonra gerçek ödeme tahsilatı için mode parametresini "P" olarak yollamanız gerekmektedir.

Servislerin mode parametresinde gönderilecek bilgi aşağıdaki anlamlara gelmektedir.
  • “T” – Test - Test İşlemleri
  • “P” – Production - Gerçek İşlemler
Hash (token) Hesaplama

PosFix’in size sunduğu tüm servislerin güvenliğini sağlamak işlemin sizin tarafınızdan gönderildiğini ve cevabın PosFix tarafından size gönderildiği karşılıklı olarak doğrulamak için oluşturduğu bir yöntem hash bilgisinin karşılıklı olarak iletilmesidir. Hash bilgisinin üretilebilmesi için çeşitli veriler birleştirilir ve bu birleştirilen verilerin sonucunda yapılan bir işlemle kısa bir "string" oluşturulur. Bu bilgiyi alan tarafta aynı hash verisini oluşturursa aradaki iletişimin güvenli olduğuna karar verilir ve işlemlere devam edilir.

Hash parametreleri case-sensitive (büyük-küçük harf) duyarlıdır.

Hash fonksiyonu aşağıdaki şekilde oluşturulur ve çağrılır:

hashString: Her serviste deklare edilen ve her servise özgü, değişen verilerin yanyana birleştirilmesi sonucu ortaya çıkan değer (String Concatate)
PublicKey: Mağaza Açık Anahtarınız
Hash: PublicKey:Base64(SHA1(HashString))

Bir zincir halinde birleştirilerek oluşturulan hashString verisi önce SHA-1 algoritması ile hashlenir ve ardından Base64 formatına çevrilir. Daha sonra mağaza açık anahtarı ile birlikte arada iki nokta (:) olacak şekilde birleştirilir ve ilgili alanda gönderilir.

Token oluşturmak için tüm örnek projelerin Helper sınıflarında örnek hazır fonksiyonlar (CreateToken) mevcuttur.

Veri Örneği: token = “ASKJH98675ASDASDPO:jhsa/gd+89dfg0df6SA/dfg8967==

*Mağaza Açık Anahtarı
*HashString’in önce SHA1 algoritmasından geçirilmiş ve ardından Base64 formatına çevrilmiş hali.

Hash Hesaplama Aracı

Bu araç sayesinde verilerinizi birbirine ekleyerek anında hash(token) oluşturabilirsiniz, böylece kendi entegrasyonunuzda oluşturduğunuz token bilgisini karşılaştırabilirsiniz.

Canlı ortama geçiş
Canlıya geçişte servis çağrılarında gönderdiğiniz "mode" parametresinin "P" olarak gönderildiğinden emin olun.
  • Test ortamında kullandığınız statik verilerin canlı ortamda gerçek müşteri datasıyla değiştirildiğinden emin olun.
  • Canlı ortamda yanlış, sabit data gönderilmediğinden emin olun. Gönderdiğiniz işlemlere ait verileri mutlaka size özel panelden görüntüleyin.
  • Geliştirmeler tamamlandıktan sonra ödeme adımlarını, PosFix test kartları ile tüm olası durumlar için test edin ve sonuçlarını görüntüleyin.
  • PosFix servislerinden dönen ve olabilecek tüm hataları karşılayacak ve müşteriye uygun cevabı gösterecek şekilde kodunuzu düzenleyin ve test edin. PosFix hata kodları kullanıcı dostu mesajlar olup müşterinize gösterebilirsiniz.
  • Hassas olmayan verileri ve servis yanıtlarını, hata çözümü ve olası sorunların çözümünde yardımcı olması açısından loglamaya dikkat edin.
  • Canlı ortama geçiş sonrası ilk işlemleri kendi kredi kartlarınız ile deneyerek sonuçlarını size özel Kurum ekranlarından görüntüleyin. Sonuçların ve işlemlerin doğru tamamlandığından emin olun.
Örnek Projeler ve Projelerin Kullanımı
Servis kullanımlarını ve akışı daha iyi kavrayabilmeniz adına ilgili servislere ait bir çok dilde örnek projelere aşağıdaki linklerden ulaşabilir veya PosFix github hesabı üzerinden mevcut proje kodlarına erişim sağlayabilirsiniz.

İlgili örnek projeleri daha rahat kavrayabilmek adına mimariyi ve birkaç öneriyi sizinle paylaşmak isteriz:

  • Örnek Projeler olabildiğince OOP (Object Oriented Programming) dizaynına uygun olarak tasarlanmıştır.
  • İstek sınıfları ve cevap sınıfları ayrı ayrı yazılmıştır.
  • Ayarlar (Settings) sınıfı tüm servislerde kullanılan parametrelerin ortak bir yerde barındırılması amacıyla tasarlanmıştır.
  • Helper sınıfı bir çok ortak metodu barındırır. Her yerde aynı fonksiyonları çağırmak yerine bu sınıfın metotlarını kullanabilirsiniz.
Ödeme Servisleri

PosFix ödeme, cüzdan ve diğer servisler, dünya standartlarına uygun yapıda ve tüm yazılımlarla entegre olarak çalışabilecek şekilde oturum bilgisi tutmayan (stateless) Restful servis odaklı bir mimaride geliştirilmiştir.

Bin Sorgulama

JSON tabanlı olarak çalışan bir restful servisidir. Türkiye genelinde tanımlı olan tüm yerli kartlara ait BIN numaraları için sorgulama yapılmasına izin verir. Bu servise sorgulanmak istenen kredi veya debit kart numarasının ilk 6 hanesi (Bin Numarası), karttan tahsil edilecek tutar ve threeD/nonSecure bilgisi iletilerek, bu bin numarası için üye işyeri bazlı PosFix'deki konfigürasyona istinaden taksit desteği olup olmadığı, taksit olması durumunda tahsil edilecek tutar üzerine eklenecek komisyon bilgisi gibi bilgiler elde edilir.

Bin sorgulama V2 servisinin genel kullanımı, kart numarası girilmeye başladığı anda karta yönelik taksit imkanlarının sorgulanmasıdır.
Bin numarası sorgulaması için kredi/debit kart numarasının ilk 6 hanesi, karttan tahsil edilecek tutar bilgisi ve ödemenin threeD/nonSecure bilgisi JSON formatında hazırlanarak, https://api.posfix.com.tr/rest/payment/bin/lookup/v2 adresine gerekli güvenlik bilgileri http header bilgisine eklenerek post edilir. PosFix işlem sonucunu yine JSON formatında mağazaya döner.

PosFix Bin Sorgulama Servisi Rest bir servis olup JSON medya tipinde istekleri kabul etmektedir.

İstek Güvenlik Bilgileri

HttpHeader Güvenlik Bilgileri

PosFix, güvenlik kontrolleri için, mağazadan bazı bilgileri HTTP Header alanında istemektedir. Aşağıda bu bilgilerin tanımları bulunmaktadır:

Parametre Adı Açıklama Opsiyonel/Zorunlu
transactionDate

İstek zamanı “yyyy-MM-dd HH:mm:ss“ formatındadır. İşlem zaman aşımına uğramış ise istek reddedilir.

Zorunlu
version

Entegrasyon versiyon bilgisidir. “1.0” olarak gönderilmelidir.

Zorunlu
token

“publicKey:hash” bilgisidir.
Hash bilgisi; "privateKey + binNumber + transactionDate" alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonun base64 methodu ile encode edilmesi sonucunda oluşur.

Zorunlu

Servis Girdi Parametreleri

Parametre Adı Açıklama Opsiyonel/Zorunlu
binNumber

Kredi veya Debit Kart numarasının ilk 6 hanesi. Örnek: 428220

Zorunlu
amount

Kredi kartından tahsil edilecek tutar.

Zorunlu
threeD

Ödemenin threeD/nonSecure bilgisi.

Zorunlu

Servis Çıktı Parametreleri

Parametre Adı Açıklama
result

İşlem sonucu
1 - İşlem Başarılı
0 - İşlem Başarısız

errorMessage Hata Mesajı
errorCode Hata Kodu
bankId Banka id bilgisi. Tüm Türkiye de geçerli olan banka ID bilgisidir.
bankName Banka adı bilgisi
cardFamilyName Kart aile bilgisi
supportsInstallment

Taksit destekleme durumu
0 – Kart taksitli işlem desteklememektedir.
1 – Kart taksitli işlem desteklemektedir.
Bu alan değeri hem mağazanın taksit aktifliği hem de ilgili bin numarasının taksit desteğine göre hesaplanmaktadır.
Ek olarak eğer kart Ticari kart ise taksit bilgisi mağaza taksit aktifliğine bakılmaksızın hesaplanmaktadır.

type Kart tipi
0 – Kart tipi bilinmiyor
1 – Kredi Kartı
2 – Debit Kart
serviceProvider Servis sağlayıcısı
0 – Servis sağlayıcı bilinmiyor.
1 – Mastercard
2 – Visa
3 – Amex
4 - Troy
cardThreeDSecureMandatory 3D güvenlik adımı zorunluluğu. Bu alan değeri kart ailesinin 3D Secure zorunluluğuna bağlı olarak zorunlu olabilir.
0 – 3D Secure zorunlu değil.
1 – 3D Secure zorunlu
merchantThreeDSecureMandatory 3D güvenlik adımı zorunluluğu. Bu alan değeri mağazanın 3D Secure zorunluluğuna bağlı olarak zorunlu olabilir.
0 – 3D Secure zorunlu değil.
1 – 3D Secure zorunlu
cvcMandatory CVC/CVV bilgisinin gönderim zorunluluğu.
Bu alan değeri hem mağazanın CVC/CVV zorunluluğuna hem de bin numarasının CVC/CVV zorunluluğuna bağlı olarak zorunlu olabilir.
0 – CVC/CVV’siz ödeme kabulü yapılabilir.
1 – CVC/CVV gönderimi zorunludur.
businessCard Ticari kart bilgisi
1 – Ticari kart
0 – Bireysel kart
Ticari kartlar ile mağaza taksit aktifliği kapalı olsa dahi taksit yapılabilir. Desteklenen taksitler için supportedInstallments alanını kullanabilirsiniz.
installmentDetail Desteklenen taksit listesidir.
Bu alan değeri hem mağazanın taksit aktifliği hem de ilgili bin numarasının taksit desteğine göre hesaplanmaktadır.

Örnek Çağrılar


            //Request
            BinNumberInquiryRequest request = new BinNumberInquiryRequest();
            request.binNumber = "492130";
            BinNumberInquiryResponse  response = BinNumberInquiryRequest.Execute(request, settings);
                

    //request
                private static final String PUBLIC_KEY = "publick_key";
                private static final String PRIVATE_KEY = "private_key";
                private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
                private static final String REQUEST_URL = "https://api.posfix.com.tr/rest/payment/bin/lookup/v2";


                public static void main(String[] args) throws Exception {
                getInstallmentAndAmountInfo();
                }

                private static void getInstallmentAndAmountInfo() throws Exception {
                RequestObject requestObject = createRequestObject();
                String timeStamp = getTransactionDate();
                String hashValues = (PRIVATE_KEY + requestObject.getBinNumber() + timeStamp);
                String hash = StringUtil.getSHA1Text(hashValues); String token = PUBLIC_KEY + ":" + hash;
                RestTemplate restTemplate = new RestTemplate();
                restTemplate.getMessageConverters().add(0, new
                StringHttpMessageConverter(Charset.forName("UTF-8")));
                MultiValueMap headers = new LinkedMultiValueMap<>();
                headers.add(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_UTF8_VALUE);
                headers.add(DirectPaymentIntegrationFieldNames.TRANSACTION_DATE.getText(), timeStamp);
                headers.add(DirectPaymentIntegrationFieldNames.LANGUAGE.getText(), "tr-TR");
                headers.add(DirectPaymentIntegrationFieldNames.VERSION.getText(), "1.0");
                headers.add(DirectPaymentIntegrationFieldNames.TOKEN.getText(), token);
                RequestEntity requestEntity = new RequestEntity<>(requestObject, headers,
                     HttpMethod.POST, UriComponentsBuilder.fromHttpUrl(REQUEST_URL).build().toUri());
                ResponseEntity
                 responseEntity = restTemplate.exchange(requestEntity, String.class);

                }

                private static RequestObject createRequestObject() {
                RequestObject obj = new RequestObject();
                obj.setBinNumber("450634");
                obj.setAmount("5000");
                obj.setThreeD(true);
                return obj;
                }

                private static String getTransactionDate() {
                return new SimpleDateFormat(DATE_FORMAT).format(new Date());
                }

//request
$request = new BinNumberInquiryRequest();
$request->binNumber="492130";
$response=BinNumberInquiryRequest::execute($request,$settings);


//request
posfix.BinNumberInquiryRequest(492130).then(requestResult => {
res.json(requestResult)
}).catch(err => {
throw new Error(err)
})


//request
      req=Binnumberrequest.new
      req.binNumber =  params[:binNumber]
      @@returnData= req.execute(req,@@settings)


//request
req = BinNumberRequest()
req.binNumber = request.POST.get('binNumber')
response = req.execute(req, config)


    //Request
    {
    "binNumber" : "428220",
    "amount" : "5000",
    "threeD" : true
    }
   //Response
    {
    "bankId": 62,
    "bankName": "Garanti Bankası",
    "cardFamilyName": "BONUS",
    "supportsInstallment": 1,
    "type": 1,
    "serviceProvider": 2,
    "result": 1,
    "cardThreeDSecureMandatory": 0,
    "merchantThreeDSecureMandatory": 0,
    "cvcMandatory": 0,
    "businessCard": 0,
    "installmentDetail": [
    {
    "requiredAmount": "5152",
    "requiredCommissionAmount": "148",
    "installment": 1,
    "merchantCommissionRate": "2.95"
    },
    {
    "requiredAmount": "5265",
    "requiredCommissionAmount": "252",
    "installment": 2,
    "merchantCommissionRate": "5.03"
    },
    {
    "requiredAmount": "5352",
    "requiredCommissionAmount": "329",
    "installment": 3,
    "merchantCommissionRate": "6.58"
    },
    {
    "requiredAmount": "5445",
    "requiredCommissionAmount": "409",
    "installment": 4,
    "merchantCommissionRate": "8.17"
    },
    {
    "requiredAmount": "5537",
    "requiredCommissionAmount": "485",
    "installment": 5,
    "merchantCommissionRate": "9.7"
    },
    {
    "requiredAmount": "5630",
    "requiredCommissionAmount": "560",
    "installment": 6,
    "merchantCommissionRate": "11.19"
    }
    ]
    }
API ile (3D Secure olmadan) Ödeme

Mağaza, müşteri üyelik bilgilerini ve kart bilgilerini aldıktan sonra, ödeme verilerini XML formatında hazırlayarak https://api.posfix.com.tr/rest/payment/auth web servis adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder. PosFix işlem sonucunu yine XML formatında mağazaya döner.

PosFix API ile Ödeme (3D Secure Olmadan) Servisi Rest bir servis olup XML medya tipinde istekleri kabul etmektedir.
Normal ödeme işlemlerinde * ile belirtilen alanlardan sadece CardOwnerName, CardNumber,cardExpireMonth,cardExpireYear,cardCVC gönderilecektir. UserId ve CardID "" (String.Empty) olarak gönderilecektir.
Kayıtlı kart ile ödeme servislerinde * ile olan alanlardan sadece userId ve CardId gönderilecektir. CardOwnerName, CardNumber,cardExpireMonth,cardExpireYear,cardCVC alanları "" (String.Empty) olarak gönderilecektir.
Önemli Notlar
  • Servisleri kullanabilmek için PosFix kurum başvuru aşamalarını tamamlamış olmanız gerekmektedir. Başvuru adımlarını tamamladıktan sonra kurum panelinizden alabileceğiniz public ve private key bilgileri ile servisleri kullanabilirsiniz.
  • Ödeme tahsilatı alabilmek için PosFix destek birimi ile iletişme geçip 3D Secure olmadan ödeme alımı yapmak istediğinizi belirtmiş olmanız gerekmektedir.
  • Yurtdışı kartları ile ödeme alımı gerçekleştirmek için PosFix destek birimi ile iletişime geçip yurtdışı kartlarından ödeme alımı gerçekleştirmek istediğinizi belirtmiş olmanız gerekmektedir.
  • Tek tıkla ödeme özelliğini kullanmak için PosFix destek birimi ile iletişime geçip tek tıkla ödeme özelliği kullanmak istediğinizi belirtmiş olmanız gerekmektedir. Kart kayıt, sorgulama vb. cüzdan servisleri ayrı dokümanda anlatılmıştır.
  • Tek tıkla ödeme entegrasyonu öncesinde hali hazırda direkt ödeme entegrasyonunuz bulunuyor ise sadece yeni parametreleri eklemeniz ve ödeme isteğinde yollanacak hash değerinde yeni parametreleri hesaplamaya dahil etmeniz gerekmektedir.
  • Entegrasyon işlemlerinde encoding “UTF-8” kullanılması gerekmektedir. Özellikle token parametresinden kaynaklı alınan hataların büyük çoğunluğu encoding problemlerinden kaynaklanmaktadır. Ek olarak XML dili için olan özel karakterlerin gönderiminde hata almamak için yine encoding yapılması gerekmektedir.
  • Entegrasyonda bulunan opsiyonel alanların gönderimi, ödeme sahtekârlığının (fraud) önlenebilmesi açısından önem arz etmektedir. Mağazanız için chargeback riskini en aza indirebilmeniz açısından tüm alanları eksiksiz ve doğru veriler ile göndermenizi rica ederiz.
  • Entegrasyon dahilinde gönderilen input alanlarında, kart numarası alanı dışında kart numarası bilgisi gönderilmesi dahilinde işlem reddedilecektir.
  • Başarılı entegrasyon sonrası hata mesajlarının kullanıcıya gösterilmesini öneririz. Hata mesajları kullanıcı dostu mesajlardır.

İstek Güvenlik Bilgileri

PosFix, güvenlik kontrolleri için, mağazadan bazı bilgileri HTTP Header alanında istemektedir. Aşağıda bu bilgilerin tanımları bulunmaktadır:

HttpHeader Güvenlik Bilgileri

PosFix, güvenlik kontrolleri için, mağazadan bazı bilgileri HTTP Header alanında istemektedir. Aşağıda bu bilgilerin tanımları bulunmaktadır:

HttpHeader Güvenlik Parametreleri
Parametre Adı Açıklama Opsiyonel/Zorunlu
transactionDate

İstek zamanı. “yyyy-MM-dd HH:mm:ss“ formatındadır. İşlem zaman aşımına uğramış ise istek reddedilir. Örnek: “2014-08-12 23:59:59” İlgili kütüphane içindeki GetTransactionDate() fonksiyonundan elde edilebilir.

Zorunlu
version

Entegrasyon versiyon bilgisidir. “1.0” olarak gönderilmelidir.

Zorunlu
token

“publicKey:hash” bilgisidir. Hash bilgisi; "privateKey + orderId + amount + mode + (*)cardOwnerName + (*)cardNumber + (*)cardExpireMonth + (*)cardExpireYear + (*)cardCvc + (*)userId + (*)cardId + purchaser.name + purchaser.surname + purchaser.email + transactionDate" alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonun base64 methodu ile encode edilmesi sonucunda oluşur. Hash oluşturma fonksiyonu örnekleri burada anlatılmıştır.
token = public key + ‘:’ + base64[ sha1[("privateKey + orderId + amount + mode + (*)cardOwnerName + (*)cardNumber + (*)cardExpireMonth + (*)cardExpireYear + (*)cardCvc + (*)userId + (*)cardId + purchaser.name + purchaser.surname + purchaser.email + transactionDate")]]
token = “ASKJH98675ASDASDPO:jhsa/gd+89dfg0df6SA/dfg8967==”

Zorunlu

Servis Girdi Parametreleri

Servis içinde ileticek Girdi (Input) Parametreleri
Parametre Adı Açıklama Opsiyonel/Zorunlu
mode

İstek modu. “P” veya “T” gönderilmelidir.
“P” - Gerçek Ödeme
“T” – Test Ödemesi
Entegrasyon işlemlerinizde mode alanını “T” olarak göndererek test işlemlerinizi gerçekleştirebilirsiniz.
ÖNEMLİ NOT: Test modunda iken ödemeler banka poslarından tahsil edilmez. Test işlemleriniz sonunda gerçek ödeme tahsilatı için mode alanını “P” olarak göndermeyi unutmayınız.

Zorunlu
threeD

3D Secure olmadan gerçekleştirilen ödeme işlemlerinde “false” olarak gönderilmelidir.

Zorunlu
orderId

Mağazanın ilgili sipariş ile ilişkilendirdiği her bir istek için benzersiz olan tekil sipariş kodu. Maksimum Uzunluk: 100 karakter.

Zorunlu
cardOwnerName

Kart üzerindeki ad. Minimum Uzunluk: 4 - Maksimum Uzunluk: 100 karakter.

*
cardNumber

Kart numarası. Minimum Uzunluk: 12 - Maksimum Uzunluk: 19 karakter.

*
cardExpireMonth

Kart son kullanma tarihi ay parametresi Uzunluk: 2 karakter. Örnek; 05,11, vb.

*
cardExpireYear

Kart son kullanma tarihi yıl parametresi. Uzunluk: 2 karakter. Örnek; 14,19, vb.

*
cardCvc

Kartın arkasındaki güvenlik kodu: Uzunluk: MasterCard ve Visa kartları için 3 karakter, Amex kartlar için 3 veya 4 karakter.

*
userId

Mağaza kullanıcısını referans eden bilgi. Maksimum uzunluk 255 karakter.
Cüzdan servisleri ile daha önceden kaydedilmiş olan kayıtlı kart ile tek tıkla ödeme işlemi gerçekleştirilmek istendiğinde gönderilmelidir.

*
cardId

Mağaza kullanıcısının kartını referans eden kart kaydetme işlemi sonucunda oluşan id bilgisi.
Cüzdan servisleri ile daha önceden kaydedilmiş olan kayıtlı kart ile tek tıkla ödeme işlemi gerçekleştirilmek istendiğinde gönderilmelidir.

*
installment

Taksit Sayısı. Minimum Uzunluk: 1 - Maksimum Uzunluk: 2 karakter.Desteklenen taksit sayıları: 1,2,3,4,5,6,7,8,9,10,11,12

Zorunlu
amount

Karttan çekilecek olan toplam sipariş tutarı. Sipariş tutarı kuruş ayracı olmadan gönderilmelidir. Örneğin; 1 TL 100, 12 1200, 130 13000, 1.05 105, 1.2 120 olarak gönderilmelidir.

Zorunlu
echo

Mağazaya istek sonucunda geri gönderilecek bilgi alanıdır. Maksimum Uzunluk: 255.

Opsiyonel
vendorId

PosFix tarafından sağlanan altyapı sağlayıcı id bilgisi. Mağaza kendi yazılımını kullanıyor ise bu alan gönderilmemelidir.

Opsiyonel
purchaser

Müşteri Bilgileri. Aşağıdaki tabloda iç parametreleri anlatılmıştır.

Opsiyonel
products

Ürün Bilgileri. Aşağıdaki tabloda iç parametreleri anlatılmıştır.

Zorunlu
Kayıtsız kart ile ödeme isteğinde cardOwnerName, cardNumber, cardExpireMonth, cardExpireYear, cardCvc alanları zorunludur. userId ve cardId bilgileri gönderilmemelidir ve token hesaplaması yapılırken userId ve cardId bilgileri String “” olarak hesaplamaya eklenmelidir.
Kayıtlı kart ile ödeme isteğinde userId ve cardId bilgileri zorunludur. cardOwnerName, cardNumber, cardExpireMonth, cardExpireYear alanları gönderilmemelidir ve token hesaplaması yapılırken String “” olarak hesaplamaya eklenmelidir. cardCvc alanı kayıtlı kart ile ödeme talebinde opsiyoneldir, gönderilir ise token hesaplamasına dahil edilmelidir.
Müşteri Bilgileri(Purchaser)
Parametre Adı Açıklama Opsiyonel/Zorunlu
name

Müşteri isim bilgisi. Minimum Uzunluk: 3 - Maksimum Uzunluk: 50. Zorunlu

Zorunlu
surname Müşteri soyisim bilgisi. Minimum Uzunluk: 3 - Maksimum Uzunluk: 50. Zorunlu
email Müşteri e-posta bilgisi. E-posta adresi geçerli bir e-posta adresi olmalıdır. Minimum Uzunluk: 3 - Maksimum Uzunluk: 100. Zorunlu
clientIp Müşteri istemci IP adresi Zorunlu
birthDate Müşteri doğum tarihi bilgisi. “yyyy-MM-dd” formatında olmalıdır. Opsiyonel
gsmNumber Müşteri cep telefonu bilgisi. Opsiyonel
tcCertificate Müşteri T.C. Kimlik Numarası bilgisi. 11 haneli olmalıdır. Opsiyonel
invoiceAddress Fatura adresi bilgileri. Aşağıdaki tabloda iç parametreleri anlatılmıştır. Opsiyonel
shippingAddress Kargo adresi bilgileri.Aşağıdaki tabloda iç parametreleri anlatılmıştır. Opsiyonel
Müşteri Fatura Adresi Bilgileri (invoiceAddress)
Parametre Adı Açıklama Opsiyonel/Zorunlu
name İsim bilgisi. Opsiyonel
surname Soyisim bilgisi. Opsiyonel
address Adres bilgisi. Opsiyonel
zipcode Posta kodu bilgisi. Opsiyonel
city Şehir bilgisi. Opsiyonel
country Ülke bilgisi. ISO 3166-1 alpha-2 standardındaki ülke kodu. Türkiye için “TR”. Opsiyonel
tcCertificate T.C. Kimlik numarası bilgisi. Opsiyonel
taxNumber Vergi numarası bilgisi Opsiyonel
taxOffice Vergi dairesi bilgisi Opsiyonel
companyName Şirket ismi bilgisi Opsiyonel
phoneNumber Telefon bilgisi Opsiyonel
Müşteri Kargo Adresi Bilgileri (shippingAddress)
Parametre Adı Açıklama Opsiyonel/Zorunlu
name İsim bilgisi. Opsiyonel
surname Soyisim bilgisi. Opsiyonel
address Adres bilgisi. Opsiyonel
zipcode Posta kodu bilgisi. Opsiyonel
city Şehir bilgisi. Opsiyonel
country Ülke bilgisi. ISO 3166-1 alpha-2 standardındaki ülke kodu. Türkiye için “TR”. Opsiyonel
phoneNumber Telefon bilgisi Opsiyonel
Ürün Bilgileri (products)
Parametre Adı Açıklama Opsiyonel/Zorunlu
productCode Ürün kodu bilgisi. Opsiyonel
productName Ürün isim bilgisi. Opsiyonel
quantity Ürün adet bilgisi. Opsiyonel
price Ürün birim fiyat bilgisi. Opsiyonel
Önemli NOT: En az bir adet ürün (product) bilgisi gönderimi zorunludur.

Servis Çıktı Parametreleri

Servis Çıktı (Output) Parametreleri
Parametre Adı Açıklama
result

İşlem sonucu
1 - İşlem Başarılı
0 - İşlem Başarısız

errorMessage Hata Mesajı
errorCode Hata Kodu
publicKey Mağaza açık anahtar bilgisi.
echo Mağazanın istek bilgisinde iletmiş olduğu echo verisi.
transactionDate Hash hesaplamasında kullanılacak zaman bilgisi. “yyyy-MM-dd HH:mm:ss“ formatındadır.
mode

İstek modu.
“P” - Gerçek Ödeme
“T” – Test Ödemesi

orderId Mağaza sipariş Id
amount Sipariş toplam tutar bilgisi.
hash “orderId + result + amount + mode + errorCode + errorMessage + transactionDate + publicKey + privateKey” alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonun base64 methodu ile encode edilmesi sonucunda bu değer oluşur.
Not 1: İşlem sonucunda sizlere gönderilen hash bilgisini tarafınıza gelen parametreler ile tekrar hesaplayıp bu alandaki bilgi ile karşılaştırılması gerekmektedir. Eğer aynı hash değeri oluşmuyor ise işlemi reddetmelisiniz. Aksi durumda cevap bilgisi iletiminde üçüncü kişilerin araya girerek sahtekarlık yapabilme olasılığı ortaya çıkacaktır.
Not 2: Hash bilgisi hesaplamasında null olan veriler, String “” olarak hesaplanmıştır.
Not 3: İstek bilgileri içerisinde mağazanın tanımamasından kaynaklı olarak mağaza bilgileri yoksa cevap bilgisinde hash ve transactionDate alanları gönderilmeyecektir.

Örnek Çağrılar


            //Request
            var request = new ApiPaymentRequest();
            request.OrderId = Guid.NewGuid().ToString();
            request.Echo = "Echo";
            request.Mode = settings.Mode;
            request.Amount = "10000"; // 100 tL
            request.CardOwnerName = "Fatih Coşkun";
            request.CardNumber = "4282209004348015";
            request.CardExpireMonth = "05";
            request.CardExpireYear = "18";
            request.Installment = "1";
            request.Cvc = "000";
            request.ThreeD = "false";
            #region Sipariş veren bilgileri
            request.Purchaser = new Purchaser();
            request.Purchaser.Name = "Ahmet";
            request.Purchaser.SurName = "Veli";
            request.Purchaser.BirthDate = "1986-07-11";
            request.Purchaser.Email = "[email protected]";
            request.Purchaser.GsmPhone = "5881231212";
            request.Purchaser.IdentityNumber = "1234567890";
            request.Purchaser.ClientIp = "127.0.0.1";
            #endregion
            #region Fatura bilgileri
            request.Purchaser.InvoiceAddress = new PurchaserAddress();
            request.Purchaser.InvoiceAddress.Name = "Ahmet";
            request.Purchaser.InvoiceAddress.SurName = "Veli";
            request.Purchaser.InvoiceAddress.Address = "Mevlüt Pehlivan Mah. PosFix Plaza Şişli";
            request.Purchaser.InvoiceAddress.ZipCode = "34782";
            request.Purchaser.InvoiceAddress.CityCode = "34";
            request.Purchaser.InvoiceAddress.IdentityNumber = "1234567890";
            request.Purchaser.InvoiceAddress.CountryCode = "TR";
            request.Purchaser.InvoiceAddress.TaxNumber = "123456";
            request.Purchaser.InvoiceAddress.TaxOffice = "Kozyatağı";
            request.Purchaser.InvoiceAddress.CompanyName = "PosFix";
            request.Purchaser.InvoiceAddress.PhoneNumber = "2122222222";
            #endregion
            #region Kargo Adresi bilgileri
            request.Purchaser.ShippingAddress = new PurchaserAddress();
            request.Purchaser.ShippingAddress.Name = "Ahmet";
            request.Purchaser.ShippingAddress.SurName = "Veli";
            request.Purchaser.ShippingAddress.Address = "Mevlüt Pehlivan Mah. PosFix Plaza Şişli";
            request.Purchaser.ShippingAddress.ZipCode = "34782";
            request.Purchaser.ShippingAddress.CityCode = "34";
            request.Purchaser.ShippingAddress.IdentityNumber = "1234567890";
            request.Purchaser.ShippingAddress.CountryCode = "TR";
            request.Purchaser.ShippingAddress.PhoneNumber = "2122222222";
            #endregion
            #region Ürün bilgileri
            request.Products = new List();
            Product p = new Product();
            p.Title = "Telefon";
            p.Code = "TLF0001";
            p.Price = "5000";
            p.Quantity = 1;
            request.Products.Add(p);
            p = new Product();
            p.Title = "Bilgisayar";
            p.Code = "BLG0001";
            p.Price = "5000";
            p.Quantity = 1;
            request.Products.Add(p);
            #endregion
            ApiPaymentResponse response = ApiPaymentRequest.Execute(request, settings);
                

//request
            ApiPaymentRequest request = new ApiPaymentRequest();
            UUID uuid = UUID.randomUUID();
            request.OrderId = uuid.toString();
            request.echo = "Echo";
            request.mode = settings.Mode;
            request.Amount = "10000"; // 100 tL
            request.CardOwnerName = "Fatih Coşkun";
            request.CardNumber = "4282209027132016";
            request.CardExpireMonth = "05";
            request.CardExpireYear = "18";
            request.Installment = "1";
            request.Cvc = "000";
            request.ThreeD = "false";
            request.UserId="";
            request.CardId="";
            request.Purchaser = new Purchaser();
            request.Purchaser.Name = "Ahmet";
            request.Purchaser.SurName = "Veli";
            request.Purchaser.BirthDate = "1986-07-11";
            request.Purchaser.Email = "[email protected]";
            request.Purchaser.GsmPhone = "5881231212";
            request.Purchaser.IdentityNumber = "1234567890";
            request.Purchaser.ClientIp = "127.0.0.1";

            request.Purchaser.InvoiceAddress = new PurchaserAddress();
            request.Purchaser.InvoiceAddress.Name = "Ahmet";
            request.Purchaser.InvoiceAddress.SurName = "Veli";
            request.Purchaser.InvoiceAddress.Address = "Mevlüt Pehlivan Mah. PosFix Plaza Şişli";
            request.Purchaser.InvoiceAddress.ZipCode = "34782";
            request.Purchaser.InvoiceAddress.CityCode = "34";
            request.Purchaser.InvoiceAddress.IdentityNumber = "1234567890";
            request.Purchaser.InvoiceAddress.CountryCode = "TR";
            request.Purchaser.InvoiceAddress.TaxNumber = "123456";
            request.Purchaser.InvoiceAddress.TaxOffice = "Kozyatağı";
            request.Purchaser.InvoiceAddress.CompanyName = "PosFix";
            request.Purchaser.InvoiceAddress.PhoneNumber = "2122222222";

            request.Purchaser.ShippingAddress = new PurchaserAddress();
            request.Purchaser.ShippingAddress.Name = "Ahmet";
            request.Purchaser.ShippingAddress.SurName = "Veli";
            request.Purchaser.ShippingAddress.Address = "Mevlüt Pehlivan Mah. PosFix Plaza Şişli";
            request.Purchaser.ShippingAddress.ZipCode = "34782";
            request.Purchaser.ShippingAddress.CityCode = "34";
            request.Purchaser.ShippingAddress.IdentityNumber = "1234567890";
            request.Purchaser.ShippingAddress.CountryCode = "TR";
            request.Purchaser.ShippingAddress.PhoneNumber = "2122222222";

            request.product = new ArrayList();
            Product p = new Product();
            p.Title = "Telefon";
            p.Code = "TLF0001";
            p.Price = "5000";
            p.Quantity = "1";
            request.product.add(p);
            p = new Product();
            p.Title = "Bilgisayar";
            p.Code = "BLG0001";
            p.Price = "5000";
            p.Quantity = "1";
            request.product.add(p);
            ApiPaymentResponse response = ApiPaymentRequest.Execute(request, settings);

                //request
$request = new ApiPaymentRequest();
$request->OrderId = Helper::Guid();
$request->Echo = "Echo";
$request->Mode = $settings->Mode;
$request->Amount = "10000"; // 100 tL
$request->CardOwnerName = "Fatih Coşkun";
$request->CardNumber = "4282209004348015";
$request->CardExpireMonth = "05";
$request->CardExpireYear = "18";
$request->Installment = "1";
$request->Cvc = "000";
$request->ThreeD = "false";
#region Sipariş veren bilgileri
$request->Purchaser = new Purchaser();
$request->Purchaser->Name = "Ahmet";
$request->Purchaser->SurName = "Veli";
$request->Purchaser->BirthDate = "1986-07-11";
$request->Purchaser->Email = "[email protected]";
$request->Purchaser->GsmPhone = "5881231212";
$request->Purchaser->IdentityNumber = "1234567890";
$request->Purchaser->ClientIp = Helper::get_client_ip();
#endregion
#region Fatura bilgileri
$request->Purchaser->InvoiceAddress = new PurchaserAddress();
$request->Purchaser->InvoiceAddress->Name = "Ahmet";
$request->Purchaser->InvoiceAddress->SurName = "Veli";
$request->Purchaser->InvoiceAddress->Address = "Mevlüt Pehlivan Mah-> PosFix Plaza Şişli";
$request->Purchaser->InvoiceAddress->ZipCode = "34782";
$request->Purchaser->InvoiceAddress->CityCode = "34";
$request->Purchaser->InvoiceAddress->IdentityNumber = "1234567890";
$request->Purchaser->InvoiceAddress->CountryCode = "TR";
$request->Purchaser->InvoiceAddress->TaxNumber = "123456";
$request->Purchaser->InvoiceAddress->TaxOffice = "Kozyatağı";
$request->Purchaser->InvoiceAddress->CompanyName = "PosFix";
$request->Purchaser->InvoiceAddress->PhoneNumber = "2122222222";
#endregion
#region Kargo Adresi bilgileri
$request->Purchaser->ShippingAddress = new PurchaserAddress();
$request->Purchaser->ShippingAddress->Name = "Ahmet";
$request->Purchaser->ShippingAddress->SurName = "Veli";
$request->Purchaser->ShippingAddress->Address = "Mevlüt Pehlivan Mah-> PosFix Plaza Şişli";
$request->Purchaser->ShippingAddress->ZipCode = "34782";
$request->Purchaser->ShippingAddress->CityCode = "34";
$request->Purchaser->ShippingAddress->IdentityNumber = "1234567890";
$request->Purchaser->ShippingAddress->CountryCode = "TR";
$request->Purchaser->ShippingAddress->PhoneNumber = "2122222222";
#endregion
#region Ürün bilgileri
$request->Products =  array();
$p = new Product();
$p->Title = "Telefon";
$p->Code = "TLF0001";
$p->Price = "5000";
$p->Quantity = 1;
$request->Products[0]=$p;
$p = new Product();
$p->Title = "Bilgisayar";
$p->Code = "BLG0001";
$p->Price = "5000";
$p->Quantity = 1;
$request->Products[1]=$p;
#endregion
$response=ApiPaymentRequest::execute($request,$settings);



//Request
                                                  const obj = {
echo: "",
amount: "10000",
publicKey: settings.publicKey,
orderId: Guid.raw(),
mode: settings.mode,
threeD: "false",
cardId: "",
userId: "",
cardOwnerName : "Fatih Coşkun",
cardNumber : "4282209004348015",
cardExpireMonth : "05",
cardExpireYear : "18",
cardCvc : "000",
installment : "1",
products: [{
productName: "Telefon",
productCode: "TLF0001",
quantity: "1",
price: "5000"
},
{
productName: "Bilgisayar",
productCode: "BIL0002",
quantity: "1",
price: "5000"
}
],
purchaser: {
birthDate: "1986-07-11",
gsmNumber: "5881231212",
tcCertificate: "1234567890",
name : "Ahmet",
surname : "Veli",
email : "[email protected]",
clientIp : "123.58.7.4",
invoiceAddress: {
name: "Ahmet",
surname: "Veli",
address: "Mevlüt Pehlivan Mah. PosFix Plaza Şişli",
zipcode: "34782",
city: "34",
tcCertificate: "12345678901",
country: "tr",
taxNumber: "123456890",
taxOffice: "Şişli",
companyName: "PosFix",
phoneNumber: "2123886600"
},
shippingAddress: {
name: "Ahmet",
surname: "Veli",
address: "Mevlüt Pehlivan Mah. PosFix Plaza Şişli",
zipcode: "34782",
city: "34",
country: "tr",
phoneNumber: "2123886600"
}
}
}

posfix.ApiPaymentRequest(obj).then(results => {
parseString(results, function (err, result) {
if (err) throw new Error(err);
res.json(result)
});
}).catch(err=>{
console.log(err)
})


//request

    req=Apipaymentrequest.new

    req.OrderId = SecureRandom.uuid
    req.Echo = "Echo"
    req.Mode =  @@settings.Mode
    req.Amount = "10000" # 100 tL
    req.CardOwnerName =params[:nameSurname]
    req.CardNumber = params[:cardNumber]
    req.CardExpireMonth = params[:month]
    req.CardExpireYear = params[:year]
    req.Installment = params[:installment]
    req.Cvc = params[:cvc]
    req.ThreeD = "false"
    req.UserId=""
    req.CardId=""

    #region Sipariş veren bilgileri
    req.Purchaser = Purchaser.new
    req.Purchaser.Name = "Ahmet"
    req.Purchaser.SurName = "Veli"
    req.Purchaser.BirthDate = "1986-07-11"
    req.Purchaser.Email = "[email protected]"
    req.Purchaser.GsmPhone = "5881231212"
    req.Purchaser.IdentityNumber = "1234567890"
    req.Purchaser.ClientIp = "127.0.0.1"
    #endregion
    #region Fatura bilgileri
    req.Purchaser.Invoiceaddress = Purchaseraddress.new
    req.Purchaser.Invoiceaddress.Name = "Ahmet"
    req.Purchaser.Invoiceaddress.SurName = "Veli"
    req.Purchaser.Invoiceaddress.Address = "Mevlüt Pehlivan Mah. PosFix Plaza Şişli"
    req.Purchaser.Invoiceaddress.ZipCode = "34782"
    req.Purchaser.Invoiceaddress.CityCode = "34"
    req.Purchaser.Invoiceaddress.IdentityNumber = "1234567890"
    req.Purchaser.Invoiceaddress.CountryCode = "TR"
    req.Purchaser.Invoiceaddress.TaxNumber = "123456"
    req.Purchaser.Invoiceaddress.TaxOffice = "Kozyatağı"
    req.Purchaser.Invoiceaddress.CompanyName = "PosFix"
    req.Purchaser.Invoiceaddress.PhoneNumber = "2122222222"
    #endregion
    #region Kargo Adresi bilgileri
    req.Purchaser.Shippingaddress = Purchaseraddress.new
    req.Purchaser.Shippingaddress.Name = "Ahmet"
    req.Purchaser.Shippingaddress.SurName = "Veli"
    req.Purchaser.Shippingaddress.Address = "Mevlüt Pehlivan Mah. PosFix Plaza Şişli"
    req.Purchaser.Shippingaddress.ZipCode = "34782"
    req.Purchaser.Shippingaddress.CityCode = "34"
    req.Purchaser.Shippingaddress.IdentityNumber = "1234567890"
    req.Purchaser.Shippingaddress.CountryCode = "TR"
    req.Purchaser.Shippingaddress.PhoneNumber = "2122222222"
    #endregion
    #region Ürün bilgileri
    req.Products = Array.new()
    p =Product.new
    p.Title = "Telefon"
    p.Code = "TLF0001"
    p.Price = "5000"
    p.Quantity = 1
    req.Products << p
    p =Product.new
    p.Title = "Bilgisayar"
    p.Code = "BLG0001"
    p.Price = "5000"
    p.Quantity = 1
    req.Products << p
    #endregion
    @@returnData= req.execute(req,@@settings)


//request
    api = ApiPaymentRequest()
    api.Echo = "Echo"
    api.Mode = config.Mode
    api.ThreeD = "false"
    api.OrderId = str(randint(1, 10000))
    api.Amount = "10000"
    api.CardOwnerName = request.POST.get('nameSurname')
    api.CardNumber = request.POST.get('cardNumber')
    api.CardExpireMonth = request.POST.get('month')
    api.CardExpireYear = request.POST.get('year')
    api.Installment = request.POST.get('installment')
    api.Cvc = request.POST.get('cvc')
    api.VendorId = ""
    api.UserId = ""
    api.CardId = ""
    #Sipariş veren bilgileri
    api.Purchaser = api.PurchaserClass()
    api.Purchaser.name = "Ahmet"
    api.Purchaser.surname = "Veli"
    api.Purchaser.birthDate = "1986-07-11"
    api.Purchaser.email = "[email protected]"
    api.Purchaser.gsmPhone = "5881231212"
    api.Purchaser.tcCertificate = "58812312547"
    api.Purchaser.clientIp = "127.0.0.1"
    # Fatura Bilgileri
    api.Purchaser.invoiceAddress = api.PurchaserAddress()
    api.Purchaser.invoiceAddress.name = "Ahmet"
    api.Purchaser.invoiceAddress.surname = "Veli"
    api.Purchaser.invoiceAddress.address = "Mevlüt Pehlivan Mah. PosFix Plaza Şişli"
    api.Purchaser.invoiceAddress.zipCode = "34782"
    api.Purchaser.invoiceAddress.cityCode = "34"
    api.Purchaser.invoiceAddress.tcCertificate = "1234567890"
    api.Purchaser.invoiceAddress.country = "TR"
    api.Purchaser.invoiceAddress.taxNumber = "123456"
    api.Purchaser.invoiceAddress.taxOffice = "Kozyatagi"
    api.Purchaser.invoiceAddress.companyName = "PosFix"
    api.Purchaser.invoiceAddress.phoneNumber = "2122222222"
    # Kargo Bilgileri
    api.Purchaser.shippingAddress = api.PurchaserAddress()
    api.Purchaser.shippingAddress.name = "Ahmet"
    api.Purchaser.shippingAddress.surname = "Veli"
    api.Purchaser.shippingAddress.address = "Mevlüt Pehlivan Mah. PosFix Plaza Şişli"
    api.Purchaser.shippingAddress.zipCode = "34782"
    api.Purchaser.shippingAddress.cityCode = "34"
    api.Purchaser.shippingAddress.tcCertificate = "1234567890"
    api.Purchaser.shippingAddress.country = "TR"
    api.Purchaser.shippingAddress.phoneNumber = "2122222222"
    # Ürün Bilgileri
    api.Products = []
    product1 = api.Product()
    product1.title = "Telefon"
    product1.code = "TLF0001"
    product1.price = "5000"
    product1.quantity = "1"
    api.Products.append(product1)

    product2 = api.Product()
    product2.title = "Bilgisayar"
    product2.code = "BLG0001"
    product2.price = "5000"
    product2.quantity = "1"
    api.Products.append(product2)

   message = api.execute(api, config)

            
     //Request
            <?xml version="1.0" encoding="UTF-8" ?>
<auth>
            <cardOwnerName>Ahmet Veli</cardOwnerName>
            <cardNumber>4282209004348015</cardNumber>
            <cardExpireMonth>02</cardExpireMonth>
            <cardExpireYear>17</cardExpireYear>
            <cardCvc>123</cardCvc>
            <installment>1</installment>
            <threeD>false</threeD>
            <orderId>b3091d88-6320-4446-be6c-7a1f8e6e73c7</orderId>
            <echo>Echo Bilgisi</echo>
            <amount>2500</amount>
            <mode>T</mode>
            <products>
            <product>
            <productCode>Product Code 1</productCode>
            <productName>Product Name 1</productName>
            <quantity>1</quantity>
            <price>1500</price>
                    </product>
            <product>
            <productCode>Product Code 2</productCode>
            <productName>Product Name 2</productName>
            <quantity>1</quantity>
            <price>1000</price>
                     </product>
               </products>
            <purchaser>
            <name>Ahmet</name>
            <surname>Veli</surname>
            <email>ahmet@veli.com</email>
            <clientIp>123.58.7.4</clientIp>
            <birthDate>1976-07-11</birthDate>
            <gsmNumber>5881231212</gsmNumber>
            <tcCertificate>1234567890</tcCertificate>
            <invoiceAddress>
            <name>Ahmet</name>
            <surname>Veli</surname>
            <address>Mevlüt Pehlivan Mah. PosFix Plaza Şişli</address>
            <zipcode>34782</zipcode>
            <city>34</city>
            <tcCertificate>12345678901</tcCertificate>
            <country>tr</country>
            <taxNumber>123456890</taxNumber>
            <taxOffice>Şişli</taxOffice>
            <companyName>PosFix</companyName>
            <phoneNumber>2123886600</phoneNumber>
                    </invoiceAddress>
            <shippingAddress>
            <name>Ahmet</name>
            <surname>Veli</surname>
            <address>Mevlüt Pehlivan Mah. PosFix Plaza Şişli</address>
            <zipcode>34782</zipcode>
            <city>34</city>
            <country>tr</country>
            <phoneNumber>2123886600</phoneNumber>
                    </shippingAddress>
                </purchaser>
</auth>
//Response
            <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<authResponse>
            <amount>2500</amount>
            <echo>Echo Bilgisi</echo>
            <hash>yO5ACnF9FpsiV2/WBRRsDEBDRt8=</hash>
            <mode>T</mode>
            <orderId>b3091d88-6320-4446-be6c-7a1f8e6e73c7</orderId>
            <publicKey>ABVQ03C77WPTODQN</publicKey>
            <result>1</result>
            <transactionDate>2014-01-03 21:08:51</transactionDate>
</authResponse>
          
3D Secure Ödeme

Mağaza, müşteri üyelik bilgilerini ve kart bilgilerini aldıktan sonra, ödeme verilerini JSON formatında hazırlayıp http form post yöntemi ile https://api.posfix.com.tr/rest/payment/threed adresine mağaza tarafından üretilen her bir işlem için benzersiz olan tekil sipariş kodu ile post eder.

Json verisi “ parameters ” ismi ile post edilmelidir. PosFix işlem sonucunu kullanıcının istek bilgisinde gönderdiği başarılı veya hatalı sonuç adresine http post yöntemi ile geri döner.

Servis Girdi Parametreleri

Servis içinde ileticek Girdi (Input) Parametreleri
Parametre Adı Açıklama Zorunluluk
mode

İstek modu. “P” veya “T” gönderilmelidir.
“P” - Gerçek Ödeme
“T” – Test Ödemesi

Evet
orderId

Mağazanın ilgili sipariş ile ilişkilendirdiği her bir istek için benzersiz olan tekil sipariş kodu. Maksimum Uzunluk: 100 karakter.

Evet
cardOwnerName

Kart üzerindeki ad. Minimum Uzunluk: 4 - Maksimum Uzunluk: 100 karakter.

*
cardNumber

Kart numarası. Minimum Uzunluk: 12 - Maksimum Uzunluk: 19 karakter.

*
cardExpireMonth

Kart son kullanma tarihi ay parametresi Uzunluk: 2 karakter. Örnek; 05,11, vb.

*
cardExpireYear

Kart son kullanma tarihi yıl parametresi. Uzunluk: 2 karakter. Örnek; 14,19, vb.

*
cardCvc

Kartın arkasındaki güvenlik kodu: Uzunluk: MasterCard ve Visa kartları için 3 karakter, Amex kartlar için 3 veya 4 karakter.

*
userId

Mağaza kullanıcısını referans eden bilgi.
Maksimum uzunluk 255 karakter. Cüzdan servisleri ile daha önceden kaydedilmiş olan kayıtlı kart ile tek tıkla ödeme işlemi gerçekleştirilmek istendiğinde gönderilmelidir.

*
cardId

Mağaza kullanıcısının kartını referans eden kart kaydetme işlemi sonucunda oluşan id bilgisi.
Cüzdan servisleri ile daha önceden kaydedilmiş olan kayıtlı kart ile tek tıkla ödeme işlemi gerçekleştirilmek istendiğinde gönderilmelidir

*
installment

Taksit Sayısı.
Taksit sayısı en fazla 12 olacak şekilde (1-12) arası değerler girilmelidir. Bu alan boş bırakıldığı durumda ödemeler tek çekim olacak şekilde geçecektir.

Hayır
amount

Karttan çekilecek olan toplam sipariş tutarı.
Sipariş tutarı kuruş ayracı olmadan gönderilmelidir. Örneğin; 1 TL 100, 12 1200, 130 13000, 1.05 105, 1.2 120 olarak gönderilmelidir.

Evet
echo

Mağazaya istek sonucunda geri gönderilecek bilgi alanıdır.
Maksimum Uzunluk: 255.

Hayır
successUrl

İşlemin başarılı olarak sonuçlanması durumunda alıcının yönlendirileceği adres.
Maksimum Uzunluk: 500. Önemli Not: Url bilgisi http:// veya https:// ile başlamalıdır.

Evet
failureUrl İşlemin hatalı olarak sonuçlanması durumunda alıcının yönlendirileceği adres.
Maksimum Uzunluk: 500. Önemli Not 1: Url bilgisi http:// veya https:// ile başlamalıdır.
Önemli Not 2: Failure url bilgisi hatalı ise dönülecek adres belirlenemediğinden mağazaya dönüş gerçekleşemeyecek ve boş sayfa açılacaktır.
Bu durumda göndermiş olduğunuz url bilgisini kontrol etmenizi rica ederiz.
Evet
transactionDate İstek zamanı bilgisi. “yyyy-MM-dd HH:mm:ss“ formatındadır.
İşlem zaman aşımına uğramış ise istek reddedilir. Örnek: “2014-08-12 23:59:59”
Evet
version Entegrasyon versiyon bilgisidir. “1.0” olarak gönderilmelidir. Evet
deviceUUID Hayır
token

“publicKey:hash” bilgisidir.
Hash bilgisi; "privateKey + orderId + amount + mode + (*)cardOwnerName + (*)cardNumber + (*)cardExpireMonth +
(*)cardExpireYear + (*)cardCvc + (*)userId + (*)cardId + purchaser.name + purchaser.surname + purchaser.email +
transactionDate" alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonun base64 methodu ile encode edilmesi sonucunda oluşur.
token = public key + ‘:’ + base64[ sha1[("privateKey + orderId + amount + mode + (*)cardOwnerName + (*)cardNumber + (*)cardExpireMonth + (*)cardExpireYear +
(*)cardCvc + (*)userId + (*)cardId + purchaser.name + purchaser.surname + purchaser.email + transactionDate")]] token = “ASKJH98675ASDASDPO:jhsa/gd+89dfg0df6SA/dfg8967==”

Evet
language

‘’tr-TR” veya “en-US” olarak gönderilmelidir.

Evet
vendorId

PosFix tarafından sağlanan altyapı sağlayıcı id bilgisi.
Mağaza kendi yazılımını kullanıyor ise bu alan gönderilmemelidir.

Hayır
purchaser

Müşteri Bilgileri. Aşağıdaki tabloda iç parametreleri anlatılmıştır.

Evet
products

Ürün Bilgileri. Aşağıdaki tabloda iç parametreleri anlatılmıştır.

Evet
Not:

Normal ödeme işlemlerinde “ * ” ile belirtilen alanlardan sadece cardOwnerName, cardNumber, cardExpireMonth, cardExpireYear, cardCvc gönderilecektir, userId ve cardId string empty(“”) olarak gönderilecektir.
Kayıtlı kart ödeme servislerinde “ * ” ile belirtilen alanlardan sadece userId ve cardId gönderilecektir, cardOwnerName, cardNumber, cardExpireMonth, cardExpireYear, cardCvc string empty(“”) olarak gönderilecektir.

Purchaser Parametreleri
Servis İçinde İleticek Girdi(Input) Parametreleri
Parametre Adı Açıklama Zorunluluk
name

Müşteri isim bilgisi.
Minimum Uzunluk: 3 -
Maksimum Uzunluk: 50.

Evet
surname

Müşteri soyisim bilgisi.
Minimum Uzunluk: 3 -
Maksimum Uzunluk: 50.

Evet
email

Müşteri e-posta bilgisi.
E-posta adresi geçerli bir e-posta adresi olmalıdır.
Minimum Uzunluk: 3 - Maksimum Uzunluk: 100.

Evet
clientIp

Müşteri istemci IP adresi

Evet
birthDate

Müşteri doğum tarihi bilgisi. “yyyy-MM-dd” formatında olmalıdır.

Hayır
gsmNumber

Müşteri cep telefonu bilgisi.

Hayır
tcCertificate

Müşteri T.C. Kimlik Numarası bilgisi. 11 haneli olmalıdır.

Hayır
invoiceAddress

Fatura adresi bilgileri. Aşağıdaki tabloda iç parametreleri anlatılmıştır

Hayır
shippingAddress

Kargo adresi bilgileri.
Aşağıdaki tabloda iç parametreleri anlatılmıştır.

Hayır
Products Parametreleri
Servis içinde ileticek Girdi (Input) Parametreleri
Parametre Adı Açıklama Zorunluluk
productCode

Ürün kodu bilgisi. Maksimum Uzunluk: 20.

Evet
productName

Ürün isim bilgisi. Maksimum Uzunluk: 100.

Evet
quantity

Ürün adet bilgisi.

Evet
price

Ürün birim fiyat bilgisi.

Evet
Not:

En az bir tane ürün(product) bilgisi gönderimi zorunludur.

Invoice Address Parametreleri
Servis İçinde İleticek Girdi(Input) Parametreleri
Parametre Adı Açıklama Zorunluluk
name

İsim bilgisi.
Maksimum Uzunluk: 100.

Hayır
surname

Soyisim bilgisi.
Maksimum Uzunluk: 100.

Hayır
address

Adres bilgisi.
Maksimum Uzunluk: 255.

Hayır
zipcode

Posta kodu bilgisi.
Maksimum Uzunluk: 10.

Hayır
city

Şehir bilgisi.
Maksimum Uzunluk: 50.

Hayır
country

Ülke bilgisi.
ISO 3166-1 alpha-2 standardındaki ülke kodu. Türkiye için “TR”.

Hayır
tcCertificate

T.C. Kimlik numarası bilgisi

Hayır
taxNumber

Vergi numarası bilgisi

Hayır
taxOffice

Vergi dairesi bilgisi Maksimum Uzunluk: 100

Hayır
companyName

Şirket ismi bilgisi Maksimum Uzunluk: 100.

Hayır
phoneNumber

Telefon bilgisi

Hayır
Shipping Address Parametreleri
Servis İçinde İleticek Girdi(Input) Parametreleri
Parametre Adı Açıklama Zorunluluk
name

İsim bilgisi.
Maksimum Uzunluk: 100.

Hayır
surname

Soyisim bilgisi.
Maksimum Uzunluk: 100.

Hayır
address

Adres bilgisi.
Maksimum Uzunluk: 255.

Hayır
zipcode

Posta kodu bilgisi.
Maksimum Uzunluk: 10.

Hayır
city

Şehir bilgisi.
Maksimum Uzunluk: 50.

Hayır
country

Ülke bilgisi.
ISO 3166-1 alpha-2 standardındaki ülke kodu. Türkiye için “TR”.

Hayır
phoneNumber

Telefon bilgisi

Hayır

Servis Çıktı Parametreleri

Parametre Adı Açıklama
result

İşlem sonucu
1 - İşlem Başarılı
0 - İşlem Başarısız

errorMessage Hata Mesajı
errorCode Hata kodu.
publicKey Mağaza açık anahtar bilgisi.
echo Mağazanın istek bilgisinde iletmiş olduğu echo verisi.
transactionDate Hash hesaplamasında kullanılacak zaman bilgisi. “yyyy-MM-dd HH:mm:ss“ formatındadır.
mode

İstek modu.
“P” - Gerçek Ödeme “T” – Test Ödemesi

orderId

Mağaza sipariş Id

amount

Sipariş toplam tutar bilgisi.

Örnek Çağrılar

                  
                    private static final String PUBLIC_KEY_20 = "publick_key";
                    private static final String PRIVATE_KEY_20 = "private_key";
                    private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
                    private static final String SIMPLE_DATE_FORMAT = "yyyy-MM-dd";
                    private static final String REQUEST_URL = "https://api.posfix.com.tr/rest/payment/threed";
                    private ThreeDPaymentDTO paymentDTO;
                    public void threeDPaymentTest(HttpServletResponse response) throws Exception {
                    paymentDTO = createThreeDPaymentModel(); String htmlForm = createForm();
                    response.getWriter().println(htmlForm);
                    }
                    private ThreeDPaymentDTO createThreeDPaymentModel() throws Exception {
                    ThreeDPaymentDTO dto = new ThreeDPaymentDTO();
                    dto.setOrderId(UUID.randomUUID().toString());
                    dto.setAmount("100");
                    dto.setCardOwnerName("Jack connor");
                    dto.setCardNumber("4282209004348015");
                    dto.setCardExpireMonth("07");
                    dto.setCardExpireYear("20");
                    dto.setCardCvc("123");
                    dto.setInstallment("1");
                    dto.setLanguage("tr-TR");
                    dto.setMode("P");
                    dto.setPurchaser(createPurchaser());
                    dto.setSuccessUrl("http://localhost:8082/rest/payment/threed/test/result");
                    dto.setFailureUrl("http://localhost:8082/rest/payment/threed/test/result");
                    dto.setEcho("Payment Test"); dto.setVersion("1.0");
                    dto.setTransactionDate(getTransactionDate());
                    dto.setUserId(""); dto.setCardId("");
                    dto.setVendorId("");
                    dto.setToken(createToken(dto));
                    dto.setProducts(createProduct());
                    return dto;
                    }
                    private PurchaserDTO createPurchaser() {
                    PurchaserDTO purchaser = new PurchaserDTO();
                    purchaser.setName("Jack");
                    purchaser.setSurname("Connor");
                    purchaser.setEmail("[email protected]");
                    purchaser.setBirthDate(getBirthDate());
                    purchaser.setGsmNumber("05320343434");
                    purchaser.setClientIp("192.168.0.54");
                    purchaser.setTcCertificate("99999999999");
                    purchaser.setInvoiceAddress(createInvoiceAddress());
                    purchaser.setShippingAddress(createShippingAddress());
                    return purchaser;
                    }
                    private InvoiceAddressDTO createInvoiceAddress() {
                    InvoiceAddressDTO dto = new InvoiceAddressDTO();
                    dto.setName("Jack"); dto.setSurname("Connor");
                    dto.setAddress("Kaliforniya");
                    dto.setZipcode("00001");
                    dto.setCity("Los Angeles");
                    dto.setCountry("ADB");
                    dto.setTcCertificate("99999999999");
                    dto.setTaxNumber("9999999999");
                    dto.setTaxOffice("Los Angeles");
                    dto.setCompanyName("PosFix");
                    dto.setPhoneNumber("05340343434");
                    return dto;
                    }
                    private ShippingAddressDTO createShippingAddress() {w
                    ShippingAddressDTO dto = new ShippingAddressDTO();
                    dto.setName("Jack");
                    dto.setSurname("Connor");
                    dto.setAddress("Kaliforniya");
                    dto.setZipcode("00001");
                    dto.setCity("Los Angeles");
                    dto.setCountry("ABD");
                    dto.setPhoneNumber("05340343434");
                    return dto;
                    }
                    private List createProduct() {
                    List products = new ArrayList<>();
                    ProductDTO p = new ProductDTO();
                    p.setPrice("100");
                    p.setProductCode("1");
                    p.setProductName("test");
                    p.setQuantity("1");
                    products.add(p);
                    return products;
                    }
                    private String getTransactionDate() {
                    return new SimpleDateFormat(DATE_FORMAT).format(new Date());
                    }
                    private String createToken(ThreeDPaymentDTO threeDPayment) throws Exception {
                    String hash = PRIVATE_KEY_20 +
                    threeDPayment.getOrderId() +
                    threeDPayment.getAmount() +
                    threeDPayment.getMode() +
                    threeDPayment.getCardOwnerName() +
                    threeDPayment.getCardNumber() +
                    threeDPayment.getCardExpireMonth() +
                    threeDPayment.getCardExpireYear() +
                    threeDPayment.getCardCvc() +
                    threeDPayment.getUserId() +
                    threeDPayment.getCardId() +
                    threeDPayment.getPurchaser().getName() +
                    threeDPayment.getPurchaser().getSurname() +
                    threeDPayment.getPurchaser().getEmail() +
                    threeDPayment.getTransactionDate();
                    hash = getSHA1Text(hash);
                    return PUBLIC_KEY_20 + ":" + hash;
                    }
                    private String getSHA1Text(String hash) throws Exception {
                    MessageDigest sha1 = MessageDigest.getInstance("SHA-1");
                    return (new BASE64Encoder()).encode(sha1.digest(hash.getBytes("UTF-8")));
                    }
                    private String createForm() {
                    Gson gson = new Gson();
                    String jsonString = gson.toJson(paymentDTO);
                    String form = "
                      
                    return form;
                    }
                    
                    
                  
                    
                    {
                        "mode":"T",
                        "orderId":"10129653-7c46-44a1-911b-9e8bc5d937a4",
                        "cardOwnerName":"Ferhat Bedir",
                        "cardNumber":"4282209004348015",
                        "cardExpireMonth":"07",
                        "cardExpireYear":"20",
                        "cardCvc":"664",
                        "userId":"",
                        "cardId":"",
                        "installment":"1",
                        "amount":"100",
                        "echo":"Payment Test",
                        "successUrl":"http://localhost:8082/rest/payment/threed/test/result",
                        "failureUrl":"http://localhost:8082/rest/payment/threed/test/result",
                        "transactionDate":"2020-04-29 15:48:09",
                        "version":"1.0",
                        "deviceUUID":"android-20013fea6bcc820c",
                        "token":"EILSMVQZJY2XY7R:w4m7j5h1XWEEwdatbtZDMFJVYBw\u003d",
                        "language":"tr-TR",
                        "vendorId":"10100",
                        "purchaser":{
                        "name":"Jack",
                        "surname":"Connor",
                        "email":"[email protected]",
                        "clientIp":"192.168.0.54",
                        "birthDate":"2020-04-29",
                        "gsmNumber":"05320343434",
                        "tcCertificate":"99999999999",
                        "invoiceAddress":{
                        "name":"Jack",
                        "surname":"Connor",
                        "address":"Kaliforniya",
                        "zipcode":"00001",
                        "city":"Los Angeles",
                        "country":"ADB",
                        "tcCertificate":"99999999999",
                        "taxNumber":"9999999999",
                        "taxOffice":"Los Angeles",
                        "companyName":"PosFix",
                        "phoneNumber":"05340343434" },
                        "shippingAddress":{
                        "name":"Jack",
                        "surname":"Connor",
                        "address":"Kaliforniya",
                        "zipcode":"00001",
                        "city":"Los Angeles",
                        "country":"ABD",
                        "phoneNumber":"05340343434"
                        }
                        },
                        "products":[
                        {
                        "productCode":"1",
                        "productName":"test",
                        "quantity":"1",
                        "price":"100"
                        }
                        ]
                    }
                    
                  
Ödeme Sorgulama

Mağaza, daha önceden yapılan ödeme tahsilat denemelerine istinaden sipariş numarası ile verileri XML formatında hazırlayarak https://api.posfix.com.tr/rest/payment/inquiry web servis adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder. PosFix işlem sonucunu yine XML formatında mağazaya döner. Bu servise sorgulanmak istenen ödemenin mağaza sipariş numarası ve mode değeri iletilerek, ödemenin durumu ve ödemenin tutarı öğrenilebilir. Eğer ödeme iade edilmişse veya ödemede kısmı iadeler olmuşsa, iadelerden sonra kalan miktar belirtilir. Mağaza sipariş numarası ve mode değerleri ödeme yapılırken yollanmış değerler olmalıdır. Aksi halde ödeme bulunamadı hatası alınacaktır.

PosFix Ödeme Sorgulama Servisi Rest bir servis olup XML medya tipinde istekleri kabul etmektedir.

Önemli Notlar

  • Servisleri kullanabilmek için PosFix kurum başvuru aşamalarını tamamlamış olmanız gerekmektedir. Başvuru adımlarını tamamladıktan sonra kurum panelinizden alabileceğiniz public ve private key bilgileri ile servisleri kullanabilirsiniz.
  • Entegrasyon işlemlerinde encoding “UTF-8” kullanılması gerekmektedir. Özellikle token parametresinden kaynaklı alınan hataların büyük çoğunluğu encoding problemlerinden kaynaklanmaktadır. Ek olarak XML dili için olan özel karakterlerin gönderiminde hata almamak için yine encoding yapılması gerekmektedir.
  • Entegrasyon dahilinde gönderilen input alanlarında, kart numarası alanı dışında kart numarası bilgisi gönderilmesi dahilinde işlem reddedilecektir.

İstek Güvenlik Bilgileri

PosFix, güvenlik kontrolleri için, mağazadan bazı bilgileri HTTP Header alanında istemektedir. Aşağıda bu bilgilerin tanımları bulunmaktadır:

HttpHeader Güvenlik Parametreleri
Parametre Adı Açıklama Opsiyonel/Zorunlu
transactionDate

İstek zamanı. “yyyy-MM-dd HH:mm:ss“ formatındadır. İşlem zaman aşımına uğramış ise istek reddedilir. Örnek: “2014-08-12 23:59:59” İlgili kütüphane içindeki GetTransactionDate() fonksiyonundan elde edilebilir.

Zorunlu
version

Entegrasyon versiyon bilgisidir. “1.0” olarak gönderilmelidir.

Zorunlu
token

“publicKey:hash” bilgisidir. Hash bilgisi; "privateKey + orderId + mode + transactionDate" alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonun base64 methodu ile encode edilmesi sonucunda oluşur. Hash oluşturma fonksiyonu örnekleri burada anlatılmıştır.
token = public key + ‘:’ + base64[ sha1[("privateKey + orderId + mode + transactionDate")]]
token = “ASKJH98675ASDASDPO:jhsa/gd+89dfg0df6SA/dfg8967==”

Zorunlu
Servis Girdi Parametreleri
Servis içinde ileticek Girdi (Input) Parametreleri HttpHeader Güvenlik Parametreleri
Servis içinde ileticek Girdi (Input) Parametreleri
Parametre Adı Açıklama Opsiyonel/Zorunlu
mode

İstek modu. “P” veya “T” gönderilmelidir.
“P” - Gerçek Ödeme
“T” – Test Ödemesi
Entegrasyon işlemlerinizde mode alanını “T” olarak göndererek test işlemlerinizi gerçekleştirebilirsiniz.
ÖNEMLİ NOT: Test modunda iken ödemeler banka poslarından tahsil edilmez. Test işlemleriniz sonunda gerçek ödeme tahsilatı için mode alanını “P” olarak göndermeyi unutmayınız.

Zorunlu
orderId

Mağazanın ilgili sipariş ile ilişkilendirdiği her bir istek için benzersiz olan tekil sipariş kodu. Maksimum Uzunluk: 100 karakter.

Zorunlu
echo

Mağazaya istek sonucunda geri gönderilecek bilgi alanıdır. Maksimum Uzunluk: 255.

Opsiyonel

Servis Çıktı Parametreleri

Servis Çıktı (Output) Parametreleri
Servis Çıktı (Output) Parametreleri
Parametre Adı Açıklama
result

Ödeme durumunu belirten sonuç bilgisi.
0 – Entegrasyon Hatası
1 – Ödeme başarılı
2 – Ödeme iade edilmiş
3 – Ödeme reddedilmiş
4 – Ödeme bulunamadı
6 – Parçalı iade talebinde bulunulmuş ancak PosFix tarafından manuel iade yapılması gerekiyor.
7 – İade talebinde bulunulmuş ancak PosFix tarafından manuel iade yapılması gerekiyor.
8 – İade talebinde bulunulmuş ancak Mağaza’dan geri para transferi yapılması gerekiyor.
9 – Parçalı iade talebinde bulunulmuş ancak Mağaza’dan geri para transferi yapılması gerekiyor.

responseMessage Ödeme durumunu belirten mesajdır
APPROVED – Ödeme başarılı
REFUNDED – Ödeme iade edilmiş
DECLINED – Ödeme rededilmiş
NOT_FOUND – Ödeme bulunamadı
APPROVED_BUT_WAITING_MANUAL_PARTIAL_REFUND - Parçalı iade talebinde bulunulmuş ancak PosFix tarafından manuel iade yapılması gerekiyor.
APPROVED_BUT_WAITING_MANUAL_REFUND – İade talebinde bulunulmuş ancak PosFix tarafından manuel iade yapılması gerekiyor.
APPROVED_BUT_WAITING_MONEY_TRANSFER_FOR_REFUND – İade talebinde bulunulmuş ancak Mağaza’dan geri para transferi yapılması gerekiyor.
APPROVED_BUT_WAITING_MONEY_TRANSFER_FOR_PARTIAL_REFUND – Parçalı iade talebinde bulunulmuş ancak Mağaza’dan geri para transferi yapılması gerekiyor.
errorMessage Hata Mesajı
errorCode Hata Kodu
publicKey Mağaza açık anahtar bilgisi.
echo Mağazanın istek bilgisinde iletmiş olduğu echo verisi.
transactionDate Hash hesaplamasında kullanılacak zaman bilgisi. “yyyy-MM-dd HH:mm:ss“ formatındadır.
mode

İstek modu.
“P” - Gerçek Ödeme
“T” – Test Ödemesi

orderId Mağaza sipariş Id
amount Ödemenin kalan miktarı.
Kuruş değerinde yollanacaktır.
Örneğin; 1 TL için 100, 12 TL için 1200, 1.05 TL için 105, 1.2 TL için 120 olarak gönderilecektir.
Eğer ödemenin tamamı iade edilmişse “000” değeri dönecektir.
hash “orderId + result + amount + mode + errorCode + errorMessage + transactionDate + publicKey + privateKey” alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonun base64 methodu ile encode edilmesi sonucunda bu değer oluşur.
Not 1: İşlem sonucunda sizlere gönderilen hash bilgisini tarafınıza gelen parametreler ile tekrar hesaplayıp bu alandaki bilgi ile karşılaştırılması gerekmektedir. Eğer aynı hash değeri oluşmuyor ise işlemi reddetmelisiniz. Aksi durumda cevap bilgisi iletiminde üçüncü kişilerin araya girerek sahtekarlık yapabilme olasılığı ortaya çıkacaktır.
Not 2: Hash bilgisi hesaplamasında null olan veriler, String “” olarak hesaplanmıştır.
Not 3: İstek bilgileri içerisinde mağazanın tanımamasından kaynaklı olarak mağaza bilgileri yoksa cevap bilgisinde hash ve transactionDate alanları gönderilmeyecektir.

Örnek Çağrılar


                          //Request
                          PaymentInquiryRequest request = new PaymentInquiryRequest();
                          request.orderId = orderId;
                          request.Echo= "Echo";
                          request.Mode = settings.Mode;
                          PaymentInquiryResponse response = PaymentInquiryRequest.Execute(request, settings);
                           

              //Request
                          PaymentInquiryRequest request = new PaymentInquiryRequest();
                          request.orderId = orderId;
                          request.echo="Echo";
                          request.mode = settings.Mode;
                          PaymentInquiryResponse response = PaymentInquiryRequest.Execute(request, settings);
              

              //request
              $request = new PaymentInquiryRequest();
              $request->orderId = orderId;
              $request->Echo= "Echo";
              $request->Mode = settings.Mode;
              $response=PaymentInquiryRequest::execute($request,$settings);
              

              //Request
              posfix.PaymentInquiryRequest(orderId).then(requestResult => {
                  parseString(requestResult, (err, result) => {
                  if (err) throw new Error(err);
                  res.json(result)
                  })
                  }).catch(err => {
                  console.log(err)
              })

              

              //request
                    req=Paymentinquiryrequest.new
                    req.orderId =  params[:orderId]
                    @@returnData= req.execute(req,@@settings)

              

                  //Request
                  req = PaymentInquiryRequest()
                  req.orderId = request.POST.get('orderId')
                  message = req.execute(req, config)
              

                          
               //Request
                          <?xml version="1.0" encoding="UTF-8" ?>
                          <inquiry>
                          <orderId>b3091d88-6320-4446-be6c-7a1f8e6e73c7</orderId>
                          <echo>Echo Bilgisi</echo>
                          <mode>T</mode>
                          </inquiry>
               //Response
                          <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
                          <inquiryResponse>
                          <responseMessage>REFUNDED</responseMessage>
                          <amount>2500</amount>
                          <echo>Echo Bilgisi</echo>
                          <hash>yO5ACnF9FpsiV2/WBRRsDEBDRt8=</hash>
                          <mode>T</mode>
                          <orderId>b3091d88-6320-4446-be6c-7a1f8e6e73c7</orderId>
                          <publicKey>ABVQ03C77WPTODQN</publicKey>
                          <result>2</result>
                          <transactionDate>2014-01-03 21:08:51</transactionDate>
                          </inquiryResponse>
              
              

Ödeme Sorgulama (Tarih Aralığı Parametreli)

Mağaza, daha önceden yapılan ödeme tahsilat denemelerine istinaden, sorgulamak istediği ödeme tarih aralığı ile verileri JSON formatında hazırlayarak https://api.posfix.com.tr/rest/payment/search web servis adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder.

PosFix işlem sonucunu yine JSON formatında mağazaya döner. Bu servise sorgulanmak istenen ödemeler için başlangıç ve bitiş tarih aralığı ,mode değeri ve echo bilgisi iletilerek, girilen tarih aralığında bulunan ödemelerin durumu ve ödemenin tutarı öğrenilebilir. Eğer ödeme iade edilmişse veya ödemede kısmı iadeler olmuşsa, iadelerden sonra kalan miktar belirtilir.

Para Tarih Aralığına Göre Ödeme Sorgulama Servisi Rest bir servis olup JSON medya tipinde istekleri kabul etmektedir. Girilen tarih aralığı 30 gün ile sınırlıdır.

İstek Güvenlik Bilgileri

PosFix, güvenlik kontrolleri için, mağazadan bazı bilgileri HTTP Header alanında istemektedir. Aşağıda bu bilgilerin tanımları bulunmaktadır.

HttpHeader Güvenlik Parametreleri

Parametre Adı Açıklama Opsiyonel/Zorunlu
transactionDate

İstek zamanı. “yyyy-MM-dd HH:mm:ss“ formatındadır.
İşlem zaman aşımına uğramış ise istek reddedilir.
Örnek: “2014-08-12 23:59:59” İlgili kütüphane içindeki GetTransactionDate() fonksiyonundan elde edilebilir.

Zorunlu
version

Entegrasyon versiyon bilgisidir. “1.0” olarak gönderilmelidir.

Zorunlu
token

“publicKey:hash” bilgisidir.
Hash bilgisi; "privateKey + mode + transactionDate" alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonun base64 methodu ile encode edilmesi sonucunda oluşur.
Hash oluşturma fonksiyonu örnekleri burada anlatılmıştır.
token = public key + ‘:’ + base64[ sha1[("privateKey +mode + transactionDate")]] token = “EILSMVQZJY2XY7R:/44epRm434pkjbDUUmoPnIGwCLk=”

Zorunlu
Servis Girdi Parametreleri
Servis içinde ileticek Girdi (Input) Parametreleri
Servis içinde ileticek Girdi (Input) Parametreleri
Parametre Adı Açıklama Opsiyonel/Zorunlu
mode

İstek modu. “P” veya “T” gönderilmelidir.
“P” - Gerçek Ödeme
“T” – Test Ödemesi
Entegrasyon işlemlerinizde mode alanını “T” olarak göndererek test işlemlerinizi gerçekleştirebilirsiniz.
ÖNEMLİ NOT: Test modunda iken ödemeler banka poslarından tahsil edilmez.
Test işlemleriniz sonunda gerçek ödeme tahsilatı için mode alanını “P” olarak göndermeyi unutmayınız.

Zorunlu
startDate

Sorgulanmak istenilen siparişler için tarih aralığının başlangıç değeri Örnek “2020-06-01 23:59:59”

Zorunlu
endDate

Sorgulanmak istenilen siparişler için tarih aralığının bitiş değeri Örnek “2020-06-30 23:59:59”

Zorunlu
echo

Mağazaya istek sonucunda geri gönderilecek bilgi alanıdır. Maksimum Uzunluk: 255.

Opsiyonel

Servis Çıktı Parametreleri

Servis Çıktı (Output) Parametreleri
Servis Çıktı (Output) Parametreleri
Parametre Adı Açıklama
result

İşlem sonucu
1 - İşlem Başarılı
0 - İşlem Başarısız

errorMessage Hata Mesajı
errorCode Hata Kodu
payments Tarih aralığında bulunan tüm ödemelerin bilgileri
totalPayments Tarih aralığında bulunan toplam ödeme sayısı
responseMessage İşlem sonucunu bildiren mesajdır.

Örnek Çıktılar


    {
    "payments": [
    {
    "result": "3",
    "responseMessage": "DECLINED",
    "orderId": "ac28cc56-1e23-4676-9c51-77a886673705",
    "amount": "0",
    "finalAmount": "100",
    "transactionDate": "2020-06-08 10:31:38.0"
    },
    {
    "result": "3",
    "responseMessage": "DECLINED",
    "orderId": "3bf23cc5-856b-4ff3-a88d-56647afe31a3",
    "amount": "0",
    "finalAmount": "100",
    "transactionDate": "2020-06-08 10:26:29.0"
    },
    {
    "result": "1",
    "responseMessage": "APPROVED",
    "orderId": "f0eeae53-bd54-4fe4-9c12-c3f6528aa012",
    "amount": "100",
    "finalAmount": "100",
    "transactionDate": "2020-06-08 10:07:52.0"
    },
    {
    "result": "1",
    "responseMessage": "APPROVED",
    "orderId": "6ec36eb0-5115-446f-a3de-25b0748b49b6",
    "amount": "100",
    "finalAmount": "100",
    "transactionDate": "2020-06-08 10:00:59.0"
    },
    {
    "result": "1",
    "responseMessage": "APPROVED",
    "orderId": "7dec7580-0125-41ea-99ab-c8760da856bb",
    "amount": "100",
    "finalAmount": "000",
    "transactionDate": "2020-06-04 16:48:17.0"
    },
    {
    "result": "1",
    "responseMessage": "APPROVED",
    "orderId": "c7fcfec8-15ff-4cd8-af26-3c9e772d149f",
    "amount": "100",
    "finalAmount": "100",
    "transactionDate": "2020-06-03 16:40:42.0"
    }
    ],
    "totalPayments": 6,
    "result": "1",
    "responseMessage": "SUCCESS"
    }
          
Ön Otorizasyon Servisi

Mağaza, müşteri üyelik bilgilerini ve kart bilgilerini aldıktan sonra, ödeme verilerini JSON formatında hazırlayarak https://api.posfix.com.tr/rest/payment/preauth web servis adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder. PosFix işlem sonucunu yine JSON formatında mağazaya döner.


Servis Girdi Parametreleri

Servis içinde ileticek Girdi (Input) Parametreleri
Parametre Adı Açıklama Opsiyonel/Zorunlu
mode

İstek modu. "P" veya "T" gönderilmelidir.
"P" - Gerçek Ödeme
"T" – Test Ödemesi
Entegrasyon işlemlerinizde mode alanını “T” olarak göndererek test işlemlerinizi gerçekleştirebilirsiniz.
ÖNEMLİ NOT:Test modunda iken ön otorizasyon banka poslarına yönlendirilmez. Test işlemleriniz sonunda gerçek ön otorizasyon için mode alanını “P” olarak göndermeyi unutmayınız.

Zorunlu
orderId

Mağazanın ilgili sipariş ile ilişkilendirdiği her bir istek için benzersiz olan tekil sipariş kodu.
Maksimum Uzunluk: 100 karakter.

Zorunlu
cardOwnerName

Kart üzerindeki ad.
Minimum Uzunluk: 4 - Maksimum Uzunluk: 100 karakter

Zorunlu
cardNumber

Kart numarası.
Minimum Uzunluk: 12 - Maksimum Uzunluk: 19 karakter.

*
cardExpireMonth

Kart son kullanma tarihi ay parametresi
Uzunluk: 2 karakter. Örnek; 05,11, vb.

*
cardExpireYear

Kart son kullanma tarihi yıl parametresi.
Uzunluk: 2 karakter. Örnek; 14,19, vb.

*
cardCvc

Kartın arkasındaki güvenlik kodu:
Uzunluk: MasterCard ve Visa kartları için 3 karakter, Amex kartlar için 3 veya 4 karakter.

*
userId

Mağaza kullanıcısını referans eden bilgi.
Maksimum uzunluk 255 karakter.
Cüzdan servisleri ile daha önceden kaydedilmiş olan kayıtlı kart ile ön otorizasyon işlemi gerçekleştirilmek istendiğinde gönderilmelidir.

*
cardId

Mağaza kullanıcısının kartını referans eden kart kaydetme işlemi sonucunda oluşan id bilgisi.
Cüzdan servisleri ile daha önceden kaydedilmiş olan kayıtlı kart ile ön otorizasyon işlemi gerçekleştirilmek istendiğinde gönderilmelidir.

*
installment

Taksit Sayısı.
Minimum Uzunluk: 1 - Maksimum Uzunluk: 2 karakter.
Desteklenen taksit sayıları: 1,2,3,4,5,6,7,8,9,10,11,12

Zorunlu
amount

Karttan bloke edilecek olan toplam sipariş tutarı.
Sipariş tutarı kuruş ayracı olmadan gönderilmelidir.
Örneğin; 1 TL 100, 12 1200, 130 13000, 1.05 105, 1.2 120 olarak gönderilmelidir.

Zorunlu
echo

Mağazaya istek sonucunda geri gönderilecek bilgi alanıdır.
Maksimum Uzunluk: 255.

Opsiyonel
vendorId

PosFix tarafından sağlanan altyapı sağlayıcı id bilgisi. Mağaza kendi yazılımını kullanıyor ise bu alan gönderilmemelidir.

Opsiyonel
purchaser

Müşteri Bilgileri. Aşağıdaki tabloda iç parametreleri anlatılmıştır.

Opsiyonel
products

Ürün Bilgileri. Aşağıdaki tabloda iç parametreleri anlatılmıştır.

Zorunlu
Müşteri Bilgileri (purchaser object )
Parametre Adı Açıklama Opsiyonel/Zorunlu
purchaserName

Müşteri isim bilgisi.
Minimum Uzunluk: 3 - Maksimum Uzunluk: 50.

Zorunlu
purchaserSurname

Müşteri soyisim bilgisi.
Minimum Uzunluk: 3 - Maksimum Uzunluk: 50.

Zorunlu
purchaserEmail

Müşteri e-posta bilgisi.
E-posta adresi geçerli bir e-posta adresi olmalıdır.
Minimum Uzunluk: 3 - Maksimum Uzunluk: 100.

Zorunlu
clientIp

Müşteri istemci IP adresi

Zorunlu
birthDate

Müşteri doğum tarihi bilgisi. “yyyy-MM-dd” formatında olmalıdır.

Opsiyonel
gsmNumber

Müşteri cep telefonu bilgisi.

Opsiyonel
tcCertificate

Müşteri T.C. Kimlik Numarası bilgisi. 11 haneli olmalıdır.

Opsiyonel
invoiceAddress

Fatura adresi bilgileri. Aşağıdaki tabloda iç parametreleri anlatılmıştır.

Opsiyonel
shippingAddress

Kargo adresi bilgileri. Aşağıdaki tabloda iç parametreleri anlatılmıştır.

Opsiyonel

Müşteri Fatura Adresi Bilgileri (invoiceAddress)

Bilgiler ödeme sahterkarlık kontrollerinde kullanılmaktadır.

Parametre Adı Açıklama Opsiyonel/Zorunlu
name

İsim bilgisi.

Opsiyonel
surname

Soyisim bilgisi.

Opsiyonel
address

Adres bilgisi.

Opsiyonel
zipcode

Posta kodu bilgisi.

Opsiyonel
city

Şehir bilgisi.

Opsiyonel
country

Ülke bilgisi. ISO 3166-1 alpha-2 standardındaki ülke kodu. Türkiye için “TR”.

Opsiyonel
tcCertificate

T.C. Kimlik numarası bilgisi.

Opsiyonel
taxNumber

Vergi numarası bilgisi.

Opsiyonel
taxOffice

Vergi dairesi bilgisi.

Opsiyonel
companyName

Şirket ismi bilgisi.

Opsiyonel
phoneNumber

Telefon bilgisi

Opsiyonel

Müşteri Kargo Adresi Bilgileri (shippingAddress)

Bilgiler ödeme sahterkarlık kontrollerinde kullanılmaktadır.

Parametre Adı Açıklama Opsiyonel/Zorunlu
name

İsim bilgisi.

Opsiyonel
surname

Soyisim bilgisi.

Opsiyonel
address

Adres bilgisi.

Opsiyonel
zipcode

Posta kodu bilgisi.

Opsiyonel
city

Şehir bilgisi.

Opsiyonel
country

Ülke bilgisi. ISO 3166-1 alpha-2 standardındaki ülke kodu. Türkiye için “TR”.

Opsiyonel
phoneNumber

Telefon bilgisi

Opsiyonel

Ürün Bilgileri (products)

Bilgiler ödeme sahterkarlık kontrollerinde kullanılmaktadır.

Parametre Adı Açıklama Opsiyonel/Zorunlu
productCode

Ürün kodu bilgisi.

Opsiyonel
productName

Ürün isim bilgisi.

Opsiyonel
quantity

Ürün adet bilgisi.

Opsiyonel
price

Ürün birim fiyat bilgisi.

Opsiyonel
Önemli NOT: En az bir adet ürün (product) bilgisi gönderimi zorunludur.

İstek Güvenlik Bilgileri

PosFix, güvenlik kontrolleri için, mağazadan bazı bilgileri request header bilgisinde istemektedir. Aşağıda bu bilgilerin tanımları bulunmaktadır.

Parametre Adı Açıklama Opsiyonel/Zorunlu
transactionDate

İstek zamanı. “yyyy-MM-dd HH:mm:ss“ formatındadır. İşlem zaman aşımına uğramış ise istek reddedilir. Örnek: “2014-08-12 23:59:59”

Zorunlu
version

Entegrasyon versiyon bilgisidir. “1.0” olarak gönderilmelidir

Zorunlu
token

“publicKey:hash” bilgisidir. Hash bilgisi;" privateKey + name + surname + email + amount + clientIp + transactionDate " alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonunun base64 methodu ile encode edilmesi sonucunda oluşur. Hash oluşturma fonksiyonu örnekleri 2 no’lu başlıkta anlatılmıştır. Örnek : token =public key + ‘:’ + base64[ sha1[("privateKey + name + surname + email + amount + clientIp + transactionDate ")]] Veri Örneği: token = “ASKJH98675ASDASDPO:jhsa/gd+89dfg0df6SA/dfg8967==”

Zorunlu
sessionToken

Login servisini kullanıp alınan sessiontoken’ı header bilgisinde gönderilmelidir.

Zorunlu


Servis Çıktı Parametreleri

Servis Çıktı (Output) Parametreleri
Parametre Adı Açıklama
result

İşlem sonucu
1 - İşlem Başarılı
0 - İşlem Başarısız

orderId Mağaza sipariş Id
amount Sipariş toplam tutar bilgisi
mode

İstek modu.
"P" - Gerçek Ödeme
"T" – Test Ödemesi

publicKey Mağaza açık anahtar bilgisi.
echo Mağazanın istek bilgisinde iletmiş olduğu echo verisi.
errorCode Hata kodu.
errorMessage

Hata mesajı.
Başarılı entegrasyon sonrası hata mesajlarının kullanıcıya direkt gösterilmesini öneririz.

transactionDate

Hash hesaplamasında kullanılacak zaman bilgisi. “yyyy-MM-dd HH:mm:ss“ formatındadır.

hash

"orderId + result + amount + mode + errorCode + errorMessage + transactionDate + publicKey + privateKey" alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonun base64 methodu ile encode edilmesi sonucunda bu değer oluşur.
Not 1: İşlem sonucunda sizlere gönderilen hash bilgisini tarafınıza gelen parametreler ile tekrar hesaplayıp bu alandaki bilgi ile karşılaştırılması gerekmektedir. Eğer aynı hash değeri oluşmuyor ise işlemi reddetmelisiniz. Aksi durumda cevap bilgisi iletiminde üçüncü kişilerin araya girerek sahtekarlık yapabilme olasılığı ortaya çıkacaktır.
Not 2: Hash bilgisi hesaplamasında null olan veriler, String “” olarak hesaplanmıştır.
Not 3: İstek bilgileri içerisinde mağazanın tanımamasından kaynaklı olarak mağaza bilgileri yoksa cevap bilgisinde hash ve transactionDate alanları gönderilmeyecektir.


Test İşlemleri

Örnek İstek Verisi
                
                  {
                  "amount": "2000",
                  "orderId": "73573622-a67a-46e9-b33a-cbe58e4b550c",
                  "mode": "T",
                  "cardOwnerName": "Jack Connor",
                  "cardNumber": "5571135571135575",
                  "cardExpireMonth": "07",
                  "cardExpireYear": "22",
                  "cardCvc": "123",
                  "installment": "1",
                  "vendorId": "10100",
                  "echo": "Payment Test",
                  "products": [
                  {
                  "productCode": "1",
                  "productName": "iphone X",
                  "quantity": "1",
                  "price": "1000"
                  },
                  {
                  "productCode": "1",
                  "productName": "iphone 8",
                  "quantity": "1",
                  "price": "1000"
                  }
                  ],
                  "purchaser": {
                  "name": "Jack",
                  "surname": "Connor",
                  "email": "[email protected]",
                  "birthDate": "29.08.1995",
                  "gsmNumber": "5400343434",
                  "tcCertificate": "99999999999",
                  "clientIp": "192.168.0.54",
                  "invoiceAddress": {
                  "name": "Jack",
                  "surname": "Connor",
                  "address": "Kaliforniya",
                  "zipcode": "00001",
                  "city": "Los Angeles",
                  "country": "ADB",
                  "tcCertificate": "99999999999",
                  "taxNumber": "9999999999",
                  "taxOffice": "Los Angeles",
                  "companyName": "PosFix",
                  "phoneNumber": "05340343434"
                  },
                  "shippingAddress": {
                  "name": "Jack",
                  "surname": "Connor",
                  "address": "Kaliforniya",
                  "zipcode": "00001",
                  "city": "Los Angeles",
                  "country": "ABD",
                  "phoneNumber": "05340343434"
                  }
                  }
                  }
                
              

Örnek Cevap Verisi
                
                  Başarılı İşlem Cevap Verisi
                  {
                  "result": 1,
                  "amount": "2000",
                  "errorCode": null,
                  "errorMessage": null,
                  "echo": "Payment Test",
                  "transactionDate": "2021-02-15 11:21:58",
                  "hash": "u+eiNNK/qf/YOmLldqP9coL5vuI=",
                  "mode": "T",
                  "orderId": "cca97e4f-4b73-427a-9fa3-4641b8ea1e86",
                  "publicKey": "EILSMVQZJY2XY7R"
                  }

                  Başarısız İşlem Cevap Verisi
                  {
                  "result": 0,
                  "amount": "2000",
                  "errorCode": "221",
                  "errorMessage": "Mağaza Ön otorizasyona açık değil.",
                  "echo": "Payment Test",
                  "transactionDate": "2021-02-15 11:15:57",
                  "hash": "hq7yhCXwTX0tV6dBWJ7iFjNn8OA=",
                  "mode": "T",
                  "orderId": "73573622-a67a-46e9-b33a-cbe58e4b550c",
                  "publicKey": "EILSMVQZJY2XY7R"
                  }
                
              

Örnek Hash Fonksiyonu



                    public static String prepareToken (String text) throws Exception {
                    MessageDigest sha1 = MessageDigest.getInstance("SHA-1");
                    String hash = (new BASE64Encoder()).encode(sha1.digest(text.getBytes(“UTF-8”))); return hash;
                    }
                

                    public static string PrepareToken (string SHA1Data) { SHA1 sha = new SHA1CryptoServiceProvider();
                    byte[] hashbytes = System.Text.Encoding.UTF8.GetBytes(SHA1Data);
                    byte[] inputbytes = sha.ComputeHash(hashbytes);
                    return Convert.ToBase64String(inputbytes);
                    }
                

                    function prepareToken($text) {
                    $token = base64_encode(sha1($text,true));
                    return $token;
                    }
                

Ön Provizyon Kapama Servisi

Mağaza, müşteri üyelik bilgilerini ve kart bilgileri ile daha önce bir ön otorizasyon işlemi başlatıktan sonra, istenilen verileri Json formatında hazırlayarak https://api.posfix.com.tr/rest/payment/postauth web servis adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder. PosFix işlem sonucunu yine Json formatında mağazaya döner.


Servis Girdi Parametreleri

Servis içinde ileticek Girdi (Input) Parametreleri
Parametre Adı Açıklama Opsiyonel/Zorunlu
mode

İstek modu. “P” veya “T” gönderilmelidir.
"P" - Gerçek Ödeme
“T” – Test Ödemesi
Entegrasyon işlemlerinizde mode alanını “T” olarak göndererek test işlemlerinizi gerçekleştirebilirsiniz.
ÖNEMLİ NOT: Test modunda iken ödemeler banka poslarından tahsil edilmez. Test işlemleriniz sonunda gerçek ödeme tahsilatı için mode alanını “P” olarak göndermeyi unutmayınız.

Zorunlu
orderId

Mağazanın ilgili sipariş ile ilişkilendirdiği her bir istek için benzersiz olan tekil sipariş kodu.
Maksimum Uzunluk: 100 karakter.

Zorunlu
amount

Karttan çekilecek olan toplam sipariş tutarı.
Sipariş tutarı kuruş ayracı olmadan gönderilmelidir.
Örneğin; 1 TL 100, 12 1200, 130 13000, 1.05 105, 1.2 120 olarak gönderilmelidir.

Zorunlu
clientIp

Müşteri istemci IP adresi

Zorunlu

İstek Güvenlik Bilgileri

PosFix, güvenlik kontrolleri için, mağazadan bazı bilgileri request header bilgisinde istemektedir. Aşağıda bu bilgilerin tanımları bulunmaktadır.

Parametre Adı Açıklama Opsiyonel/Zorunlu
transactionDate

İstek zamanı. “yyyy-MM-dd HH:mm:ss“ formatındadır. İşlem zaman aşımına uğramış ise istek reddedilir. Örnek: “2014-08-12 23:59:59”

Zorunlu
version

Entegrasyon versiyon bilgisidir. “1.0” olarak gönderilmelidir

Zorunlu
token

“publicKey:hash” bilgisidir. Hash bilgisi;" privateKey + name + surname + email + amount + clientIp + transactionDate " alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonunun base64 methodu ile encode edilmesi sonucunda oluşur. Hash oluşturma fonksiyonu örnekleri 2 no’lu başlıkta anlatılmıştır. Örnek : token =public key + ‘:’ + base64[ sha1[("privateKey + name + surname + email + amount + clientIp + transactionDate ")]] Veri Örneği: token = “ASKJH98675ASDASDPO:jhsa/gd+89dfg0df6SA/dfg8967==”

Zorunlu
sessionToken

Login servisini kullanıp alınan sessiontoken’ı header bilgisinde gönderilmelidir.

Zorunlu


Servis Çıktı Parametreleri

Servis Çıktı (Output) Parametreleri
Parametre Adı Açıklama
result

İşlem sonucu
1 - İşlem Başarılı
0 - İşlem Başarısız

orderId Mağaza sipariş Id
amount Sipariş toplam tutar bilgisi
mode

İstek modu.
"P" - Gerçek Ödeme
"T" – Test Ödemesi

publicKey Mağaza açık anahtar bilgisi.
echo Mağazanın istek bilgisinde iletmiş olduğu echo verisi.
errorCode Hata kodu.
errorMessage

Hata mesajı.
Başarılı entegrasyon sonrası hata mesajlarının kullanıcıya direkt gösterilmesini öneririz.

transactionDate

Hash hesaplamasında kullanılacak zaman bilgisi. “yyyy-MM-dd HH:mm:ss“ formatındadır.

hash

"orderId + result + amount + mode + errorCode + errorMessage + transactionDate + publicKey + privateKey" alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonun base64 methodu ile encode edilmesi sonucunda bu değer oluşur.
Not 1: İşlem sonucunda sizlere gönderilen hash bilgisini tarafınıza gelen parametreler ile tekrar hesaplayıp bu alandaki bilgi ile karşılaştırılması gerekmektedir. Eğer aynı hash değeri oluşmuyor ise işlemi reddetmelisiniz. Aksi durumda cevap bilgisi iletiminde üçüncü kişilerin araya girerek sahtekarlık yapabilme olasılığı ortaya çıkacaktır.
Not 2: Hash bilgisi hesaplamasında null olan veriler, String “” olarak hesaplanmıştır.
Not 3: İstek bilgileri içerisinde mağazanın tanımamasından kaynaklı olarak mağaza bilgileri yoksa cevap bilgisinde hash ve transactionDate alanları gönderilmeyecektir.


Test İşlemleri

Örnek İstek Verisi
                
                  {
                  "orderId": "b3091d88-6320-4446-be6c-7a1f8e6e73c7"
                  " amount ": "100"
                  "mode": "T",
                  "clientIp": "123.123.12.1"
                  }
                
              

Örnek Cevap Verisi
                
                  Başarılı İşlem Cevap Verisi
                  {
                  "result": 1,
                  "amount": "100",
                  "transactionDate": "2021-02-04 11:35:58",
                  "hash": "MpZnLO2JJv3WHeZEUJcdQCNJoAI=",
                  "mode": "T",
                  "orderId": "929f6931-6e23-47ba-912f-7eb2655110a1",
                  "publicKey": "EILSMVQZJY2XY7R"
                  }
                  Başarısız İşlem Cevap Verisi
                  {
                  "result": 0,
                  "amount": "100",
                  "errorCode": "882",
                  "errorMessage": "Göndermiş olduğunuz token doğru değil.",
                  "transactionDate": "2021-02-04 11:19:05",
                  "hash": "GUfwYpf1dl30XeTpT5IAvq7qGa0=",
                  "mode": "T",
                  "orderId": "929f6931-6e23-47ba-912f-7eb2655110a1",
                  "publicKey": "EILSMVQZJY2XY7R"
                  }
                  Başarısız İşlem Cevap Verisi (Mağaza Bulunamadı)
                  Mağaza bulunamadığı zaman hash ve transactionDate alanları oluşturulamayacağı için geri dönüş değerlerine eklenmez.
                  {
                  "result": 0,
                  "amount": "100",
                  "errorCode": "810",
                  "errorMessage": "Mağaza açık anahtarı yanlış.",
                  "mode": "T",
                  "orderId": "929f6931-6e23-47ba-912f-7eb2655110a1"
                  }
                
              

Hata Kodları

Hata Kodu Açıklama
1

Ödeme işleminiz bankanız tarafından onaylanmamıştır. Bankanızı arayarak detaylı bilgi alabilirsiniz.

2

Ödeme işleminiz bankanız tarafından reddedilmiştir. Bankanızı arayarak detaylı bilgi alabilirsiniz.

4

Kart limitiniz yetersiz olduğundan dolayı ödeme işleminiz gerçekleştirilemedi.

5

Kartınızın süresi dolmuş, bu kart ile işlem gerçekleştiremezsiniz. Lütfen başka bir kart ile tekrar deneyiniz.

7

Kart kapalı. Lütfen tekrar denemeyiniz. Bankanızı arayarak detaylı bilgi alabilirsiniz.

8

Kart ile işlem yapılamaz. Lütfen tekrar denemeyiniz. Bankanızı arayarak detaylı bilgi alabilirsiniz.

9

Kartınızın bu işlem için yetkisi yoktur. Lütfen bankanız ile irtibata geçiniz.

10

Ödeme işleminiz gerçekleştirilemedi. Kartınız yenilenmiş. Bankanızı arayarak detaylı bilgi alabilirsiniz.

14

Ödeme işleminiz de kullanmış olduğunuz kart ile 1 TL nin altında ödeme gerçekleştiremezsiniz.

16

Ödeme işleminiz gerçekleştirilemedi. Kart bankasına ulaşılamıyor. Bankanızı arayarak detaylı bilgi alabilirsiniz.

17

Kart banka sistemlerinde bulunamadı. Lütfen bilgilerinizi kontrol edip tekrar deneyiniz.

18

Şu anda ödeme yapmak istediğiniz kartın bankası hizmet verememektedir. Lütfen daha sonra tekrar deneyiniz.

38

Ödeme işleminiz zaman aşımına uğramıştır. Bankanızdan yanıt alınamıyor. Lütfen tekrar deneyiniz.

81

Kart sahibi veya bankası 3D Secure sistemine kayıtlı değil. Lütfen bankanız ile irtibata geçiniz.

82

Kartın bankası sisteme kayıtlı değil.

83

Kart sahibi 3D Secure sistemine daha sonra kayıt olmayı seçmiş. Lütfen bankanız ile irtibata geçiniz.

98

Şu anda ödeme yapmak istediğiniz kartın bankası hizmet verememektedir. Lütfen daha sonra tekrar deneyiniz.

99

Ödeme işleminiz gerçekleştirilemedi. Lütfen bilgilerinizi kontrol edip tekrar deneyiniz.

200

Ödemeniz güvenlik kontrolünü geçemedi.

800

İstek boş.

801 Token bilgisi boş.
802 Token bilgisi hatalı.
803 Açık anahtar boş.
804 Hash bilgisi boş.
805 Entegrasyon versiyon bilgisi boş.
806

Versiyon desteklenmiyor.

807

Ödeme istek zaman bilgisi boş.

808

İstek zamanı header bilgisi hatalı.

809

İstek zamanı ile server zamanı uyuşmuyor. Lütfen tekrar deneyiniz.

810

Mağaza açık anahtarı yanlış.

811

Mağaza yayında değil.

816

Lütfen tutar belirtiniz.

817

Girmiş olduğunuz tutar bilgisi hatalıdır. Lütfen tekrar deneyiniz.

842

Mod alanı boş olamaz.

843

Mod alanı "P" veya "T" olmalıdır.

852

Client IP alanı boş olamaz.

853

Client IP alanı hatalı.

880

Sipariş numarası daha önce kullanılmış. Lütfen tekrardan istekte bulununuz.

881

Devam eden bir işleminiz bulunduğundan dolayı bu istek reddedilmiştir.

882

Göndermiş olduğunuz token doğru değil.

885

Mağaza durumu test modu için uygun değil. Lütfen konu ile ilgili PosFix operasyon ekibi ile iletişime geçiniz.

886

Mağaza kayıtlı site adresi ile istekte bulunulan adres aynı değil. Lütfen konu ile ilgili PosFix operasyon ekibi ile iletişime geçiniz.

890

Göndermiş olduğunuz ödeme bilgileri ile daha önceden işlem yapılmış.

988

orderId bilgisi geçersizdir.

1000

İşleminiz gerçekleştirilirken beklenmedik bir hata oluştu. Lütfen daha sonra tekrar deneyiniz.

Örnek Hash Fonksiyonu


                    public static String prepareToken (String text) throws Exception {
                    MessageDigest sha1 = MessageDigest.getInstance("SHA-1");
                    String hash = (new BASE64Encoder()).encode(sha1.digest(text.getBytes(“UTF-8”))); return hash;
                    }
                

                    public static string PrepareToken (string SHA1Data) { SHA1 sha = new SHA1CryptoServiceProvider();
                    byte[] hashbytes = System.Text.Encoding.UTF8.GetBytes(SHA1Data);
                    byte[] inputbytes = sha.ComputeHash(hashbytes);
                    return Convert.ToBase64String(inputbytes);
                    }
                

                    function prepareToken($text) {
                    $token = base64_encode(sha1($text,true));
                    return $token;
                    }
                
İade Sorgulama

Dokümanda, mağazanıza ait bir ödemenin iade edilebilirlik durumunun sorgulaması sağlayan servis entegrasyonu, örnekler ve tanımlar ile anlatılmıştır. Bu doküman, PosFix üye işyeri olan mağazalara yardımcı olması amacı ile oluşturulmuştur. Dokümanda anlatılan servis Restful servis olup JSON medya tipinde istekleri kabul etmektedir.

Kurumunuza ait kayıtlı mağazanın PosFix’de yaptığı ödemelerin iade işlemi öncesinde, ödeme durumunun sorgulanarak iade edilmeye uygun durumda olup olmadığının bilgisinin alınması gerekmektedir. Bu servis sonucunda alınan uygunluk değerine göre, bu servisten alınan parametreler ile “Ödeme İade Servisi” çağırılarak ödeme iadesi gerçekleştirilebilir.
İade durumu sorgulanmak istendiğinde gerekli istek bilgilerini JSON formatında hazırlayarak, https://api.posfix.com.tr/corporate/payment/refund/inquiry adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder. PosFix işlem sonucunu yine JSON formatında mağazaya döner. Servisin sorgulma isteğinde ödeme kimlik bilgisinin olması gerekmektedir. Gerekli ödeme bilgisine, “Ödeme Arama Servisi” üzerinden ulaşılabilir.

İstek Güvenlik Bilgileri

HttpHeader Güvenlik Bilgileri

PosFix, güvenlik kontrolleri için, mağazadan bazı bilgileri HTTP Header alanında istemektedir. Aşağıda bu bilgilerin tanımları bulunmaktadır:

Parametre Adı Açıklama Opsiyonel/Zorunlu
transactionDate

İstek zamanı “yyyy-MM-dd HH:mm:ss“ formatındadır. İşlem zaman aşımına uğramış ise istek reddedilir.

Zorunlu
version

Entegrasyon versiyon bilgisidir. “1.0” olarak gönderilmelidir.

Zorunlu
token

“publicKey:hash” bilgisidir.
Hash bilgisi; "privateKey + orderId + clientIp + transactionDate" alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonun base64 methodu ile encode edilmesi sonucunda oluşur.

Zorunlu

Servis Girdi Parametreleri

Parametre Adı Açıklama Opsiyonel/Zorunlu
clientIp

İstekte bulunan kullanıcının IP adresi.

Zorunlu
orderId

İade edilmek istenen ödemeye ait mağaza sipariş numarası.

Zorunlu
amount

İade yapılası istenen tutar bilgisidir. Tutar kuruş ayracı olmadan gönderilmelidir. Örneğin; 1 TL 100, 12 1200, 130 13000, 1.05 105, 1.2 120 olarak gönderilmelidir.

Zorunlu

Servis Çıktı Parametreleri

Parametre Adı Açıklama
result

İşlem sonucu
1 - İşlem Başarılı
0 - İşlem Başarısız

errorCode Hata Kodu.
errorMessage Hata Mesajı.
responseMessage Kullanıcıya gösterilecek hata veya başarılı sonuç mesajı. Başarılı entegrasyon sonrası hata mesajlarının kullanıcıya direkt gösterilmesini öneririz.
refundHash İşlem sonucu 1 olduğu durumlarda gönderilen iade edilmeye aday ödemenin anahtar kimlik bilgisi. Bu bilgi ile Ödeme İade Servisi çağırılarak iade işlemi gerçekleştirilebilir.

Örnek Çağrılar


                    //Request
                        public static string PrepareToken (string SHA1Data) { SHA1 sha = new SHA1CryptoServiceProvider();
                            byte[] hashbytes = System.Text.Encoding.UTF8.GetBytes(SHA1Data);
                            byte[] inputbytes = sha.ComputeHash(hashbytes);
                            return Convert.ToBase64String(inputbytes);
                        }
                

                            //request
                            public static String prepareToken (String text) throws Exception {
                                MessageDigest sha1 = MessageDigest.getInstance("SHA-1");
                                String hash = (new BASE64Encoder()).encode(sha1.digest(text.getBytes(“UTF-8”))); return hash;
                            }
                

                    //request
                    function prepareToken($text) {
                        $token = base64_encode(sha1($text,true));
                        return $token;
                    }
                
İade Servisi

Dokümanda, mağazanız üzerinden gerçekleşmiş bir ödemeyi iade edebilmenizi sağlayan servis entegrasyonu, örnekler ve tanımlar ile anlatılmıştır. Bu doküman, PosFix üye işyeri olan mağazalara yardımcı olması amacı ile oluşturulmuştur. Dokümanda anlatılan servis Restful servis olup JSON medya tipinde istekleri kabul etmektedir.

Kurumunuza ait kayıtlı mağazanın PosFix’da yaptığı ödemelerin iade işlemi öncesinde, ödeme durumunun sorgulanarak iade edilmeye uygun durumda olup olmadığının bilgisinin alınması gerekmektedir. Bu servis sonucunda alınan uygunluk değerine göre, bu servisten alınan parametreler ile “Ödeme İade Servisi” çağırılarak ödeme iadesi gerçekleştirilebilir.
İade durumu sorgulanmak istendiğinde gerekli istek bilgilerini JSON formatında hazırlayarak, https://api.posfix.com.tr/corporate/payment/refund adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder. PosFix işlem sonucunu yine JSON formatında mağazaya döner. Servisin, ilgili direkt ödemenin iade edilebilir sorgusunun yapılmış bir kayıt bilgisine ihtiyacı vardır. Bu bilgiye “Üye Mağaza İade Sorgulama Servisi” üzerinden ulaşılabilir.

İstek Güvenlik Bilgileri

HttpHeader Güvenlik Bilgileri

PosFix, güvenlik kontrolleri için, mağazadan bazı bilgileri HTTP Header alanında istemektedir. Aşağıda bu bilgilerin tanımları bulunmaktadır:

Parametre Adı Açıklama Opsiyonel/Zorunlu
transactionDate

İstek zamanı “yyyy-MM-dd HH:mm:ss“ formatındadır. İşlem zaman aşımına uğramış ise istek reddedilir.

Zorunlu
version

Entegrasyon versiyon bilgisidir. “1.0” olarak gönderilmelidir.

Zorunlu
token

“publicKey:hash” bilgisidir.
Hash bilgisi; "privateKey + orderId + clientIp + transactionDate" alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonun base64 methodu ile encode edilmesi sonucunda oluşur.

Zorunlu

Servis Girdi Parametreleri

Parametre Adı Açıklama Opsiyonel/Zorunlu
clientIp

İstekte bulunan kullanıcının IP adresi.

Zorunlu
orderId

İade edilmek istenen ödemeye ait mağaza sipariş numarası.

Zorunlu
refundHash

İade edilmeye aday ödemenin anahtar kimlik bilgisi. NOT: Bu bilgi iade sorgulama servisi sonucunda dönen refundHash bilgisidir.

Zorunlu
amount

İade yapılası istenen tutar bilgisidir. Tutar kuruş ayracı olmadan gönderilmelidir. Örneğin; 1 TL 100, 12 1200, 130 13000, 1.05 105, 1.2 120 olarak gönderilmelidir.

Zorunlu

Servis Çıktı Parametreleri

Parametre Adı Açıklama
result

İşlem sonucu
1 - İşlem Başarılı
0 - İşlem Başarısız

errorCode Hata Kodu.
errorMessage Hata Mesajı.
responseMessage Kullanıcıya gösterilecek hata veya başarılı sonuç mesajı. Başarılı entegrasyon sonrası hata mesajlarının kullanıcıya direkt gösterilmesini öneririz.
refundHash İşlem sonucu 1 olduğu durumlarda gönderilen iade edilmeye aday ödemenin anahtar kimlik bilgisi. Bu bilgi ile Ödeme İade Servisi çağırılarak iade işlemi gerçekleştirilebilir.

Örnek Çağrılar


                    //Request
                        public static string PrepareToken (string SHA1Data) { SHA1 sha = new SHA1CryptoServiceProvider();
                            byte[] hashbytes = System.Text.Encoding.UTF8.GetBytes(SHA1Data);
                            byte[] inputbytes = sha.ComputeHash(hashbytes);
                            return Convert.ToBase64String(inputbytes);
                        }
                

                    //request
                    public static String prepareToken (String text) throws Exception {
                        MessageDigest sha1 = MessageDigest.getInstance("SHA-1");
                        String hash = (new BASE64Encoder()).encode(sha1.digest(text.getBytes(“UTF-8”))); return hash;
                    }
                

                    //request
                    function prepareToken($text) {
                        $token = base64_encode(sha1($text,true));
                        return $token;
                    }
                
Cüzdan (Kart Saklama) Servisleri

Cüzdan servisleri, müşterilerinizin kredi kartlarını PosFix üzerinde saklayarak daha sonra aynı müşterilerinizden tekrar kart bilgisi istemeye gerek kalmadan ödeme yaptırabilmeyi sağlayan servisler bütünüdür.

Genel senaryo, müşteriniz ilk alışverişini yaparken kartını kaydetmek isteyip istemediğini sorarak verilecek onay sonrası "Cüzdana Kart Ekleme" servisiyle ve kullanıcının sizin sisteminizdeki benzersiz ID'sini ve diğer bilgileri göndererek müşteriye ait kartı PosFix sistemine ekleyebilirsiniz. Bu servis size kartı benzersiz kılan bir cardId dönecektir. Dönen bu ID'yi sisteminizde saklayabileceğiniz gibi istediğiniz anda sizin müşterinize ait kullanıcı ID'niz ile o kullanıcıya ait tüm kartları "Cüzdandaki Kartları Getir" servisiyle PosFix üzerinden sorgulayıp ekranda gösterebilirsiniz. Herhangi bir müşterinizin kartını PosFix sisteminden istediğiniz zaman "Cüzdandan Kart Sil" metoduyla silebilirsiniz.

Bu Bölümde, PosFix Direkt Ödeme altyapısı üzerinde çalışan mağaza cüzdan servislerinin entegrasyonu, örnekler ve tanımlar ile anlatılmıştır. Bu bölümde Mağaza kullanıcısına ait kart kaydetme, kaydedilen kullanıcı kartlarını sorgulama ve kayıtlı kart silme işlemleri için entegrasyon bilgilerine erişeceksiniz.

Cüzdana Kart Ekleme

Kullanıcının bir kartı kaydetmek istediği zaman kullanabileceği servistir. Bir kayıtlı kart oluşturulmak istendiğinde kart oluşturma verilerini JSON formatında hazırlayarak, https://api.posfix.com.tr/bankcard/create adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder. PosFix işlem sonucunu yine JSON formatında mağazaya döner.

İstek Güvenlik Bilgileri

PosFix, güvenlik kontrolleri için, mağazadan bazı bilgileri HTTP Header alanında istemektedir. Aşağıda bu bilgilerin tanımları bulunmaktadır:

HttpHeader Güvenlik Parametreleri
Parametre Adı Açıklama Opsiyonel/Zorunlu
transactionDate

İstek zamanı. "yyyy-MM-dd HH:mm:ss" formatındadır. İşlem zaman aşımına uğramış ise istek reddedilir. Örnek: "2014-08-12 23:59:59" İlgili kütüphane içindeki GetTransactionDate() fonksiyonundan elde edilebilir.

Zorunlu
version

Entegrasyon versiyon bilgisidir. "1.0" olarak gönderilmelidir.

Zorunlu
token

"publicKey:hash" bilgisidir. Hash bilgisi; ; "privateKey + userId + cardOwnerName + cardNumber + cardExpireMonth + cardExpireYear + clientIp + transactionDate" alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonun base64 methodu ile encode edilmesi sonucunda oluşur. Hash oluşturma fonksiyonu örnekleri burada anlatılmıştır.
token = public key + ‘:’ + base64[ sha1[("privateKey + userId + cardOwnerName + cardNumber + cardExpireMonth + cardExpireYear + clientIp + transactionDate")]]
token = "ASKJH98675ASDASDPO:jhsa/gd+89dfg0df6SA/dfg8967=="

Zorunlu

Servis Girdi Parametreleri

Servis içinde ileticek Girdi (Input) Parametreleri
Parametre Adı Açıklama Opsiyonel/Zorunlu
userId

Mağaza kullanıcısını referans eden bilgi.

Zorunlu
cardOwnerName

Kart üzerindeki ad. Minimum Uzunluk: 4 - Maksimum Uzunluk: 100 karakter.

Zorunlu
cardNumber

Kart numarası. Minimum Uzunluk: 12 - Maksimum Uzunluk: 19 karakter.

Zorunlu
cardAlias

Kart rumuz bilgisi.

Zorunlu
cardExpireMonth

Kart son kullanma tarihi ay parametresi. Uzunluk: 2 karakter. Örnek; 05,11, vb.

Zorunlu
cardExpireYear

Kart son kullanma tarihi yıl parametresi. Uzunluk: 2 karakter. Örnek; 14,19, vb.

Zorunlu
clientIp

Müşteri istemci IP adresi.

Zorunlu

Servis Çıktı Parametreleri

Servis Çıktı (Output) Parametreleri
Parametre Adı Açıklama
result

İşlem sonucu
1 - İşlem Başarılı
0 - İşlem Başarısız

errorMessage Hata Mesajı
errorCode Hata Kodu
cardId Tanımlanmış karta ait PosFix referans bilgisi. Bu bilgi ödeme tahsilatlarında kullanılacaktır.
maskNumber Kayıtlı kartın maskelenmiş numara bilgisi
alias Kayıtlı kartın rumuz bilgisi
bankId Banka id bilgisi. Tüm Türkiye de geçerli olan banka ID bilgisidir.
bankName Banka adı bilgisi
cardFamilyName Kart aile bilgisi
supportsInstallment

Taksit destekleme durumu
0 – Kart taksitli işlem desteklememektedir.
1 – Kart taksitli işlem desteklemektedir.

supportsInstallments

Desteklenen taksit dizisi. Bu alan değeri hem mağazanın taksit aktifliği hem de kartın taksit desteğine göre hesaplanmaktadır.

supportedInstallments Desteklenen taksit dizisi. Bu alan değeri hem mağazanın taksit aktifliği hem de ilgili bin numarasının taksit desteğine göre hesaplanmaktadır. Ek olarak eğer kart Ticari kart ise taksit bilgisi mağaza taksit aktifliğine bakılmaksızın hesaplanmaktadır.
type Kart tipi
0 – Kart tipi bilinmiyor
1 – Kredi Kartı
2 – Debit Kart
serviceProvider Servis sağlayıcısı
0 – Servis sağlayıcı bilinmiyor.
1 – Mastercard
2 – Visa
3 – Amex
4 - Troy
threeDSecureMandatory Kayıtlı kartın 3D güvenlik adımı zorunluluğu. Ödeme sırasında 3D secure işlem yapılması zorunluluğu, bu alan değeri hem mağazanın 3D Secure zorunluluğuna hem de kart ailesinin 3D Secure zorunluluğuna bağlı olarak zorunlu olabilir.
0 – 3D Secure zorunlu değil.
1 – 3D Secure zorunlu
cvcMandatory Kayıtlı kartın cvc zorunluluğu. Ödeme sırasında cvc bilgisinin gönderilmesi zorunluluğu, bu alan değeri hem mağazanın cvc zorunluluğuna hem de kart ailesinin cvc zorunluluğuna bağlı olarak zorunlu olabilir.
0 – CVC/CVV’siz ödeme kabulü yapılabilir.
1 – CVC/CVV gönderimi zorunludur.

Örnek Çağrılar


                            //Request

                            BankCardCreateRequest request = new BankCardCreateRequest();
                            request.userId = "123456";
                            request.cardOwnerName = "Fatih Ömeroğlu";
                            request.cardNumber = "4921309175123221";
                            request.cardAlias = "Adios";
                            request.cardExpireMonth = "12";
                            request.cardExpireYear = "23";
                            request.clientIp = "127.0.0.1";
                            BankCardCreateResponse response = BankCardCreateRequest.Execute(request, settings);
                                

                //request
                            BankCardCreateRequest request = new BankCardCreateRequest();
                            request.userId = "123456";
                            request.cardOwnerName = "Fatih Coşkun";
                            request.cardNumber = "4921309175175861";
                            request.cardAlias = "Adios";
                            request.cardExpireMonth = "12";
                            request.cardExpireYear = "23";
                            request.clientIp = "127.0.0.1";
                            BankCardCreateResponse response = BankCardCreateRequest.Execute(request, settings);
                

                //request
                $request = new BankCardCreateRequest();
                $request->userId = "123456";
                $request->cardOwnerName = "Fatih Coşkun";
                $request->cardNumber = "4921309175175861";
                $request->cardAlias = "Adios";
                $request->cardExpireMonth = "12";
                $request->cardExpireYear = "23";
                $request->clientIp=Helper::get_client_ip();
                $response=BankCardCreateRequest::execute($request,$settings);
                

                //Request
                posfix.AddCardToWallet("23956", "Ahmet Yıldız", "1234123412341234", "Maaş Kartım", "12", "20", "31.145.116.98").then(requestResult => {
                res.json(requestResult)
                }).catch(err => {
                console.log(err)
                })

                

                //Request
                      req=Bankcardcreaterequest.new
                      req.userId = params[:userId]
                      req.cardOwnerName = params[:nameSurname]
                      req.cardNumber = params[:cardNumber]
                      req.cardAlias = params[:cardAlias]
                      req.cardExpireMonth = params[:month]
                      req.cardExpireYear = params[:year]
                      req.clientIp = "127.0.0.1"
                      @@returnData= req.execute(req,@@settings)


                

                    //Request
                        req = BankCardCreateRequest()
                        req.userId = request.POST.get('userId')
                        req.cardOwnerName = request.POST.get('nameSurname')
                        req.cardNumber = request.POST.get('cardNumber')
                        req.cardAlias = request.POST.get('cardAlias')
                        req.cardExpireMonth = request.POST.get('month')
                        req.cardExpireYear = request.POST.get('year')
                        req.clientIp = "127.0.0.1"
                        response = req.execute(req, config)
                

                //Request
                    {
                      "userId":"23956"
                      "cardOwnerName":"Ahmet Yıldız",
                      "cardNumber":"1234123412341234",
                      "cardAlias":"Maaş Kartım",
                      "cardExpireMonth":"12",
                      "cardExpireYear ": "20",
                      "clientIp ": "127.0.0.1"
                    }
                //Response
                {
                      "cardId":" 00179cLjXNFg0WL0J6mFqxbww=="
                      "maskNumber":"454360******5659"
                      "alias": "Maaş Kartım",
                      "cardFamilyName ": "BONUS",
                      "bankId ": "8",
                      "bankName ": "GARANTİ",
                      "supportsInstallment": "1",
                      "supportedInstallments":[1,2,3,4,5,6,7,8,9,10,11,12],
                      "type": "2"
                      "serviceProvider":" VISA"
                      "threeDSecureMandatory":"1"
                      "cvcMandatory":"0"
                    }
                
Cüzdandaki Kartları Getir

Mağazanın, kullanıcının bir kartını veya kayıtlı olan tüm kartlarını sorgulamak istediği zaman kullanabileceği servistir. Kart sorgulaması yapılmak istendiğinde kart sorgulama verileri JSON formatında hazırlanarak, https://api.posfix.com.tr/bankcard/inquiry adresine gerekli güvenlik bilgileri http header bilgisine eklenerek post edilir. PosFix işlem sonucunu yine JSON formatında mağazaya döner.

İstek Güvenlik Bilgileri

PosFix, güvenlik kontrolleri için, mağazadan bazı bilgileri HTTP Header alanında istemektedir. Aşağıda bu bilgilerin tanımları bulunmaktadır:

HttpHeader Güvenlik Parametreleri
Parametre Adı Açıklama Opsiyonel/Zorunlu
transactionDate

İstek zamanı. "yyyy-MM-dd HH:mm:ss" formatındadır. İşlem zaman aşımına uğramış ise istek reddedilir. Örnek: "2014-08-12 23:59:59" İlgili kütüphane içindeki GetTransactionDate() fonksiyonundan elde edilebilir.

Zorunlu
version

Entegrasyon versiyon bilgisidir. "1.0" olarak gönderilmelidir.

Zorunlu
token

"publicKey:hash" bilgisidir. Hash bilgisi; ; "privateKey + userId + (*)cardId + clientIp + transactionDate" alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonun base64 methodu ile encode edilmesi sonucunda oluşur. Hash oluşturma fonksiyonu örnekleri burada anlatılmıştır.
token = public key + ‘:’ + base64[ sha1[("privateKey + userId + (*)cardId + clientIp + transactionDate")]]
token = "ASKJH98675ASDASDPO:jhsa/gd+89dfg0df6SA/dfg8967=="

Zorunlu

Servis Girdi Parametreleri

Servis içinde ileticek Girdi (Input) Parametreleri
Parametre Adı Açıklama Opsiyonel/Zorunlu
userId

Mağaza kullanıcısını referans eden bilgi.

Zorunlu
cardId

cardId Tanımlanmış karta ait PosFix referans bilgisi. Bu bilgi ödeme tahsilatlarında kullanılacaktır.
- Alan dolu olarak gönderilir ise sadece ilgili karta ait veriler dönülecektir.
- Alan boş olarak gönderilir ise kullanıcının tüm kartları dönülecektir.

Opsyionel
clientIp

Müşteri istemci IP adresi.

Zorunlu

Servis Çıktı Parametreleri

Servis Çıktı (Output) Parametreleri
Parametre Adı Açıklama
result

İşlem sonucu
1 - İşlem Başarılı
0 - İşlem Başarısız

errorMessage Hata Mesajı
errorCode Hata Kodu
cards - Kayıtlı kart bilgileri dizisi
cardId Tanımlanmış karta ait PosFix referans bilgisi. Bu bilgi ödeme tahsilatlarında kullanılacaktır.
maskNumber Kayıtlı kartın maskelenmiş numara bilgisi
alias Kayıtlı kartın rumuz bilgisi
bankId Banka id bilgisi. Tüm Türkiye de geçerli olan banka ID bilgisidir.
bankName Banka adı bilgisi
cardFamilyName Kart aile bilgisi
supportsInstallment

Taksit destekleme durumu
0 – Kart taksitli işlem desteklememektedir.
1 – Kart taksitli işlem desteklemektedir.

supportsInstallments

Desteklenen taksit dizisi. Bu alan değeri hem mağazanın taksit aktifliği hem de kartın taksit desteğine göre hesaplanmaktadır.

supportedInstallments Desteklenen taksit dizisi. Bu alan değeri hem mağazanın taksit aktifliği hem de ilgili bin numarasının taksit desteğine göre hesaplanmaktadır. Ek olarak eğer kart Ticari kart ise taksit bilgisi mağaza taksit aktifliğine bakılmaksızın hesaplanmaktadır.
type Kart tipi
0 – Kart tipi bilinmiyor
1 – Kredi Kartı
2 – Debit Kart
serviceProvider Servis sağlayıcısı
0 – Servis sağlayıcı bilinmiyor.
1 – Mastercard
2 – Visa
3 – Amex
4 - Troy
threeDSecureMandatory Kayıtlı kartın 3D güvenlik adımı zorunluluğu. Ödeme sırasında 3D secure işlem yapılması zorunluluğu, bu alan değeri hem mağazanın 3D Secure zorunluluğuna hem de kart ailesinin 3D Secure zorunluluğuna bağlı olarak zorunlu olabilir.
0 – 3D Secure zorunlu değil.
1 – 3D Secure zorunlu
cvcMandatory Kayıtlı kartın cvc zorunluluğu. Ödeme sırasında cvc bilgisinin gönderilmesi zorunluluğu, bu alan değeri hem mağazanın cvc zorunluluğuna hem de kart ailesinin cvc zorunluluğuna bağlı olarak zorunlu olabilir.
0 – CVC/CVV’siz ödeme kabulü yapılabilir.
1 – CVC/CVV gönderimi zorunludur.

Örnek Çağrılar


                            //Request

                            BankCardInquiryRequest request = new BankCardInquiryRequest();
                            request.userId = userId;
                            request.cardId = cardId;
                            request.clientIp = "127.0.0.1";
                            BankCardInquryResponse response = BankCardInquiryRequest.Execute(request, settings);
                                

                //request
                            BankCardInquiryRequest request = new BankCardInquiryRequest();
                            request.userId = "123456";
                            request.cardId = "";
                            request.clientIp = "127.0.0.1";
                            BankCardInquryResponse response = BankCardInquiryRequest.Execute(request, settings);
                

                //request
                $request = new BankCardInquiryRequest();
                $request->userId = "123456";
                $request->cardId = "";
                $request->clientIp=Helper::get_client_ip();
                $response=BankCardInquiryRequest::execute($request,$settings);
                

                //Request

                posfix.BankCardInquiryRequest(userId, cardId, "127.0.0.1").then(requestResult => {
                res.json(requestResult)
                }).catch(err => {
                console.log(err)
                })


                

                //Request
                      req=Bankcardinquiryrequest.new
                      req.userId = params[:userId]
                      req.cardId = params[:cardId]
                      req.clientIp = "127.0.0.1"
                      @@returnData= req.execute(req,@@settings)

                

                        //Request
                        req = BankCardInquiryRequest()
                        req.userId = request.POST.get('userId')
                        req.cardId = request.POST.get('cardId')
                        req.clientIp = "127.0.0.1"
                        response = req.execute(req, config)
                

                //Request
                    {
                  "clientIp": "127.0.0.1",
                  "userId": "179123",
                  "cardId": "00179cLjXNFg0WL0J6mFqxbww=="
                }
                //Response
                {
                  "result": "1",
                  "cards": [
                  {
                      "cardId":" 00179cLjXNFg0WL0J6mFqxbww==","
                      "maskNumber":" 454360******5659"
                      "alias": "Maaş Kartım",
                      "cardFamilyName ": "BONUS",
                      "bankId ": "8",
                      "bankName ": "GARANTİ",
                      "supportsInstallment ": "1",
                      "supportedInstallments":[1,2,3,4,5,6,7,8,9,10,11,12],
                      "type ": "2"
                      "serviceProvider":" VISA"
                      "threeDSecureMandatory":"1"
                      "cvcMandatory":" 0"
                    },
                    {
                      "cardId":" 89652FaEQERYHcasdSW6mOpre134==","
                      "maskNumber":" 665785******1345"
                      "alias": "Ek Kartım",
                      "cardFamilyName ": "BONUS",
                      "bankId ": "8",
                      "bankName ": "ŞEKERBANK",
                      "supportsInstallment ": "1",
                      "supportedInstallments":[1,2,3,4,5,6,7,8,9,10,11,12],
                      "type": "2"
                      "serviceProvider":" MASTERCARD"
                      "threeDSecureMandatory":"1"
                      "cvcMandatory":" 0"
                    },
                  ]
                }
                
Cüzdandan Kart Sil

Mağazanın, kullanıcının bir kartını veya kayıtlı olan tüm kartlarını silmek istediği zaman kullanabileceği servistir. Kart silme işlemi yapılmak istendiğinde kart silme verileri JSON formatında hazırlanarak, https://api.posfix.com.tr/bankcard/delete adresine gerekli güvenlik bilgileri http header bilgisine eklenerek post edilir. PosFix işlem sonucunu yine JSON formatında mağazaya döner.

İstek Güvenlik Bilgileri

PosFix, güvenlik kontrolleri için, mağazadan bazı bilgileri HTTP Header alanında istemektedir. Aşağıda bu bilgilerin tanımları bulunmaktadır:

HttpHeader Güvenlik Parametreleri
Parametre Adı Açıklama Opsiyonel/Zorunlu
transactionDate

İstek zamanı. "yyyy-MM-dd HH:mm:ss" formatındadır. İşlem zaman aşımına uğramış ise istek reddedilir. Örnek: "2014-08-12 23:59:59" İlgili kütüphane içindeki GetTransactionDate() fonksiyonundan elde edilebilir.

Zorunlu
version

Entegrasyon versiyon bilgisidir. "1.0" olarak gönderilmelidir.

Zorunlu
token

"publicKey:hash" bilgisidir. Hash bilgisi; ; "privateKey + userId + (*)cardId + clientIp + transactionDate" alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonun base64 methodu ile encode edilmesi sonucunda oluşur. Hash oluşturma fonksiyonu örnekleri burada anlatılmıştır.
token = public key + ‘:’ + base64[ sha1[("privateKey + userId + (*)cardId + clientIp + transactionDate")]]
token = "ASKJH98675ASDASDPO:jhsa/gd+89dfg0df6SA/dfg8967=="

Zorunlu

Servis Girdi Parametreleri

Servis içinde ileticek Girdi (Input) Parametreleri
Parametre Adı Açıklama Opsiyonel/Zorunlu
userId

Mağaza kullanıcısını referans eden bilgi.

Zorunlu
cardId

cardId Tanımlanmış karta ait PosFix referans bilgisi. Bu bilgi ödeme tahsilatlarında kullanılacaktır.
- Alan dolu olarak gönderilir ise sadece ilgili karta ait veriler dönülecektir.
- Alan boş olarak gönderilir ise kullanıcının tüm kartları dönülecektir.

Opsyionel
clientIp

Müşteri istemci IP adresi.

Zorunlu

Servis Çıktı Parametreleri

Servis Çıktı (Output) Parametreleri
Parametre Adı Açıklama
result

İşlem sonucu
1 - İşlem Başarılı
0 - İşlem Başarısız

errorMessage Hata Mesajı
errorCode Hata Kodu
responseMessage Kullanıcıya gösterilecek mesaj
- Banka kartınız silinmiştir.
- Kullanıcı kartları silinmiştir.

Örnek Çağrılar


                            //Request

                            BankCardDeleteRequest request=new BankCardDeleteRequest();
                            request.userId = userId;
                            request.cardId = cardId;
                            request.clientIp = "127.0.0.1";
                            BankCardDeleteResponse response = BankCardDeleteRequest.Execute(request, settings);
                            

                                                            //Request

                            BankCardDeleteRequest request=new BankCardDeleteRequest();
                            request.userId = userId;
                            request.cardId = cardId;
                            request.clientIp = "127.0.0.1";
                            BankCardDeleteResponse response = BankCardDeleteRequest.Execute(request, settings);
                

                //request
                $request = new BankCardDeleteRequest();
                $request->userId = userId;
                $request->cardId = "";
                $request->clientIp=Helper::get_client_ip();
                $response=BankCardDeleteRequest::execute($request,$settings);
                

                //Request
                posfix.BankCardDeleteRequest("179123", "00179cLjXNFg0WL0J6mFqxbww==", "127.0.0.1").then(requestResult => {
                res.json(requestResult)
                }).catch(err => {
                console.log(err)
                })


                

                //Request
                      req=Bankcarddeleterequest.new
                      req.userId = params[:userId]
                      req.cardId = params[:cardId]
                      req.clientIp = "127.0.0.1"
                      @@returnData= req.execute(req,@@settings)

                

                //Request
                        req = BankCardDeleteRequest()
                        req.userId = request.POST.get('userId')
                        req.cardId = request.POST.get('cardId')
                        req.clientIp = "127.0.0.1"
                        response = req.execute(req, config)
                

                //Request
                   {
                  "clientIp": "127.0.0.1",
                  "userId": "179123",
                  "cardId": "00179cLjXNFg0WL0J6mFqxbww=="
                }
                //Response
                {
                  {
                  "result": "1",
                  "responseMessage": "Kullanıcı kartları silinmiştir."
                }
                
Cüzdandaki Kart İle Ödeme

Normal ödeme servislerinde tarif edilen yapılara benzer olarak aynı yapıda çalışan ödeme şeklidir. Normal ödemelerden farklı olarak Kart Numarası, Adı Soyadı, CVC ve SKT gibi alanları "" göndererek ve onların yerine UserId ve CardId bilgisinin gönderilmesi ile yapılan ödeme çeşididir.

İstek Güvenlik Bilgileri

PosFix, güvenlik kontrolleri için, mağazadan bazı bilgileri HTTP Header alanında istemektedir. Aşağıda bu bilgilerin tanımları bulunmaktadır:

HttpHeader Güvenlik Parametreleri
Parametre Adı Açıklama Opsiyonel/Zorunlu
transactionDate

İstek zamanı. “yyyy-MM-dd HH:mm:ss“ formatındadır. İşlem zaman aşımına uğramış ise istek reddedilir. Örnek: “2014-08-12 23:59:59” İlgili kütüphane içindeki GetTransactionDate() fonksiyonundan elde edilebilir.

Zorunlu
version

Entegrasyon versiyon bilgisidir. “1.0” olarak gönderilmelidir.

Zorunlu
token

“publicKey:hash” bilgisidir. Hash bilgisi; "privateKey + orderId + amount + mode + (*)cardOwnerName + (*)cardNumber + (*)cardExpireMonth + (*)cardExpireYear + (*)cardCvc + (*)userId + (*)cardId + purchaser.name + purchaser.surname + purchaser.email + transactionDate" alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonun base64 methodu ile encode edilmesi sonucunda oluşur. Hash oluşturma fonksiyonu örnekleri burada anlatılmıştır.
token = public key + ‘:’ + base64[ sha1[("privateKey + orderId + amount + mode + (*)cardOwnerName + (*)cardNumber + (*)cardExpireMonth + (*)cardExpireYear + (*)cardCvc + (*)userId + (*)cardId + purchaser.name + purchaser.surname + purchaser.email + transactionDate")]]
token = “ASKJH98675ASDASDPO:jhsa/gd+89dfg0df6SA/dfg8967==”

Zorunlu

Servis Girdi Parametreleri

Servis içinde ileticek Girdi (Input) Parametreleri
Parametre Adı Açıklama Opsiyonel/Zorunlu
mode

İstek modu. “P” veya “T” gönderilmelidir.
“P” - Gerçek Ödeme
“T” – Test Ödemesi
Entegrasyon işlemlerinizde mode alanını “T” olarak göndererek test işlemlerinizi gerçekleştirebilirsiniz.
ÖNEMLİ NOT: Test modunda iken ödemeler banka poslarından tahsil edilmez. Test işlemleriniz sonunda gerçek ödeme tahsilatı için mode alanını “P” olarak göndermeyi unutmayınız.

Zorunlu
threeD

3D Secure olmadan gerçekleştirilen ödeme işlemlerinde “false” olarak gönderilmelidir.

Zorunlu
orderId

Mağazanın ilgili sipariş ile ilişkilendirdiği her bir istek için benzersiz olan tekil sipariş kodu. Maksimum Uzunluk: 100 karakter.

Zorunlu
cardOwnerName

Kart üzerindeki ad. Minimum Uzunluk: 4 - Maksimum Uzunluk: 100 karakter.

*
cardNumber

Kart numarası. Minimum Uzunluk: 12 - Maksimum Uzunluk: 19 karakter.

*
cardExpireMonth

Kart son kullanma tarihi ay parametresi Uzunluk: 2 karakter. Örnek; 05,11, vb.

*
cardExpireYear

Kart son kullanma tarihi yıl parametresi. Uzunluk: 2 karakter. Örnek; 14,19, vb.

*
cardCvc

Kartın arkasındaki güvenlik kodu: Uzunluk: MasterCard ve Visa kartları için 3 karakter, Amex kartlar için 3 veya 4 karakter.

*
userId

Mağaza kullanıcısını referans eden bilgi. Maksimum uzunluk 255 karakter.
Cüzdan servisleri ile daha önceden kaydedilmiş olan kayıtlı kart ile tek tıkla ödeme işlemi gerçekleştirilmek istendiğinde gönderilmelidir.

*
cardId

Mağaza kullanıcısının kartını referans eden kart kaydetme işlemi sonucunda oluşan id bilgisi.
Cüzdan servisleri ile daha önceden kaydedilmiş olan kayıtlı kart ile tek tıkla ödeme işlemi gerçekleştirilmek istendiğinde gönderilmelidir.

*
installment

Taksit Sayısı. Minimum Uzunluk: 1 - Maksimum Uzunluk: 2 karakter.Desteklenen taksit sayıları: 1,2,3,4,5,6,7,8,9,10,11,12

Zorunlu
amount

Karttan çekilecek olan toplam sipariş tutarı. Sipariş tutarı kuruş ayracı olmadan gönderilmelidir. Örneğin; 1 TL 100, 12 1200, 130 13000, 1.05 105, 1.2 120 olarak gönderilmelidir.

Zorunlu
echo

Mağazaya istek sonucunda geri gönderilecek bilgi alanıdır. Maksimum Uzunluk: 255.

Opsiyonel
vendorId

PosFix tarafından sağlanan altyapı sağlayıcı id bilgisi. Mağaza kendi yazılımını kullanıyor ise bu alan gönderilmemelidir.

Opsiyonel
purchaser

Müşteri Bilgileri. Aşağıdaki tabloda iç parametreleri anlatılmıştır.

Opsiyonel
products

Ürün Bilgileri. Aşağıdaki tabloda iç parametreleri anlatılmıştır.

Zorunlu
Müşteri Bilgileri (Purchaser)
Parametre Adı Açıklama Opsiyonel/Zorunlu
purchaserName

Müşteri isim bilgisi. Minimum Uzunluk: 3 - Maksimum Uzunluk: 50. Zorunlu

Zorunlu
purchaserSurname Müşteri soyisim bilgisi. Minimum Uzunluk: 3 - Maksimum Uzunluk: 50. Zorunlu
purchaserEmail Müşteri e-posta bilgisi. E-posta adresi geçerli bir e-posta adresi olmalıdır. Minimum Uzunluk: 3 - Maksimum Uzunluk: 100. Zorunlu
clientIp Müşteri istemci IP adresi Zorunlu
birthDate Müşteri doğum tarihi bilgisi. “yyyy-MM-dd” formatında olmalıdır. Opsiyonel
gsmNumber Müşteri cep telefonu bilgisi. Opsiyonel
tcCertificate Müşteri T.C. Kimlik Numarası bilgisi. 11 haneli olmalıdır. Opsiyonel
invoiceAddress Fatura adresi bilgileri. Aşağıdaki tabloda iç parametreleri anlatılmıştır. Opsiyonel
shippingAddress Kargo adresi bilgileri.Aşağıdaki tabloda iç parametreleri anlatılmıştır. Opsiyonel
Müşteri Fatura Adresi Bilgileri (invoiceAddress)
Parametre Adı Açıklama Opsiyonel/Zorunlu
name İsim bilgisi. Opsiyonel
surname Soyisim bilgisi. Opsiyonel
address Adres bilgisi. Opsiyonel
zipcode Posta kodu bilgisi. Opsiyonel
city Şehir bilgisi. Opsiyonel
country Ülke bilgisi. ISO 3166-1 alpha-2 standardındaki ülke kodu. Türkiye için “TR”. Opsiyonel
tcCertificate T.C. Kimlik numarası bilgisi. Opsiyonel
taxNumber Vergi numarası bilgisi Opsiyonel
taxOffice Vergi dairesi bilgisi Opsiyonel
companyName Şirket ismi bilgisi Opsiyonel
phoneNumber Telefon bilgisi Opsiyonel
Müşteri Kargo Adresi Bilgileri (shippingAddress)
Parametre Adı Açıklama Opsiyonel/Zorunlu
name İsim bilgisi. Opsiyonel
surname Soyisim bilgisi. Opsiyonel
address Adres bilgisi. Opsiyonel
zipcode Posta kodu bilgisi. Opsiyonel
city Şehir bilgisi. Opsiyonel
country Ülke bilgisi. ISO 3166-1 alpha-2 standardındaki ülke kodu. Türkiye için “TR”. Opsiyonel
phoneNumber Telefon bilgisi Opsiyonel
Ürün Bilgileri (products)
Parametre Adı Açıklama Opsiyonel/Zorunlu
productCode Ürün kodu bilgisi. Opsiyonel
productName Ürün isim bilgisi. Opsiyonel
quantity Ürün adet bilgisi. Opsiyonel
price Ürün birim fiyat bilgisi. Opsiyonel
Önemli NOT: En az bir adet ürün (product) bilgisi gönderimi zorunludur.


Servis Çıktı Parametreleri

Servis Çıktı (Output) Parametreleri
Parametre Adı Açıklama
result

İşlem sonucu
1 - İşlem Başarılı
0 - İşlem Başarısız

errorMessage Hata Mesajı
errorCode Hata Kodu
publicKey Mağaza açık anahtar bilgisi.
echo Mağazanın istek bilgisinde iletmiş olduğu echo verisi.
transactionDate Hash hesaplamasında kullanılacak zaman bilgisi. “yyyy-MM-dd HH:mm:ss“ formatındadır.
mode

İstek modu.
“P” - Gerçek Ödeme
“T” – Test Ödemesi

orderId Mağaza sipariş Id
amount Sipariş toplam tutar bilgisi.
hash “orderId + result + amount + mode + errorCode + errorMessage + transactionDate + publicKey + privateKey” alanlarını birbirlerine, verilen sıra ile ekleyerek, SHA1 kriptografik hash fonksiyonun base64 methodu ile encode edilmesi sonucunda bu değer oluşur.
Not 1: İşlem sonucunda sizlere gönderilen hash bilgisini tarafınıza gelen parametreler ile tekrar hesaplayıp bu alandaki bilgi ile karşılaştırılması gerekmektedir. Eğer aynı hash değeri oluşmuyor ise işlemi reddetmelisiniz. Aksi durumda cevap bilgisi iletiminde üçüncü kişilerin araya girerek sahtekarlık yapabilme olasılığı ortaya çıkacaktır.
Not 2: Hash bilgisi hesaplamasında null olan veriler, String “” olarak hesaplanmıştır.
Not 3: İstek bilgileri içerisinde mağazanın tanımamasından kaynaklı olarak mağaza bilgileri yoksa cevap bilgisinde hash ve transactionDate alanları gönderilmeyecektir.

Örnek Çağrılar


                            //Request
                            var request = new ApiPaymentRequest();
                            request.OrderId = Guid.NewGuid().ToString();
                            request.Echo = "Echo";
                            request.Mode = settings.Mode;
                            request.Amount = "10000"; // 100 tL
                            request.CardOwnerName = "";
                            request.CardNumber = "";
                            request.CardExpireMonth = "";
                            request.CardExpireYear = "";
                            request.Installment = "1";
                            request.Cvc = "";
                            request.UserId="123456"; //Kullanıcın sizin sistemdeki ID'si
                            request.CardId="0017Wg1W2SZQdDHRD9c5FT3u+SCQ/KuT33lRmpncD2zSaU="; //Kaydedilen Kartın ID'si
                            request.ThreeD = "false";
                            #region Sipariş veren bilgileri
                            request.Purchaser = new Purchaser();
                            request.Purchaser.Name = "Ahmet";
                            request.Purchaser.SurName = "Veli";
                            request.Purchaser.BirthDate = "1986-07-11";
                            request.Purchaser.Email = "[email protected]";
                            request.Purchaser.GsmPhone = "5881231212";
                            request.Purchaser.IdentityNumber = "1234567890";
                            request.Purchaser.ClientIp = "127.0.0.1";
                            #endregion
                            #region Fatura bilgileri
                            request.Purchaser.InvoiceAddress = new PurchaserAddress();
                            request.Purchaser.InvoiceAddress.Name = "Ahmet";
                            request.Purchaser.InvoiceAddress.SurName = "Veli";
                            request.Purchaser.InvoiceAddress.Address = "Mevlüt Pehlivan Mah. PosFix Plaza Şişli";
                            request.Purchaser.InvoiceAddress.ZipCode = "34782";
                            request.Purchaser.InvoiceAddress.CityCode = "34";
                            request.Purchaser.InvoiceAddress.IdentityNumber = "1234567890";
                            request.Purchaser.InvoiceAddress.CountryCode = "TR";
                            request.Purchaser.InvoiceAddress.TaxNumber = "123456";
                            request.Purchaser.InvoiceAddress.TaxOffice = "Kozyatağı";
                            request.Purchaser.InvoiceAddress.CompanyName = "PosFix";
                            request.Purchaser.InvoiceAddress.PhoneNumber = "2122222222";
                            #endregion
                            #region Kargo Adresi bilgileri
                            request.Purchaser.ShippingAddress = new PurchaserAddress();
                            request.Purchaser.ShippingAddress.Name = "Ahmet";
                            request.Purchaser.ShippingAddress.SurName = "Veli";
                            request.Purchaser.ShippingAddress.Address = "Mevlüt Pehlivan Mah. PosFix Plaza Şişli";
                            request.Purchaser.ShippingAddress.ZipCode = "34782";
                            request.Purchaser.ShippingAddress.CityCode = "34";
                            request.Purchaser.ShippingAddress.IdentityNumber = "1234567890";
                            request.Purchaser.ShippingAddress.CountryCode = "TR";
                            request.Purchaser.ShippingAddress.PhoneNumber = "2122222222";
                            #endregion
                            #region Ürün bilgileri
                            request.Products = new List();
                            Product p = new Product();
                            p.Title = "Telefon";
                            p.Code = "TLF0001";
                            p.Price = "5000";
                            p.Quantity = 1;
                            request.Products.Add(p);
                            p = new Product();
                            p.Title = "Bilgisayar";
                            p.Code = "BLG0001";
                            p.Price = "5000";
                            p.Quantity = 1;
                            request.Products.Add(p);
                            #endregion
                            ApiPaymentResponse response = ApiPaymentRequest.Execute(request, settings);
                                

                //request
                            ApiPaymentRequest request = new ApiPaymentRequest();
                            UUID uuid = UUID.randomUUID();
                            request.OrderId = uuid.toString();
                            request.echo = "Echo";
                            request.mode = settings.Mode;
                            request.Amount = "10000"; // 100 tL
                            request.CardOwnerName = "";
                            request.CardNumber = "";
                            request.CardExpireMonth = "";
                            request.CardExpireYear = "";
                            request.Installment = "1";
                            request.Cvc = "";
                            request.ThreeD = "false";
                            request.UserId="123456"; //Kullanıcın sizin sistemdeki ID'si
                            request.CardId="0017Wg1W2SZQdDHRD9c5FT3u+SCQ/KuT33lRmpncD2zSaU="; //Kaydedilen Kartın ID'si
                            request.Purchaser = new Purchaser();
                            request.Purchaser.Name = "Ahmet";
                            request.Purchaser.SurName = "Veli";
                            request.Purchaser.BirthDate = "1986-07-11";
                            request.Purchaser.Email = "[email protected]";
                            request.Purchaser.GsmPhone = "5881231212";
                            request.Purchaser.IdentityNumber = "1234567890";
                            request.Purchaser.ClientIp = "127.0.0.1";

                            request.Purchaser.InvoiceAddress = new PurchaserAddress();
                            request.Purchaser.InvoiceAddress.Name = "Ahmet";
                            request.Purchaser.InvoiceAddress.SurName = "Veli";
                            request.Purchaser.InvoiceAddress.Address = "Mevlüt Pehlivan Mah. PosFix Plaza Şişli";
                            request.Purchaser.InvoiceAddress.ZipCode = "34782";
                            request.Purchaser.InvoiceAddress.CityCode = "34";
                            request.Purchaser.InvoiceAddress.IdentityNumber = "1234567890";
                            request.Purchaser.InvoiceAddress.CountryCode = "TR";
                            request.Purchaser.InvoiceAddress.TaxNumber = "123456";
                            request.Purchaser.InvoiceAddress.TaxOffice = "Kozyatağı";
                            request.Purchaser.InvoiceAddress.CompanyName = "PosFix";
                            request.Purchaser.InvoiceAddress.PhoneNumber = "2122222222";

                            request.Purchaser.ShippingAddress = new PurchaserAddress();
                            request.Purchaser.ShippingAddress.Name = "Ahmet";
                            request.Purchaser.ShippingAddress.SurName = "Veli";
                            request.Purchaser.ShippingAddress.Address = "Mevlüt Pehlivan Mah. PosFix Plaza Şişli";
                            request.Purchaser.ShippingAddress.ZipCode = "34782";
                            request.Purchaser.ShippingAddress.CityCode = "34";
                            request.Purchaser.ShippingAddress.IdentityNumber = "1234567890";
                            request.Purchaser.ShippingAddress.CountryCode = "TR";
                            request.Purchaser.ShippingAddress.PhoneNumber = "2122222222";

                            request.product = new ArrayList();
                            Product p = new Product();
                            p.Title = "Telefon";
                            p.Code = "TLF0001";
                            p.Price = "5000";
                            p.Quantity = "1";
                            request.product.add(p);
                            p = new Product();
                            p.Title = "Bilgisayar";
                            p.Code = "BLG0001";
                            p.Price = "5000";
                            p.Quantity = "1";
                            request.product.add(p);
                            ApiPaymentResponse response = ApiPaymentRequest.Execute(request, settings);
                

                                //request
                $request = new ApiPaymentRequest();
                $request->OrderId = Helper::Guid();
                $request->Echo = "Echo";
                $request->Mode = $settings->Mode;
                $request->Amount = "10000"; // 100 tL
                $request->CardOwnerName = "";
                $request->CardNumber = "";
                $request->CardExpireMonth = "";
                $request->CardExpireYear = "";
                $request->Installment = "1";
                $request->Cvc = "";
                $request->UserId="123456"; //Kullanıcın sizin sistemdeki ID'si
                $request->CardId="0017Wg1W2SZQdDHRD9c5FT3u+SCQ/KuT33lRmpncD2zSaU="; //Kaydedilen Kartın ID'si
                $request->ThreeD = "false";
                #region Sipariş veren bilgileri
                $request->Purchaser = new Purchaser();
                $request->Purchaser->Name = "Ahmet";
                $request->Purchaser->SurName = "Veli";
                $request->Purchaser->BirthDate = "1986-07-11";
                $request->Purchaser->Email = "[email protected]";
                $request->Purchaser->GsmPhone = "5881231212";
                $request->Purchaser->IdentityNumber = "1234567890";
                $request->Purchaser->ClientIp = Helper::get_client_ip();
                #endregion
                #region Fatura bilgileri
                $request->Purchaser->InvoiceAddress = new PurchaserAddress();
                $request->Purchaser->InvoiceAddress->Name = "Ahmet";
                $request->Purchaser->InvoiceAddress->SurName = "Veli";
                $request->Purchaser->InvoiceAddress->Address = "Mevlüt Pehlivan Mah-> PosFix Plaza Şişli";
                $request->Purchaser->InvoiceAddress->ZipCode = "34782";
                $request->Purchaser->InvoiceAddress->CityCode = "34";
                $request->Purchaser->InvoiceAddress->IdentityNumber = "1234567890";
                $request->Purchaser->InvoiceAddress->CountryCode = "TR";
                $request->Purchaser->InvoiceAddress->TaxNumber = "123456";
                $request->Purchaser->InvoiceAddress->TaxOffice = "Kozyatağı";
                $request->Purchaser->InvoiceAddress->CompanyName = "PosFix";
                $request->Purchaser->InvoiceAddress->PhoneNumber = "2122222222";
                #endregion
                #region Kargo Adresi bilgileri
                $request->Purchaser->ShippingAddress = new PurchaserAddress();
                $request->Purchaser->ShippingAddress->Name = "Ahmet";
                $request->Purchaser->ShippingAddress->SurName = "Veli";
                $request->Purchaser->ShippingAddress->Address = "Mevlüt Pehlivan Mah-> PosFix Plaza Şişli";
                $request->Purchaser->ShippingAddress->ZipCode = "34782";
                $request->Purchaser->ShippingAddress->CityCode = "34";
                $request->Purchaser->ShippingAddress->IdentityNumber = "1234567890";
                $request->Purchaser->ShippingAddress->CountryCode = "TR";
                $request->Purchaser->ShippingAddress->PhoneNumber = "2122222222";
                #endregion
                #region Ürün bilgileri
                $request->Products =  array();
                $p = new Product();
                $p->Title = "Telefon";
                $p->Code = "TLF0001";
                $p->Price = "5000";
                $p->Quantity = 1;
                $request->Products[0]=$p;
                $p = new Product();
                $p->Title = "Bilgisayar";
                $p->Code = "BLG0001";
                $p->Price = "5000";
                $p->Quantity = 1;
                $request->Products[1]=$p;
                #endregion
                $response=ApiPaymentRequest::execute($request,$settings);


                

                //Request

                const obj = {
                    echo: "",
                    amount: "10000",
                    publicKey: settings.publicKey,
                    orderId: Guid.raw(),
                    mode: settings.mode,
                    threeD: "false",
                    cardId: "0017Wg1W2SZQdDHRD9c5FT3u+SCQ/KuT33lRmpncD2zSaU=",
                    userId: "123456",
                    cardOwnerName : "",
                    cardNumber : "",
                    cardExpireMonth : "",
                    cardExpireYear : "",
                    cardCvc : "",
                    installment : "1",
                    products: [{
                    productName: "Telefon",
                    productCode: "TLF0001",
                    quantity: "1",
                    price: "5000"
                    },
                    {
                    productName: "Bilgisayar",
                    productCode: "BIL0002",
                    quantity: "1",
                    price: "5000"
                    }
                    ],
                    purchaser: {
                    birthDate: "1986-07-11",
                    gsmNumber: "5881231212",
                    tcCertificate: "1234567890",
                    name : "Ahmet",
                    surname : "Veli",
                    email : "[email protected]",
                    clientIp : "123.58.7.4",
                    invoiceAddress: {
                    name: "Ahmet",
                    surname: "Veli",
                    address: "Mevlüt Pehlivan Mah. PosFix Plaza Şişli",
                    zipcode: "34782",
                    city: "34",
                    tcCertificate: "12345678901",
                    country: "tr",
                    taxNumber: "123456890",
                    taxOffice: "Şişli",
                    companyName: "PosFix",
                    phoneNumber: "2123886600"
                    },
                    shippingAddress: {
                    name: "Ahmet",
                    surname: "Veli",
                    address: "Mevlüt Pehlivan Mah. PosFix Plaza Şişli",
                    zipcode: "34782",
                    city: "34",
                    country: "tr",
                    phoneNumber: "2123886600"
                    }
                    }
                }

                posfix.ApiPaymentWithWallet(obj).then(results => {
                parseString(results, function (err, result) {
                if (err) throw new Error(err);
                res.json(result)
                });
                }).catch(err=>{
                console.log(err)
                })


                

                //Request
                    req=Apipaymentrequest.new

                    req.OrderId = SecureRandom.uuid
                    req.Echo = "Echo"
                    req.Mode =  @@settings.Mode
                    req.Amount = "10000" # 100 tL
                    req.CardOwnerName =""
                    req.CardNumber =""
                    req.CardExpireMonth = ""
                    req.CardExpireYear = ""
                    req.Installment = ""
                    req.Cvc = ""
                    req.ThreeD = "false"
                    req.UserId=params[:userId]
                    req.CardId=params[:cardId]

                    #region Sipariş veren bilgileri
                    req.Purchaser = Purchaser.new
                    req.Purchaser.Name = "Ahmet"
                    req.Purchaser.SurName = "Veli"
                    req.Purchaser.BirthDate = "1986-07-11"
                    req.Purchaser.Email = "[email protected]"
                    req.Purchaser.GsmPhone = "5881231212"
                    req.Purchaser.IdentityNumber = "1234567890"
                    req.Purchaser.ClientIp = "127.0.0.1"
                    #endregion
                    #region Fatura bilgileri
                    req.Purchaser.Invoiceaddress = Purchaseraddress.new
                    req.Purchaser.Invoiceaddress.Name = "Ahmet"
                    req.Purchaser.Invoiceaddress.SurName = "Veli"
                    req.Purchaser.Invoiceaddress.Address = "Mevlüt Pehlivan Mah. PosFix Plaza Şişli"
                    req.Purchaser.Invoiceaddress.ZipCode = "34782"
                    req.Purchaser.Invoiceaddress.CityCode = "34"
                    req.Purchaser.Invoiceaddress.IdentityNumber = "1234567890"
                    req.Purchaser.Invoiceaddress.CountryCode = "TR"
                    req.Purchaser.Invoiceaddress.TaxNumber = "123456"
                    req.Purchaser.Invoiceaddress.TaxOffice = "Kozyatağı"
                    req.Purchaser.Invoiceaddress.CompanyName = "PosFix"
                    req.Purchaser.Invoiceaddress.PhoneNumber = "2122222222"
                    #endregion
                    #region Kargo Adresi bilgileri
                    req.Purchaser.Shippingaddress = Purchaseraddress.new
                    req.Purchaser.Shippingaddress.Name = "Ahmet"
                    req.Purchaser.Shippingaddress.SurName = "Veli"
                    req.Purchaser.Shippingaddress.Address = "Mevlüt Pehlivan Mah. PosFix Plaza Şişli"
                    req.Purchaser.Shippingaddress.ZipCode = "34782"
                    req.Purchaser.Shippingaddress.CityCode = "34"
                    req.Purchaser.Shippingaddress.IdentityNumber = "1234567890"
                    req.Purchaser.Shippingaddress.CountryCode = "TR"
                    req.Purchaser.Shippingaddress.PhoneNumber = "2122222222"
                    #endregion
                    #region Ürün bilgileri
                    req.Products = Array.new()
                    p =Product.new
                    p.Title = "Telefon"
                    p.Code = "TLF0001"
                    p.Price = "5000"
                    p.Quantity = 1
                    req.Products << p
                    p =Product.new
                    p.Title = "Bilgisayar"
                    p.Code = "BLG0001"
                    p.Price = "5000"
                    p.Quantity = 1
                    req.Products << p
                    #endregion
                    @@returnData= req.execute(req,@@settings)

                

                //Request
                        req = ApiPaymentRequest()
                        req.OrderId = str(randint(1, 10000))
                        req.Echo = "Echo"
                        req.Mode = config.Mode
                        req.Amount = "10000" #100TL
                        req.CardOwnerName = ""
                        req.CardNumber = ""
                        req.CardExpireMonth = ""
                        req.CardExpireYear = ""
                        req.Installment = "1"
                        req.Cvc = ""
                        req.ThreeD = "false"
                        req.UserId = request.POST.get('userId') #Kullanıcın sizin sistemdeki ID'si
                        req.CardId = request.POST.get('cardId') #Kaydedilen Kartın ID'si
                        # Sipariş veren bilgileri
                        req.Purchaser = req.PurchaserClass()
                        req.Purchaser.name = "Ahmet"
                        req.Purchaser.surname = "Veli"
                        req.Purchaser.birthDate = "1986-07-11"
                        req.Purchaser.email = "[email protected]"
                        req.Purchaser.gsmPhone = "5889541011"
                        req.Purchaser.tcCertificate = "1234567890"
                        req.Purchaser.clientIp = "127.0.0.1"
                        # Fatura bilgileri
                        req.Purchaser.invoiceAddress = req.PurchaserAddress()
                        req.Purchaser.invoiceAddress.name = "Ahmet"
                        req.Purchaser.invoiceAddress.surname = "Veli"
                        req.Purchaser.invoiceAddress.address = "Mevlüt Pehlivan Mah. PosFix Plaza Şişli"
                        req.Purchaser.invoiceAddress.zipCode = "34782"
                        req.Purchaser.invoiceAddress.cityCode = "34"
                        req.Purchaser.invoiceAddress.tcCertificate = "1234567890"
                        req.Purchaser.invoiceAddress.country = "TR"
                        req.Purchaser.invoiceAddress.phoneNumber = "2122222222"
                        # Kargo adresi bilgileri
                        req.Purchaser.shippingAddress = req.PurchaserAddress()
                        req.Purchaser.shippingAddress.name = "Ahmet"
                        req.Purchaser.shippingAddress.surname = "Veli"
                        req.Purchaser.shippingAddress.address = "Mevlüt Pehlivan Mah. PosFix Plaza Şişli"
                        req.Purchaser.shippingAddress.zipCode = "34782"
                        req.Purchaser.shippingAddress.cityCode = "34"
                        req.Purchaser.shippingAddress.tcCertificate = "1234567890"
                        req.Purchaser.shippingAddress.country = "TR"
                        req.Purchaser.shippingAddress.phoneNumber = "2122222222"
                        # Ürün Bilgileri
                        req.Products = []
                        product1 = req.Product()
                        product1.title = "Telefon"
                        product1.code = "TLF0001"
                        product1.price = "5000"
                        product1.quantity = "1"
                        req.Products.append(product1)
                        product2 = req.Product()
                        product2.title = "Bilgisayar"
                        product2.code = "BLG0001"
                        product2.price = "5000"
                        product2.quantity = "1"
                        req.Products.append(product2)
                        # Cüzdandaki kart ile ödeme yapma API çağrısının yapıldığı kısımdır.
                        message = req.execute(req, config)

                

                            
                     //Request
                            <?xml version="1.0" encoding="UTF-8" ?>
                <auth>
                            <cardOwnerName></cardOwnerName>
                            <cardNumber></cardNumber>
                            <cardExpireMonth></cardExpireMonth>
                            <cardExpireYear></cardExpireYear>
                            <cardCvc></cardCvc>
                            <cardId>0017Wg1W2SZQdDHRD9c5FT3u+SCQ/KuT33lRmpncD2zSaU=</cardId>
                            <userId>123456</userId>
                            <installment>1</installment>
                            <threeD>false</threeD>
                            <orderId>b3091d88-6320-4446-be6c-7a1f8e6e73c7</orderId>
                            <echo>Echo Bilgisi</echo>
                            <amount>2500</amount>
                            <mode>T</mode>
                            <products>
                            <product>
                            <productCode>Product Code 1</productCode>
                            <productName>Product Name 1</productName>
                            <quantity>1</quantity>
                            <price>1500</price>
                                    </product>
                            <product>
                            <productCode>Product Code 2</productCode>
                            <productName>Product Name 2</productName>
                            <quantity>1</quantity>
                            <price>1000</price>
                                     </product>
                               </products>
                            <purchaser>
                            <name>Ahmet</name>
                            <surname>Veli</surname>
                            <email>ahmet@veli.com</email>
                            <clientIp>123.58.7.4</clientIp>
                            <birthDate>1976-07-11</birthDate>
                            <gsmNumber>5881231212</gsmNumber>
                            <tcCertificate>1234567890</tcCertificate>
                            <invoiceAddress>
                            <name>Ahmet</name>
                            <surname>Veli</surname>
                            <address>Mevlüt Pehlivan Mah. PosFix Plaza Şişli</address>
                            <zipcode>34782</zipcode>
                            <city>34</city>
                            <tcCertificate>12345678901</tcCertificate>
                            <country>tr</country>
                            <taxNumber>123456890</taxNumber>
                            <taxOffice>Şişli</taxOffice>
                            <companyName>PosFix</companyName>
                            <phoneNumber>2123886600</phoneNumber>
                                    </invoiceAddress>
                            <shippingAddress>
                            <name>Ahmet</name>
                            <surname>Veli</surname>
                            <address>Mevlüt Pehlivan Mah. PosFix Plaza Şişli</address>
                            <zipcode>34782</zipcode>
                            <city>34</city>
                            <country>tr</country>
                            <phoneNumber>2123886600</phoneNumber>
                                    </shippingAddress>
                                </purchaser>
                </auth>
                //Response
                            <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
                <authResponse>
                            <amount>2500</amount>
                            <echo>Echo Bilgisi</echo>
                            <hash>yO5ACnF9FpsiV2/WBRRsDEBDRt8=</hash>
                            <mode>T</mode>
                            <orderId>b3091d88-6320-4446-be6c-7a1f8e6e73c7</orderId>
                            <publicKey>ABVQ03C77WPTODQN</publicKey>
                            <result>1</result>
                            <transactionDate>2014-01-03 21:08:51</transactionDate>
                </authResponse>
                          
                
Açık Kaynak Yapılar

OpenCart

OpenCart, e-tüccarlar için ücretsiz açık kaynaklı e-ticaret platformudur. OpenCart, başarılı bir çevrimiçi mağaza kurmak için profesyonel ve güvenilir bir temel sağlar. Bu vakıf çok çeşitli kullanıcılara hitap ediyor; Kullanıcı dostu bir arayüz arayışında olan tecrübeli web geliştiricilerinden, mağaza sahiplerine işlerini ilk çevrimiçi olarak başlatmalarına kadar uzanmaktadır. OpenCart, mağazanızın özelleştirilmesi üzerinde güçlü bir duruş sağlayan kapsamlı bir miktarda özelliklere sahiptir. OpenCart'ın araçları ile online mağazanızın potansiyelini tam olarak yaşatabilirsiniz.

PrestaShop

PrestaShop ücretsiz, açık kaynaklı bir e-ticaret çözümüdür. Yazılım, Açık Yazılım Lisansı (OSL) kapsamında yayınlanmaktadır. MySQL veritabanı yönetim sistemi desteği ile PHP programlama dilinde yazılmıştır.

Woo Commerce

WooCommerce, WordPress için açık kaynak kodlu bir e-ticaret eklentisidir. WordPress'i kullanarak küçük ve büyük ölçekli online tüccarlar için tasarlanmıştır. 27 Eylül 2011'de başlatılan eklenti, yüklenmesi ve özelleştirilmesi ve serbest baz ürünün sadeliği nedeniyle hızla popüler oldu.

WHMCS

WHMCS, Türkiye’de ve Dünya’da büyük – küçük birçok hosting firması tarafından kullanılan bir yazılımdır. Sağladığı avantajlar ve hızlı ilerlemesi sayesinde çok popüler olan bu yazılım, hosting şirketleri için bu işlerini yapmalarını sağlayan PHP tabanlı bir otomasyon yazılımıdır.


Eklentilerimiz iş ortağımız eticsoft tarafından gerçekleştirilmektedir. Eklentileri indirmek için tıklayınız. Eklentiler ile ilgili taleplerinizi eticsoft destek adresi üzerinden iletebilirsiniz.

Test Kartları
API entegrasyon testleriniz sırasında aşağıdaki kartları ve bilgileri kullanabilirsiniz. Testleriniz sırasında "mode" parametresini "T" olarak göndermeyi unutmayınız.
# Kart Numarası SKT Ay/Yıl CVC
1 4282209004348015 12/26 123
2 5571135571135575 12/26 000
3 4355084355084358 12/26 000
4 4662803300111364 10/25 000
5 5166570072166334 10/25 000
6 4022774022774026 12/24 000
7 5456165456165454 12/24 000
8 4531444531442283 12/24 000
9 5818775818772285 12/24 000
10 4508034508034509 12/24 000
11 5406675406675403 12/24 000
12 4025903160410013 07/26 123
13 5345632006230604 12/24 310
14 4282209027132016 12/24 358
15 4029400154245816 03/24 373
16 4029400184884303     01/26 378
17 9792350046201275 07/27 993
18 9792023757123604 01/26 861
19 6501700194147183 03/26 136
20 6500528865390837 01/26 686
21 9792072000017956 01/26 843
Hata Kodları
Hata Kodu Hata Açıklaması
1 Ödeme işleminiz bankanız tarafından onaylanmamıştır. Bankanızı arayarak detaylı bilgi alabilirsiniz.
2 Ödeme işleminiz bankanız tarafından reddedilmiştir. Bankanızı arayarak detaylı bilgi alabilirsiniz.
3 Güvenlik kodu (CVV2/CVC2) bilgisi hatalı veya ödeme işleminiz bankanız tarafından sebep belirtilmeden reddedilmiştir. Bankanızı arayarak detaylı bilgi alabilirsiniz.
4 Kart limitiniz yetersiz olduğundan dolayı ödeme işleminiz gerçekleştirilemedi.
5 Kartınızın süresi dolmuş, bu kart ile işlem gerçekleştiremezsiniz. Lütfen başka bir kart ile tekrar deneyiniz.
6 Kart tarih bilgisi hatalı. Lütfen bilgilerinizi kontrol edip tekrar deneyiniz.
7 Kart kapalı. Lütfen tekrar denemeyiniz. Bankanızı arayarak detaylı bilgi alabilirsiniz.
8 Kart ile işlem yapılamaz. Lütfen tekrar denemeyiniz. Bankanızı arayarak detaylı bilgi alabilirsiniz.
9 Kartınızın bu işlem için yetkisi yoktur. Lütfen bankanız ile irtibata geçiniz.
10 Ödeme işleminiz gerçekleştirilemedi. Kartınız yenilenmiş. Bankanızı arayarak detaylı bilgi alabilirsiniz.
11 Şifre girişi limiti aşılmış. Kart ile işlem yapılamaz. Lütfen bankanız ile irtibata geçiniz.
12 Güvenlik kodu (CVV2/CVC2) bilgisini yanlış girdiniz. Lütfen bilgilerinizi kontrol edip tekrar deneyiniz.
13 Kartınız taksitli işlemi desteklemiyor. Lütfen bilgilerinizi kontrol edip tekrar deneyiniz.
14 Ödeme işleminiz de kullanmış olduğunuz kart ile 1 TL nin altında ödeme gerçekleştiremezsiniz.
15 Kart numaranız hatalı. Lütfen bilgilerinizi kontrol edip tekrar deneyiniz.
16 Ödeme işleminiz gerçekleştirilemedi. Kart bankasına ulaşılamıyor. Bankanızı arayarak detaylı bilgi alabilirsiniz.
17 Kart banka sistemlerinde bulunamadı. Lütfen bilgilerinizi kontrol edip tekrar deneyiniz.
18 Şu anda ödeme yapmak istediğiniz kartın bankası hizmet verememektedir. Lütfen daha sonra tekrar deneyiniz.
19 Tekrar deneyiniz. Sorunun devam etmesi durumunda bankanız ile irtibata geçiniz.
34 Şifre hatalı. Lütfen tekrar deneyiniz.
36 Aktivite limit aşıldı. İşlem gerçekleştirilemiyor.
37 İptal limiti aşıldı. İşlem gerçekleştirilemiyor.
38 Ödeme işleminiz zaman aşımına uğramıştır. Bankanızdan yanıt alınamıyor. Lütfen tekrar deneyiniz.
80 3D Doğrulaması başarısız. Lütfen tekrar deneyiniz.
81 Kart sahibi veya bankası 3D Secure sistemine kayıtlı değil. Lütfen bankanız ile irtibata geçiniz.
82 Kartın bankası sisteme kayıtlı değil.
83 Kart sahibi 3D Secure sistemine daha sonra kayıt olmayı seçmiş. Lütfen bankanız ile irtibata geçiniz.
98 Şu anda ödeme yapmak istediğiniz kartın bankası hizmet verememektedir. Lütfen daha sonra tekrar deneyiniz.
99 Ödeme işleminiz gerçekleştirilemedi. Lütfen bilgilerinizi kontrol edip tekrar deneyiniz.
200 Ödemeniz güvenlik kontrolünü geçemedi.
800 İstek boş.
801 Token bilgisi boş.
802 Token bilgisi hatalı.
803 Açık anahtar boş.
804 Hash bilgisi boş.
805 Entegrasyon versiyon bilgisi boş.
806 Versiyon desteklenmiyor.
807 Ödeme istek zaman bilgisi boş.
808 İstek zamanı header bilgisi hatalı.
809 İstek zamanı ile server zamanı uyuşmuyor. Lütfen tekrar deneyiniz.
810 Mağaza açık anahtarı yanlış.
811 Mağaza yayında değil.
812 Mağaza bu ödeme yöntemine kapalı. Lütfen konu ile ilgili PosFix operasyon ekibi ile iletişime geçiniz.
813 Mağaza 3D secure ödeme yöntemine kapalı. Lütfen konu ile ilgili PosFix operasyon ekibi ile iletişime geçiniz.
814 Sipariş numarası boş olamaz.
815 Sipariş numarası alanı 100 karakterden fazla olamaz.
816 Lütfen tutar belirtiniz
817 Girmiş olduğunuz tutar bilgisi hatalıdır. Lütfen tekrar deneyiniz.
818 ThreeD alanı boş olamaz.
819 ThreeD alanı hatalı.
820 Lütfen kart üzerindeki isim alanını giriniz.
821 Kart üzerindeki isim geçersizdir. Lütfen 4 ile 100 karakter arasında kartın üzerinde yazan ad bilgisini giriniz.
822 Lütfen kart numaranızı giriniz.
823 Kart numarası 15 veya 16 haneli olmalıdır.
824 Kart bin numarası bulunamadı. Lütfen başka bir kart ile tekrar deneyiniz.
825 Kart bin numarası 3D Secure işlemini desteklememektedir. Konu ile ilgili bankanızdan bilgi alabilirsiniz.
826 Kart numarası hatalı. Lütfen bilgilerinizi kontrol edip tekrar deneyiniz.
827 Kart numarası hatalı. Lütfen bilgilerinizi kontrol edip tekrar deneyiniz.
828 Lütfen kartınızın üzerinde bulunan son kullanım tarihi ay bilgisini giriniz.
829 Son kullanım tarihi ay bilgisi 2 karakter olmalıdır.
830 Son kullanım tarihi ay bilginiz hatalı. Lütfen bilgilerinizi kontrol edip tekrar deneyiniz.
831 Lütfen kartınızın üzerinde bulunan son kullanım tarihi yıl bilgisini giriniz.
832 Son kullanım tarihi yıl bilgisi 2 karakter olmalıdır.
833 Son kullanım tarihi yıl bilginiz hatalı. Lütfen bilgilerinizi kontrol edip tekrar deneyiniz.
834 Kartınızın son kullanım tarihi geçmiş. Lütfen başka bir kart ile tekrar deneyiniz.
835 Lütfen kartınızın arka yüzünde bulunan güvenlik kodunu (CVV2/CVC2) giriniz.
836 Güvenlik kodu (CVV2/CVC2) alanı 3 karakter olmalıdır.
837 Güvenlik kodu (CVV2/CVC2) alanı 4 karakter olmalıdır.
838 Güvenlik kodu (CVV2/CVC2) alanı 3 veya 4 haneli sayı olmalıdır.
839 Taksit sayısı 1 ile 9 arası sayı olmalıdır.
840 Kartınız taksitli işlemi desteklemiyor. İşleminizi tek çekim olarak gerçekleştirebilirsiniz.
841 VendorId alanı PosFix tarafından size sağlanan sayı olmalıdır.
842 Mod alanı boş olamaz.
843 Mod alanı "P" veya "T" olmalıdır.
844 Ödeme işlemi için sepetinizde en az bir ürün olması gerekmektedir.
845 Lütfen adınızı giriniz.
846 İsim alanı geçersizdir. Lütfen geçerli bir isim giriniz.
847 Lütfen soyadınızı giriniz.
848 Soyisim alanı geçersizdir. Lütfen geçerli bir soyisim giriniz.
849 Lütfen e-posta adresinizi giriniz.
850 E-posta adresi 100 karakterden büyük olamaz.
851 Lütfen geçerli bir e-posta adresi giriniz.
852 Client IP alanı boş olamaz.
853 Client IP alanı hatalı
854 ThreeDSecureCode alanı boş olamaz.
855 Başarılı istek dönüş adresi boş olamaz.
856 Başarılı istek dönüş adresi hatalı.
857 Başarılı istek dönüş adresi 500 karakterden büyük olamaz.
858 Hatalı istek dönüş adresi boş olamaz.
859 Hatalı istek dönüş adresi hatalı.
860 Hatalı istek dönüş adresi 500 karakterden büyük olamaz.
877 Lütfen kart rumuzunuzu giriniz.
878 Lütfen geçerli bir kart rumuzu giriniz.
880 Sipariş numarası daha önce kullanılmış. Lütfen tekrardan istekte bulununuz.
881 Devam eden bir işleminiz bulunduğundan dolayı bu istek reddedilmiştir.
882 Göndermiş olduğunuz token doğru değil.
883 Mağaza komisyon oranlarınız belirlenmemiş. Lütfen konu ile ilgili PosFix operasyon ekibi ile iletişime geçiniz.
884 Kart bilgisi bulunamadı. Lütfen tekrar deneyiniz.
885 Mağaza durumu test modu için uygun değil. Lütfen konu ile ilgili PosFix operasyon ekibi ile iletişime geçiniz.
886 Mağaza kayıtlı site adresi ile istekte bulunulan adres aynı değil. Lütfen konu ile ilgili PosFix operasyon ekibi ile iletişime geçiniz.
887 3D Doğrulama isteği sonrasında yapmış olduğunuz api isteğine ait işlem bulunamadı.
888 Göndermiş olduğunuz mod bilgisi 3D doğrulama isteğinde göndermiş olduğunuz bilgi ile aynı olmalıdır.
889 Göndermiş olduğunuz tutar bilgisi 3D doğrulama isteğinde göndermiş olduğunuz bilgi ile aynı olmalıdır.
890 Göndermiş olduğunuz ödeme bilgileri ile daha önceden işlem yapılmış.
891 Göndermiş olduğunuz ThreeDSecureCode bilgisi hatalı.
892 Bu mağaza üzerinden sadece 3D secure yöntemi kullanılarak ödeme yapılabilir.
893 Bu kart ile sadece 3D secure yöntemi kullanılarak ödeme yapılabilir.
894 Mağaza taksitli alışverişi desteklememektedir. İşleminizi tek çekim olarak gerçekleştirebilirsiniz.
896 UserId alanı boş olamaz.
897 UserId alanı hatalı.
907 Seçmiş olduğunuz taksit desteklenmemektedir
953 Lütfen 6 haneli bin numarasını giriniz.
954 Girmiş olduğunuz bin numarası hatalı.
964 Ödeme işleminizde kullanmış olduğunuz kart güvenlik sebebiyle engellenmiştir.
965 Purchaser alanı boş olamaz.
968 Mağazanın tek tıkla ödeme özelliği kapalıdır.
970 Kullanıcının kartı bulunamadı.
971 Kullanıcının kartı bloklanmıştır. Lütfen mağazanız ile iletişime geçiniz.
973 Kaydedilmek istenen banka/kredi kartı mağazada başka bir üyeliğe tanımlıdır. Lütfen mağaza ile iletişime geçiniz.
975 Kullanıcı bilgisi boş.
988 orderId bilgisi geçersizdir.
989 Kaydedilmek istenen kart hesabınıza zaten tanımlıdır.
3085 İade miktarı zorunlu alandır.
210 İade edilecek ödeme bulunamadı.
3086 Geçerli iade miktarı giriniz.
3193 refundHash parametresi geçersizdir.
1000 İşleminiz gerçekleştirilirken beklenmedik bir hata oluştu. Lütfen daha sonra tekrar deneyiniz.
Bazı Hata Kodları, Mesajları ve Çözüm Önerileri
Hata Kodu Hata Mesajı ve Öneri
1 Ödeme işleminiz bankanız tarafından onaylanmamıştır. Bankanızı arayarak detaylı bilgi alabilirsiniz.

Bu hata banka tarafından ödeme alımına izin verilmeyen veya kullanılan kart ile ilgili özel bir durum oluştuğunda alınmaktadır. Banka hata detayını açıklamamakta ve kart sahibinin bankası ile iletişime geçmesini tavsiye etmektedir.
2 Ödeme işleminiz bankanız tarafından reddedilmiştir. Bankanızı arayarak detaylı bilgi alabilirsiniz.

Ödeme banka tarafından reddedilmiştir, kart blokeli veya sınırlandırılmış olabilir. Bu sınırlamalar günde 1 işlem veya en fazla 10 işlem şeklinde olabilir. Banka hata detayını açıklamamakta ve kart sahibinin bankası ile iletişime geçmesini tavsiye etmektedir.
3 Güvenlik kodu (CVV2/CVC2) bilgisi hatalı veya ödeme işleminiz bankanız tarafından sebep belirtilmeden reddedilmiştir. Bankanızı arayarak detaylı bilgi alabilirsiniz.

Güvenlik Kodu hatalı veya kart sahibi banka tarafından işlem reddedilmiş ve sebep belirtilmemiştir. Karşı banka sistemleri kapalı veya cevap veremiyor olabilir. Müşterinizden kartını kontrol ederek tekrar denemesini veya yeni bir kart ile işlemine devam etmesini istemeniz gerekmektedir.
8 Güvenlik kodu (CVV2/CVC2) bilgisi hatalı veya ödeme işleminiz bankanız tarafından sebep belirtilmeden reddedilmiştir. Bankanızı arayarak detaylı bilgi alabilirsiniz.

Güvenlik Kodu hatalı veya kart sahibi banka tarafından işlem reddedilmiş ve sebep belirtilmemiştir. Karşı banka sistemleri kapalı veya cevap veremiyor olabilir. Müşterinizden kartını kontrol ederek tekrar denemesini veya yeni bir kart ile işlemine devam etmesini istemeniz gerekmektedir.
9 Kartınızın bu işlem için yetkisi yoktur. Lütfen bankanız ile irtibata geçiniz. 

Müşterinin kullanmak istediği kart online işleme kapalı olabilir veya 3D secure işlemlere kapalı olabilir. Detaylı bilgi için müşterinizin bankasıyla iletişime geçmesini rica ederiz.
16 Ödeme işleminiz gerçekleştirilemedi. Kart bankasına ulaşılamıyor. Bankanızı arayarak detaylı bilgi alabilirsiniz.

Banka sistemlerinden kaynaklanan sorunlar nedeniyle ödeme alınamamıştır. Bu gibi durumlarda PosFix banka ile iletişime geçip sorunun giderilmesi konusunda bankayı bilgilendirmektedir.
18 Şu anda ödeme yapmak istediğiniz kartın bankası hizmet verememektedir. Lütfen daha sonra tekrar deneyiniz. 

Banka sistemlerinden kaynaklanan sorunlar nedeniyle ödeme alınamamıştır. Belli bir süre sonra kartınız ile ödeme yapabilirsiniz. Bu gibi durumlarda PosFix banka ile iletişime geçip sorunun giderilmesi konusunda bankayı bilgilendirmektedir.
38 Ödeme işleminiz zaman aşımına uğramıştır. Bankanızdan yanıt alınamıyor. Lütfen tekrar deneyiniz.

Banka sistemlerinden kaynaklı bir hatadan dolayı ödeme zaman aşımına uğramıştır ve tahsilat yapılamamıştır ve bu mesaj müşteriye iletilmiştir.
80 3D Doğrulaması başarısız. Lütfen tekrar deneyiniz.

Bu hata aşağıda bulunan durumlardan dolayı yaşanmış olabilir;
  • Banka 3D Secure ekranında kart cvc bilgisinin veya SMS kodunun yanlış girilmesi,
  • Kart bilgilerinin hatalı girilmesi,
  • Ödeme isteğinin banka tarafından ödeme güvenliği gerekçesiyle iptal edilmesi.
Eğer banka 3D secure doğrulama ekranı açılmadan da bu hata alınıyorsa aynı nedenler geçerlidir. 

Yukardaki sebeplerin dışında başka nedenlerle de banka ödeme isteğini reddedebilmektedir. Detaylı bilgi için kart sahibinin bankasını aramasını rica ederiz.
81 Kart sahibi veya bankası 3D Secure sistemine kayıtlı değil. Lütfen bankanız ile irtibata geçiniz.

Kart sahibi bankasıyla iletişime geçip (telefon üzerinden veya internet bankacılığından) kartının 3D secure ile ödeme özelliğini açtırması gerekmektedir.
82 Kartın bankası sisteme kayıtlı değil. 

Kartın bağlı olduğu banka 3D secure sistemine dâhil olmadığı için karttan ödeme alınamamıştır. Müşterinizin başka bir kart ile bir ödeme yapmasını rica ederiz.
83 Kart sahibi 3D Secure sistemine daha sonra kayıt olmayı seçmiş. Lütfen bankanız ile irtibata geçiniz.

Güvenlik gereği ilk kez 3D secure kullanan kartların ödemesi PosFix tarafından reddedilmektedir. Müşterinizin kartıyla başka bir sanal postan ilk ödemesini yapmasını veya başka bir kart kullanmasını rica ederiz.
98 Şu anda ödeme yapmak istediğiniz kartın bankası hizmet verememektedir. Lütfen daha sonra tekrar deneyiniz.

Banka sistemlerinden kaynaklanan sorunlar nedeniyle ödeme alınamamıştır. Belli bir süre sonra kartınız ile ödeme yapabilirsiniz. Bu gibi durumlarda PosFix banka ile iletişime geçip sorunun giderilmesi konusunda bankayı bilgilendirmektedir.
99 Ödeme işleminiz gerçekleştirilemedi. Lütfen bilgilerinizi kontrol edip tekrar deneyiniz.

Banka sistemlerinden tanımlanamayan hata kodu gönderildiği zaman bu hata alınmaktadır. Bu gibi durumlarda PosFix banka ile iletişime geçip sorunun giderilmesi konusunda bankayı bilgilendirmektedir.
802 Mağaza token bilgisi hatalı.

Token değeri publicKey:hash şeklinde oluşmaktadır. Yolladığınız token’da “:” karakteri bulunmadığı için bu hatayı almaktasınız.
810 Mağaza açık anahtarı yanlış.

Ödeme isteğinde bulunurken yolladığınız token parametresini oluştururken kullanılan publicKey değerinin doğru olduğundan ve bu değeri yazılımınıza kopyalarken başında ve sonunda boşluk olmamasına ve eksiksiz olarak kopyalamış olduğunuzdan emin olunuz.
817 Girmiş olduğunuz tutar bilgisi hatalıdır. Lütfen tekrar deneyiniz.

Ödeme isteğinde yolladığınız amount parametresi beklenen formatın dışında olduğu için bu hatayı almaktasınız. Ödeme isteklerinde amount parametresi kuruş değerinde yollanmalıdır. Kesinlikle nokta ve virgül kullanılmamalıdır. amount değeri 1 TL'lik ödeme için 100 olarak, 12.59 TL için de 1259 olarak yollanmalıdır. Ayrıca ödeme isteklerinde amount parametresi en az 1 (0.01 TL) en fazla 10000000 (100000 TL) olarak yollamanızı rica ederiz.
824 Kart bin numarası PosFix sisteminde bulunamadı. Lütfen başka bir kart ile tekrar deneyiniz.

Kullanıcının ödemede kullanmak istediği kredi/banka kartının ilk altı hanesine “bin numarası” denir. PosFix’da yurtiçindeki bankaların tüm kredi ve banka kartları geçmektedir. Kartın yurtiçindeki bir bankaya ait olduğuna eminseniz sorunu anlayabilmemiz için ödeme yapılmak istenen kartın bin numarasını yollamanızı rica ederiz.
840 Kartınız taksitli işlemi desteklemiyor. Lütfen bilgilerinizi kontrol edip tekrar deneyiniz.

Kullanıcı taksit desteklemeyen bir kart ile taksitli ödeme yapmak istediği zaman bu hata verilmektedir. Eğer kullanıcı kartının taksit desteklediğini iletirse, kullanıcının kartının ilk altı hanesini (bin numarasını) bize iletmenizi rica ederiz.
844 En az bir ürün bilgisinin gönderilmesi zorunludur. 

Ödeme isteğinde “products” alan bilgisi boş gönderildiği için ya da bu alanda bir “product” tanımlı olmadığı için bu hatayı almaktasınız. Ödeme isteğinizin teknik entegrasyon dokümanındaki örneklerdeki gibi olmasını rica ederiz.
880 Mağaza sipariş numarası daha önce kullanılmış. Lütfen tekrardan istekte bulununuz.

Daha önceki ödeme istekleri başarısız olsa da, ödeme isteklerinde önceki ödeme isteklerinde kullanılmış orderId değerini yollamamanız gerekmektedir. PosFix sisteminde validasyon kontrolünü geçmiş olan tüm başarılı ve başarısız ödemelere ait mağaza bazlı tekil sipariş numarası kullanılmaktadır.
882 Göndermiş olduğunuz token doğru değil.

Ödeme güvenliği için ödeme isteğinizde yolladığınız “token” değerini PosFix kendi tarafında tekrar oluşturarak yolladığınız değer ile karşılaştırır.Yolladığınız değer ile PosFix’de oluşan değer farklı olduğu zaman PosFix bu hatayı dönmektedir. Bu hata:
  • Ödeme isteğini yollamadan önce yazılımınızda token hesaplamasında kullandığınız parametreler ile PosFix’e yolladığınız parametrelerin aynı olmaması.
  • Token hesaplamasında ya da yollanan parametrelerde UTF-8 encoding kullanılmamış olması
  • Yazılımınızda privateKey değerinin hatalı olmasında kaynaklanabilir.
Bu ihtimaller doğrultusunda yazılımınızı kontrol etmenizi rica ederiz.
886 Mağaza kayıtlı site adresi ile istekte bulunulan adres aynı değil. Lütfen konu ile ilgili PosFix operasyon ekibi ile iletişime geçiniz.

Güvenlik politikası gereği PosFix’e yapılan ödeme istekleri mağazanın PosFix’e kayıt olurken bildirdiği domainden gelmek zorundadır. Eğer mağazanızın web sitesi değişmiş ise yeni web site adresinizi iletmenizi rica ederiz.
887 3D Doğrulama isteği sonrasında yapmış olduğunuz api isteğine ait işlem bulunamadı.

API servis isteğinde yolladığınız publicKey, orderId ve mode parametre değerlerinin, ilk adımda yolladığınız değerler ile aynı olduğundan emin olmanızı rica ederiz.
893 Bu kart ile sadece 3D secure yöntemi kullanılarak ödeme yapılabilir. 

Bankanın sadece 3D secure ödemeye izin verdiği kart için 3D secure kullanılmadan ödeme yapılmak istendiği için bu hata alınmıştır. Ödeme yapılmak istenen kart için 3D secure zorunluluğunu öğrenmek için bin numarası servisini entegre etmenizi tavsiye ederiz.
965 Purchaser alanı boş olamaz.

Ödeme isteğinizde purchaser alanı boş olduğu için bu hatayı almaktasınız. Ödeme isteğinizde purchaser alanını ve zorunlu alanlarını yollamanızı rica ederiz. Detaylı bilgiyi teknik entegrasyon dokümanımızda bulabilirsiniz.
1000 Beklenmedik bir hata oluştu. Lütfen tekrar deneyiniz.

Ödeme isteğiniz beklenmedik bir formatta olduğunda veya PosFix sistemlerinde beklenmedik bir hata oluştuğunda bu hata mesajı verilmektedir.

NOT: Bu hata mesajını alıyorsanız lütfen destek sayfası  üzerinden bildirimde bulununuz.
Destek

Eğer sorununuz devam ediyorsa, lütfen destek sayfasından bize yazınız.


  • Sistemimizde IP, DNS adresleri değiştirildi, yeni IP ve DNS adreslerini size iletmem gerekmekte midir?

    PosFix'de IP veya DNS kontrolü yapılmadığı için yeni IP ve DNS adreslerinizi iletmenize gerek yoktur.

  • posfix.com.tr panelinde "geçersiz bir istekte bulunduğunuz tespit edilmiştir. Lütfen tekrar deneyiniz" hatası alınmıştır.

    PCI-DSS güvenlik standartları gereği, posfix.com.tr’de açılan sayfalarda 15 dakika içinde işlem yapılmazsa daha sonra sayfadan gelen isteklerde bu hata verilir. Sayfayı yenileyerek tekrardan istekte bulunabilirsiniz.

  • 100 TL'lik çekim yapmak istemekteyiz ama 1 TL'lik ödeme geçmektedir.

    Ödeme isteklerinde “amount” parametresi 2 haneli kuruş değeri ile birlikte nokta veya virgül olmadan yollanmalıdır. “amount” değerini 1 TL'lik ödeme için 100 olarak, 1000 TL için de 100000 olarak yollanmalıdır. Ayrıca ödeme isteklerinde amount parametresi en az 1 en fazla 100000 olarak yollamanızı rica ederiz.

  • Kart bilgilerimi kullanmadan nasıl test yapabilirim?

    Test ödemeleri için “mode” parametresini “T” olarak yollamanızı rica ederiz. Test kartlarına buradan erişebilirsiniz.

  • PosFix kullanmak için SSL kurulumu zorunlu mudur?

    Ödeme güvenliğinin sağlanması için web sitenizde SSL (SHA2 algoritması ile) kullanımı zorunludur.

  • Sizden aldığımız örnek kodları aynen kullanmak zorunda mıyız?

    PosFix tarafından yollanan entegrasyon kütüphaneleri örnek amaçlı yollanmıştır, ödeme güvenliğini bozmayacak şekilde kendi yazılımınızı geliştirebilirsiniz.

  • Banka/Debit kartları ile yapılan ödemeler 3D Secure olmadan yapılamaz mı?

    Banka/Debit kartları için 3D zorunluluğu kartın bankası tarafından belirlendiği için bu kartlar ile yapılacak ödemelerin 3D secure kullanılarak gerçekleştirilmesi gerekmektedir.

  • Sizden aldığımız entegrasyon kütüphanesini kullanmamıza rağmen hata almaktayız.

    Kullanmış olduğunuz PosFix entegrasyon kütüphanesi test edilmiş olup, sizlerde dahil olmak üzere bütün mağazalarımız tarafından kullanılmaktadır. Demo kodları ile yapılan isteklerde hata yaşıyor iseniz, yapmış olduğunuz değişiklikleri geri alarak, çalışırlılığını tekrardan test etmenizi öneririz. Eğer hata almaya devam ediyor iseniz kodları çalıştırdığınız uygulama sunucu ayarlarını kontrol etmenizi öneririz.​​

  • https://www.posfix.com.tr/3dgate ekranının boş gelmesi veya “Sayfa bulunamadı” hatasının alınması.

    3D Secure isteği işlendiğinde alınan XML-JSON format hatalarından dolayı veya izinsiz karakter kullanımından dolayı bu sayfa gösterilmiştir. Ödeme isteğinde post edilen formda bir format bozukluğu (yanlış yerde '>' karakterinin kullanımı gibi) olduğu için gelen istek posfix.com.tr uygulaması tarafından cevaplanmamış olabilir ve güvenlik tedbiri olarak geri sayfa yönlendirmesi yapılmamış olabilir. Göndermiş olduğunuz istekte failureUrl bilgisi boş veya hatalı ise yine bu hatayı alabilirsiniz. Göndermiş olduğunuz url bilgisi http:// veya https:// ile başlamalıdır. Örn; “https://www.magazam.com/3Dodeme/basarisiz-sonuc” Yapmış olduğunuz 3D Secure isteğinde, teknik entegrasyon dokümanınındaki zorunlu alanların, verilen örneklerde olduğu gibi yollanmasını rica ederiz. Ayrıca güvenlik kontrollerine takılmamak adına göndermiş olduğunuz form verilerinin UTF-8 ile encode edilmiş olmasına dikkat ediniz.​​

  • 3D secure işleminin sonunda browserda boş ekran açılıyor.

    3D secure ekranında işlem yapıldıktan sonra browser 3D secure ekranından mağazanıza yönlenir. Ödeme başarılı ise browser successUrl (başarılı cevap adresi) adresine yönlenirken, başarısız ödemede ise browser failureUrl (başarısız cevap adresi) adresine yönlenecektir. Eğer successUrl veya failureUrl adresleriniz geçersizse ödeme boş sayfada kalacaktır.​​

  • Ödeme isteğinde HTTP Error 400: Bad Request hatası alıyorum.

    Http 400 beklenmedik formatta yollanan ödemelerde alınan bir hatadır. Ödeme isteklerinizin teknik entegrasyon dokümanındaki örnek istekler ile aynı formatta olmasını rica ederiz.​​

  • API'ye yapılan istek için cevap alamamaktayım.

    XML formatı hatalı olduğu için server gelen isteği işlememiştir. Örnek olarak gönderilen istek verisinin başındaki satırı yerine kullandığınız zaman ödeme istekleriniz reddedilecektir. Doğru format için teknik entegrasyon dokümanındaki XML örneklerine göz atmanızı rica ederiz

  • Ödeme cevabı hash bilgisi boş. [result : ,error_code : ,error_message : ] hatası alıyorum.

    Ödeme isteğinize PosFix cevap dönmüştür ve websitenize dönüş yapmıştır. Ama PosFix’in yolladığı parametreler websitenize ulaşmamıştır. Bu durumun sebepleri: Eğer websitenizin dönüş adresi “https” ile başlamıyor veya SSL kullanmıyorsanız browserınız PosFix’den gelen değerleri websitenize iletmemesi Websitenizin network/sistem ayarlarından dolayı PosFix’den gelen parametreler websitenize ulaşmaması olabilir. Bu ihtimaller doğrultusunda kontrollerinizi yapmanızı rica ederiz.​​

  • Ödeme isteği sonucunda, "Ödeme cevabı boş" hatası alınıyor.

    Ödeme istekleri mutlaka SSL üzerinde yapılmalıdır. LIVE'da ödeme isteğinde yollanan successUrl ve failureUrl adresleri mutlaka "https://" ile başlayan geçerli adresler kullanmanızı rica ederiz.​​

  • Ödeme sonucunda "Göndermiş olduğunuz token doğru değil." hatası alıyoruz.

    Token hesaplaması, Ödeme Servisleri sayfasında Ödeme Modüllerinde belirtilen parametrelerin yan yana eklenerek önce Sha1 algoritması ile şifrelenip daha sonrasında Base64 ile encode edilmesi ile gerçekleştirilmektedir. Burada dikkat edilmesi gereken en önemli nokta Base64 kodlaması yapılırken UTF-8 kullanılması gerekliliğidir. Örnek token hesaplama fonksiyonlarını Ödeme Servisleri sayfasında bulabilirsiniz.

Destek

Her konuda bizimle iletişime geçebilir, istek, öneri, destek ve görüşlerinizi bizimle paylaşabilirsiniz.

Bizimle iletişime geçmek için [email protected] adresine mail atabilirsiniz.