Ödeme Servisleri
iPara ö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ı iPara'daki 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.ipara.com/rest/payment/bin/lookup/v2
adresine gerekli güvenlik bilgileri http header bilgisine eklenerek post edilir. iPara işlem sonucunu yine JSON formatında mağazaya döner.
iPara Bin Sorgulama Servisi Rest bir servis olup JSON medya tipinde istekleri kabul etmektedir.
İstek Güvenlik Bilgileri
HttpHeader Güvenlik Bilgileri
iPara, 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. |
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 |
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 |
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.ipara.com/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
ipara.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 İle (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.ipara.com/rest/payment/auth web servis adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder. iPara işlem sonucunu yine XML formatında mağazaya döner.
iPara 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 iPara 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 iPara 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 iPara 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 iPara 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
iPara, 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. Ö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.
|
Zorunlu |
Servis Girdi Parametreleri
Parametre Adı | Açıklama | Opsiyonel/Zorunlu |
---|---|---|
mode |
İstek modu. “P” veya “T” gönderilmelidir. |
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. |
* |
cardId |
Mağaza kullanıcısının kartını referans eden kart kaydetme işlemi sonucunda oluşan id bilgisi. |
* |
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 |
iPara 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.
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 |
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 |
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 |
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 |
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
Parametre Adı | Açıklama |
---|---|
result |
İşlem sonucu |
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. |
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 = "Murat";
request.Purchaser.SurName = "Kaya";
request.Purchaser.BirthDate = "1986-07-11";
request.Purchaser.Email = "murat@kaya.com";
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 = "Murat";
request.Purchaser.InvoiceAddress.SurName = "Kaya";
request.Purchaser.InvoiceAddress.Address = "Mevlüt Pehlivan Mah. Multinet 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 = "iPara";
request.Purchaser.InvoiceAddress.PhoneNumber = "2122222222";
#endregion
#region Kargo Adresi bilgileri
request.Purchaser.ShippingAddress = new PurchaserAddress();
request.Purchaser.ShippingAddress.Name = "Murat";
request.Purchaser.ShippingAddress.SurName = "Kaya";
request.Purchaser.ShippingAddress.Address = "Mevlüt Pehlivan Mah. Multinet 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 = "Murat";
request.Purchaser.SurName = "Kaya";
request.Purchaser.BirthDate = "1986-07-11";
request.Purchaser.Email = "murat@kaya.com";
request.Purchaser.GsmPhone = "5881231212";
request.Purchaser.IdentityNumber = "1234567890";
request.Purchaser.ClientIp = "127.0.0.1";
request.Purchaser.InvoiceAddress = new PurchaserAddress();
request.Purchaser.InvoiceAddress.Name = "Murat";
request.Purchaser.InvoiceAddress.SurName = "Kaya";
request.Purchaser.InvoiceAddress.Address = "Mevlüt Pehlivan Mah. Multinet 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 = "iPara";
request.Purchaser.InvoiceAddress.PhoneNumber = "2122222222";
request.Purchaser.ShippingAddress = new PurchaserAddress();
request.Purchaser.ShippingAddress.Name = "Murat";
request.Purchaser.ShippingAddress.SurName = "Kaya";
request.Purchaser.ShippingAddress.Address = "Mevlüt Pehlivan Mah. Multinet 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 = "Murat";
$request->Purchaser->SurName = "Kaya";
$request->Purchaser->BirthDate = "1986-07-11";
$request->Purchaser->Email = "murat@kaya.com";
$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 = "Murat";
$request->Purchaser->InvoiceAddress->SurName = "Kaya";
$request->Purchaser->InvoiceAddress->Address = "Mevlüt Pehlivan Mah-> Multinet 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 = "iPara";
$request->Purchaser->InvoiceAddress->PhoneNumber = "2122222222";
#endregion
#region Kargo Adresi bilgileri
$request->Purchaser->ShippingAddress = new PurchaserAddress();
$request->Purchaser->ShippingAddress->Name = "Murat";
$request->Purchaser->ShippingAddress->SurName = "Kaya";
$request->Purchaser->ShippingAddress->Address = "Mevlüt Pehlivan Mah-> Multinet 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 : "Murat",
surname : "Kaya",
email : "murat@kaya.com",
clientIp : "123.58.7.4",
invoiceAddress: {
name: "Murat",
surname: "Kaya",
address: "Mevlüt Pehlivan Mah. Multinet Plaza Şişli",
zipcode: "34782",
city: "34",
tcCertificate: "12345678901",
country: "tr",
taxNumber: "123456890",
taxOffice: "Şişli",
companyName: "iPara",
phoneNumber: "2123886600"
},
shippingAddress: {
name: "Murat",
surname: "Kaya",
address: "Mevlüt Pehlivan Mah. Multinet Plaza Şişli",
zipcode: "34782",
city: "34",
country: "tr",
phoneNumber: "2123886600"
}
}
}
ipara.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 = "Murat"
req.Purchaser.SurName = "Kaya"
req.Purchaser.BirthDate = "1986-07-11"
req.Purchaser.Email = "murat@kaya.com"
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 = "Murat"
req.Purchaser.Invoiceaddress.SurName = "Kaya"
req.Purchaser.Invoiceaddress.Address = "Mevlüt Pehlivan Mah. Multinet 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 = "iPara"
req.Purchaser.Invoiceaddress.PhoneNumber = "2122222222"
#endregion
#region Kargo Adresi bilgileri
req.Purchaser.Shippingaddress = Purchaseraddress.new
req.Purchaser.Shippingaddress.Name = "Murat"
req.Purchaser.Shippingaddress.SurName = "Kaya"
req.Purchaser.Shippingaddress.Address = "Mevlüt Pehlivan Mah. Multinet 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 = "Murat"
api.Purchaser.surname = "Kaya"
api.Purchaser.birthDate = "1986-07-11"
api.Purchaser.email = "mura@kaya.com"
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 = "Murat"
api.Purchaser.invoiceAddress.surname = "Kaya"
api.Purchaser.invoiceAddress.address = "Mevlüt Pehlivan Mah. Multinet 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 = "iPara"
api.Purchaser.invoiceAddress.phoneNumber = "2122222222"
# Kargo Bilgileri
api.Purchaser.shippingAddress = api.PurchaserAddress()
api.Purchaser.shippingAddress.name = "Murat"
api.Purchaser.shippingAddress.surname = "Kaya"
api.Purchaser.shippingAddress.address = "Mevlüt Pehlivan Mah. Multinet 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
Murat Kaya
4282209004348015
02
17
123
1
false
b3091d88-6320-4446-be6c-7a1f8e6e73c7
Echo Bilgisi
2500
T
Product Code 1
Product Name 1
1
1500
Product Code 2
Product Name 2
1
1000
Murat
Kaya
murat@kaya.com
123.58.7.4
1976-07-11
5881231212
1234567890
Murat
Kaya
Mevlüt Pehlivan Mah. Multinet Plaza Şişli
34782
34
12345678901
tr
123456890
Şişli
iPara
2123886600
Murat
Kaya
Mevlüt Pehlivan Mah. Multinet Plaza Şişli
34782
34
tr
2123886600
//Response
2500
Echo Bilgisi
yO5ACnF9FpsiV2/WBRRsDEBDRt8=
T
b3091d88-6320-4446-be6c-7a1f8e6e73c7
ABVQ03C77WPTODQN
1
2014-01-03 21:08:51
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.ipara.com/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. iPara 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
Parametre Adı | Açıklama | Zorunluluk |
---|---|---|
mode |
İstek modu. “P” veya “T” gönderilmelidir. |
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. |
* |
cardId |
Mağaza kullanıcısının kartını referans eden kart kaydetme işlemi sonucunda oluşan id bilgisi. |
* |
installment |
Taksit Sayısı. |
Hayır |
amount |
Karttan çekilecek olan toplam sipariş tutarı. |
Evet |
echo |
Mağazaya istek sonucunda geri gönderilecek bilgi alanıdır. |
Hayır |
successUrl |
İşlemin başarılı olarak sonuçlanması durumunda alıcının yönlendirileceği adres. |
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. |
Evet |
language |
‘’tr-TR” veya “en-US” olarak gönderilmelidir. |
Evet |
vendorId |
iPara tarafından sağlanan altyapı sağlayıcı id bilgisi. |
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 |
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
Parametre Adı | Açıklama | Zorunluluk |
---|---|---|
name |
Müşteri isim bilgisi. |
Evet |
surname |
Müşteri soyisim bilgisi. |
Evet |
Müşteri e-posta bilgisi. |
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. |
Hayır |
Products 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 |
En az bir tane ürün(product) bilgisi gönderimi zorunludur.
Invoice Address Parametreleri
Parametre Adı | Açıklama | Zorunluluk |
---|---|---|
name |
İsim bilgisi. |
Hayır |
surname |
Soyisim bilgisi. |
Hayır |
address |
Adres bilgisi. |
Hayır |
zipcode |
Posta kodu bilgisi. |
Hayır |
city |
Şehir bilgisi. |
Hayır |
country |
Ülke bilgisi. |
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
Parametre Adı | Açıklama | Zorunluluk |
---|---|---|
name |
İsim bilgisi. |
Hayır |
surname |
Soyisim bilgisi. |
Hayır |
address |
Adres bilgisi. |
Hayır |
zipcode |
Posta kodu bilgisi. |
Hayır |
city |
Şehir bilgisi. |
Hayır |
country |
Ülke bilgisi. |
Hayır |
phoneNumber |
Telefon bilgisi |
Hayır |
Servis Çıktı Parametreleri
Parametre Adı | Açıklama |
---|---|
result |
İşlem sonucu |
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. |
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.ipara.com/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("10100");
dto.setToken(createToken(dto));
dto.setProducts(createProduct());
return dto;
}
private PurchaserDTO createPurchaser() {
PurchaserDTO purchaser = new PurchaserDTO();
purchaser.setName("Jack");
purchaser.setSurname("Connor");
purchaser.setEmail("jack.connor@gmail.com");
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("Multinet UP");
dto.setPhoneNumber("05340343434");
return dto;
}
private ShippingAddressDTO createShippingAddress() {
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":"jack.connor@gmail.com",
"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":"Multinet UP",
"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.ipara.com/rest/payment/inquiry web servis adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder. iPara 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.
iPara Ödeme Sorgulama Servisi Rest bir servis olup XML medya tipinde istekleri kabul etmektedir.
Önemli Notlar
- Servisleri kullanabilmek için iPara 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
iPara, 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. Ö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.
|
Zorunlu |
Servis Girdi Parametreleri
Parametre Adı | Açıklama | Opsiyonel/Zorunlu |
---|---|---|
mode |
İstek modu. “P” veya “T” 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 |
echo |
Mağazaya istek sonucunda geri gönderilecek bilgi alanıdır. Maksimum Uzunluk: 255. |
Opsiyonel |
Servis Çıktı Parametreleri
Parametre Adı | Açıklama |
---|---|
result |
Ödeme durumunu belirten sonuç bilgisi.
|
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 iPara tarafından manuel iade yapılması gerekiyor. APPROVED_BUT_WAITING_MANUAL_REFUND – İade talebinde bulunulmuş ancak iPara 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. |
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
ipara.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
b3091d88-6320-4446-be6c-7a1f8e6e73c7
Echo Bilgisi
T
//Response
REFUNDED
2500
Echo Bilgisi
yO5ACnF9FpsiV2/WBRRsDEBDRt8=
T
b3091d88-6320-4446-be6c-7a1f8e6e73c7
ABVQ03C77WPTODQN
2
2014-01-03 21:08:51
Ö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.ipara.com/rest/payment/search web servis adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder.
iPara 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
iPara, 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. |
Zorunlu |
version |
Entegrasyon versiyon bilgisidir. “1.0” olarak gönderilmelidir. |
Zorunlu |
token |
“publicKey:hash” bilgisidir. |
Zorunlu |
Servis Girdi Parametreleri
Parametre Adı | Açıklama | Opsiyonel/Zorunlu |
---|---|---|
mode |
İstek modu. “P” veya “T” gönderilmelidir. |
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
Parametre Adı | Açıklama |
---|---|
result |
İşlem sonucu |
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"
}
Link ile Ödeme
Link Gönderim Servisi
Kurumunuza ait kayıtlı mağazanın link ile ödeme talebini iletmesi doğrultusunda, istek içinde belirtilen mağaza müşterisine ait e-posta adresine ödeme linkinin iletilmesini sağlayan servistir.
Link gönderimi gerçekleştirilmek istendiğinde gerekli istek bilgilerini JSON formatında hazırlayarak, https://api.ipara.com/corporate/merchant/linkpayment/create adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder. iPara işlem sonucunu yine JSON formatında mağazaya döner.
Servis Girdi Parametreleri
Parametre Adı | Açıklama | Opsiyonel/Zorunlu |
---|---|---|
clientIp |
İstekte bulunan kullanıcının IP adresi |
Zorunlu |
name |
Müşteri isim bilgisi 2 ila 50 arasında Türkçe karakterlerden oluşmalıdır. Boşluk karakteri kabul edilir. |
Zorunlu |
surname |
Müşteri soyisim bilgisi 2 ila 50 arasında Türkçe karakterlerden oluşmalıdır. Boşluk karakteri kabul edilir. |
Zorunlu |
tcCertificate |
Müşteri T.C. kimlik numarası bilgisi Müşteriye ait 11 rakamdan oluşan T.C. Kimlik No |
Opsiyonel |
taxNumber |
Müşteri vergi numarası bilgisi Müşteriye ait 10 rakamdan oluşan T.C. Vergi Numarası |
Opsiyonel |
Müşterinin ödeme linkini alacağı e-posta adresi |
Zorunlu | |
gsm |
Müşteriye ait cep telefonu numarası bilgisi. 10 hane olarak gönderilmelidir. Örn; 5881231212 |
Zorunlu |
gsm |
Müşteriye ait cep telefonu numarası bilgisi. 10 hane olarak gönderilmelidir. Örn; 5881231212 |
Zorunlu |
amount |
Müşteriden tahsil edilecek olan tutar bilgisi 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 |
threeD |
3D Secure ile gerçekleştirilen ödeme işlemlerinde “true” olarak gönderilmelidir. |
Zorunlu |
expireDate |
Link geçerlilik süresidir. “yyyy-MM-dd HH:mm:ss” formatında olmalıdır. |
Zorunlu |
expireDate |
Link geçerlilik süresidir. “yyyy-MM-dd HH:mm:ss” formatında olmalıdır. |
Zorunlu |
installmentList |
Ödemenin geçebileceği taksitlerin listesidir. Örnek: 2,3,4,5,9 şeklinde olmalıdır. Bu listenin boş veya hiç gönderilmediği durumlarda işlem peşin olarak kabul edilir. |
Opsiyonel |
sendEmail |
Kullanıcıya email gönderilmesi isteniyor ise bu alan “true” istenmiyor ise “false” gönderilmelidir. |
|
mode |
Oluşturulmak istenen linkin mod bilgisi. “P” veya “T” gönderilmelidir. |
Zorunlu |
commissionType |
İpara komisyonunun Alıcıya veya Satıcıya yansıtılması. |
Opsiyonel |
NOT: tcCertificate girilmiş ise taxNumber, taxNumber girilmiş ise tcCertificate bilgisi girilmesi zorunlu değildir. İkiliden sadece birinin verisi yeterlidir. İki verinin aynı istek içinde gönderilmesinde de bir sorun bulunmamaktadır.
İstek Güvenlik Bilgileri
iPara, 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
Parametre Adı | Açıklama |
---|---|
result |
İşlem sonucu |
errorCode | Hata kodu. |
errorMessage | Teknik 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. |
link | İşlem başarılı sonuçlandığında oluşan url bilgisi. |
linkPaymentId | Ödeme Linkinin şifreli ID bilgisi. Bu bilgi link silme servisinde kullanılabilmektedir. |
amount |
İstek içinde alından tutar bilgisinin biçimlendirilmiş hali. |
Hata Kodları
Hata Kodu | Açıklama |
---|---|
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 |
İstek 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. |
818 |
ThreeD alanı boş olamaz. |
819 |
ThreeD alanı hatalı. |
882 |
Göndermiş olduğunuz token doğru değil. |
845 |
Lütfen adınızı giriniz. |
846 |
Ad alanı 2 karakterden küçük, 50 karakterden büyük olamaz. |
847 |
Lütfen soyadınızı giriniz. |
848 |
Soyad alanı 2 karakterden küçük, 50 karakterden büyük olamaz. |
872 |
Lütfen T.C kimlik numarasını 11 hane olacak şekilde giriniz. |
993 |
Lütfen e-posta alanı giriniz. |
994 |
Lütfen geçerli bir e-posta giriniz. |
995 |
Lütfen geçerli bir komisyon tipi giriniz. |
846 |
Ad alanı 2 karakterden küçük, 50 karakterden büyük olamaz. |
3017 |
Lütfen vergi numarası giriniz. |
3018 |
Lütfen geçerli bir vergi numarası giriniz. |
3055 |
Bitiş tarihi zorunlu alandır |
3056 |
Geçerli bir bitiş tarihi giriniz |
3094 |
Lütfen cep telefon numarası giriniz. |
3095 |
Lütfen cep telefon numarasını başında sıfır olmadan 10 hane olarak giriniz. |
3096 |
Girilen cep telefonu kara listede olduğu için isteğiniz reddedilmiştir. Daha fazla bilgi için destek@ipara.com üzerinden iletişime geçiniz. |
3097 |
Lütfen e-posta adresini giriniz. |
3098 |
Lütfen geçerli bir e-posta adresi giriniz. |
4002 |
Lütfen açıklama metnini boşluklar dahil 480 karakter ve altında olacak şekilde yazınız. |
4011 |
TC Kimlik numarası ya da vergi numarası zorunlu alandır. |
4030 |
Ödeme miktarı 100.000 TL'yi geçemez. |
1000 |
İşleminiz gerçekleştirilirken beklenmedik bir hata oluştu. Lütfen daha sonra tekrar deneyiniz. |
Test İşlemleri
Örnek İstek Verisi
{ "clientIp": "127.0.0.1", "amount": "15075", "email": " murat@domain.com", "gsm": "5881231212", "name": "Murat", "surname": "Kaya", "taxNumber": "12342323411", "threeD": "true", "expireDate": "2019-07-30", "sendEmail": "true" "installmentList": [2,3,4] }
Örnek Cevap Verisi
Başarılı İşlem Cevap Verisi { "responseMessage": "Ödeme linki başarı ile gönderilmiştir.", "result": "1", "amount": "150,75 " "link": "https://link/Xdfgdf", "linkPaymentId": "832jdasfsdfdsoıfas==", } Başarısız İşlem Cevap Verisi { "errorCode":"872", "errorMessage":"T.C. kimlik numarası 11 haneli sayı olmalıdır.", "responseMessage":"T.C. kimlik numarası 11 haneli sayı olmalıdır.", "result":"0" }
Ö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;
}
Ödeme Bildirim Servisi
Mağazanız üzerinden bir link oluşturulduğunda ilk olarak “Link Gönderildi,Ödeme Bekleniyor” durumundadır. İlgili link üzerinden ödeme işlemi başarı ile tamamlandığında ilgili linkin durumu ödeme “Link ile Ödeme Başarılı” durumuna getirilir.
iPara olarak ödeme yapıldığı anda tarafınıza bir adet ödeme yapıldı maili göndermekteyiz. Dökümanda anlatılan servis ise mail ile yapılan bildirime ek olarak sunulan, yapılan ödemenin özet bilgilerini tarafınıza Http post ile tarafınıza ileten servistir.
Temel çalışması mantığı, belirli dataların önceden mağazaya tanımlanmış olan http post kabul eden bir url’e content-type’ application/x-www-form-urlencoded olan bir json post etmektir.
İlgili post işlemi yalnızca başarılı olarak yapılmış ödeme işlemi sonrasında yapılacaktır bu yüzden tarafınıza post edilmiş tüm işlemleri başarılı olarak kabul etmeniz gerekmektedir.
İlgili servisi kullanarak link ile ödeme sonrası bildirim almak isteniyor ise iPara operasyon ekibi ile iletişime geçilip yukarıda anlatılan akışı destekleyen url bilginizi paylaşmanız gerekmektedir.
Servis Girdi Parametreleri
Parametre Adı | Açıklama |
---|---|
merchantOrderId |
iPara tarafından oluşturulmuş, ödemeye ait mağaza sipariş numarası. |
amount |
Link ile ödeme işleminde yapılan ödeme tutarı Kuruş değerinde yollanacaktır. |
paymentDate |
Ödeme işleminin gerçekleştiği tarih bilgisidir. “yyyy-MM-dd HH:mm:ss“ formatında yollanacaktır. |
linkPaymentId |
Ödemenin gerçekleştirildiği işleme ait şifreli ID bilgisi |
result |
Ödeme durumunu belirten sonuç bilgisi. 1 – Ödeme başarılı |
Test İşlemleri
Örnek İstek Verisi
{ "merchantOrderId": 109, "amount": "100", "paymentDate": "2019-08-19 16:12:54", "linkPaymentId": " 00204o9HZ.dt17rie-kesmwtA==", "result": "1", }
Link Sorgulama
Kurumunuza ait kayıtlı mağazanın link ile ödeme talebini iletmesi doğrultusunda, başarılı oluşan kayıtların sorgulanmasını sağlayan servistir.
Gönderimi gerçekleştirilmiş link bilgileri sorgulanmak istendiğinde gerekli istek bilgilerini JSON formatında hazırlayarak, https://api.ipara.com/corporate/merchant/linkpayment/list adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder. iPara işlem sonucunu yine JSON formatında mağazaya döner.
Listeleme işleminde sayfalandırma yapılmaktadır. Bu nedenle aşağıda tanımlanan örneklerde bu değerlerin ilk gönderimde varsayılan değerlerle gönderilmesi ve gelen cevaba göre sonraki sorguların yapılması entegrasyon aşamasını kolaylaştıracaktır.
Servis Girdi Parametreleri
Parametre Adı | Açıklama | Opsiyonel/Zorunlu |
---|---|---|
clientIp |
İstekte bulunan kullanıcının IP adresi |
Zorunlu |
Müşterinin ödeme linkini alacağı email adresi |
Opsiyonel * | |
gsm |
Müşteriye ait cep telefonu bilgisi |
Opsiyonel * |
linkState |
Link durum bilgisi. |
Opsiyonel * |
startDate |
Link oluşturma alanına ait arama başlangıç tarihi. “yyyy-MM-dd HH:mm:ss” formatındadır. |
Opsiyonel * |
endDate |
Link oluşturma alanına ait arama bitiş tarihi. “yyyy-MM-dd HH:mm:ss” formatındadır. |
Opsiyonel * |
pageSize |
Toplam gösterilebilecek sayfa adedidir. 5 ile 15 değerlerine eşit ya da arasında olmalıdır. |
Zorunlu |
pageIndex |
Gösterilecek sayfa indeksi/numarasıdır. Cevap olarak dönülecek olan “pageCount” bilgisi kullanılarak mümkün diğer sayfa indekslerine ulaşılabilir. |
Zorunlu |
-
NOTLAR:
-
Listeleme parametrelerinin herbiri tekil olarak zorunlu olmasa da, listeleme isteğinde en azından bir listeleme istek parametresinin geçerli olarak girilmiş olması gerekmektedir.
-
Başlangış ve Bitiş tarihi parametreleri bir çift olarak çalışmaktadır. Bu nedenle eğer biri istek içine eklenmiş ise, diğerinin de eklenmesi gerekmektedir.
İstek Güvenlik Bilgileri
iPara, 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. |
Zorunlu |
Servis Çıktı Parametreleri
Parametre Adı | Açıklama |
---|---|
result |
İşlem sonucu |
errorCode | Hata kodu. |
errorMessage | Teknik 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. |
paymentLinkRecords | Link detay bilgileri listesi. Aşağıdaki tabloda iç parametreleri anlatılmıştır. |
Link Detay Bilgileri Listesi (paymentLinkRecords)
Parametre Adı | Açıklama |
---|---|
amount |
Müşteriye iletilen tutar bilgisi Tutar kuruş ayracı olmadan gönderilecektir. |
creationDate | Ödeme Linki’nin yaratıldığı tarih “yyyy-MM-dd HH:mm:ss“ formatında. |
Ödeme Linki’nin gönderildiği e-posta adresi. | |
gsm | Ödeme Linki gönderim isteğinde iletilen cep telefonu numarası. |
linkState |
Ödeme Linkinin durumu 0 - Link İsteği Alındı 1 - Link URL’i yaratıldı 2 - Link Gönderildi, Ödeme Bekleniyor 3 - Link ile Ödeme Başarılı 98 - Link Zaman Aşımına Uğradı 99 - Link Silindi |
linkId | Ödeme Linkinin ID’si. Bu bilgi link silme servisinde kullanılabilmektedir. |
name | Ödeme Linki gönderim isteğinde belirtilen müşteri adı. |
surname | Ödeme Linki gönderim isteğinde belirtilen müşteri soyadı. |
taxNumber | Ödeme Linki gönderim isteğinde belirtilen T.C. vergi numarası. |
tcCertificate | Ödeme Linki gönderim isteğinde belirtilen T.C. Kimlik Numarası. |
Hata Kodları
Hata Kodu | Açıklama |
---|---|
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 |
İstek 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ış. |
882 |
Göndermiş olduğunuz token doğru değil. |
3053 |
Başlangıç tarihi zorunlu alandır. |
3055 |
Bitiş tarihi zorunlu alandır |
3078 |
Başlangıç tarihi bitiş tarihinden büyük olamaz |
3046 |
Tarih aralığı 30 günü geçemez |
3054 |
Lütfen geçerli bir başlangıç tarihi giriniz. |
3056 |
Geçerli bir bitiş tarihi giriniz. |
3058 |
pageIndex zorunlu alandır |
3059 |
pageIndex alanı geçersizd |
3060 |
pageSize zorunlu alandır |
3061 |
pageSize alanı geçersizdir |
3094 |
Lütfen cep telefon numarası giriniz |
3095 |
Lütfen cep telefon numarasını başında sıfır olmadan 10 hane olarak giriniz. |
3096 |
Girilen cep telefonu kara listede olduğu için isteğiniz reddedilmiştir. Daha fazla bilgi için destek@ipara.com üzerinden iletişime geçiniz. |
3097 |
Lütfen e-posta adresini giriniz. |
3098 |
Lütfen geçerli bir e-posta adresi giriniz. |
3130 |
pageSize paramtersi en az 5, en çok 15 olabilir |
3159 |
Başlangıç tarihi boş iken, bitiş tarihi dolu olamaz. |
3160 |
Başlangıç tarihi dolu iken, bitiş tarihi boş olamaz. |
3161 |
Ödeme Linki listeleme isteğinde en azından bir kriter belirtilmesi gerekmektedir. |
4012 |
Ödeme Linki statüsü boş. |
4013 |
Ödeme Linki statüsü geçersiz. |
1000 |
İşleminiz gerçekleştirilirken beklenmedik bir hata oluştu. Lütfen daha sonra tekrar deneyiniz. |
Test İşlemleri
Örnek İstek Verisi
{ "clientIp":"127.0.0.1", "email":"ozan@domain.com.tr", "gsm":"5881231212", "linkState":"3", "endDate":"2016-11-30", "startDate":"2016-11-08" "pageSize":"5" "pageIndex":"1" }
Örnek Cevap Verisi
Başarılı İşlem Cevap Verisi { "responseMessage": "Ödeme Linki listeme işlemi sonuçları başarıyla gönderildi.", "result": "1", "pageIndex ": "1", "pageSize ": "5", "pageCount ": "1", "paymentLinkRecords": [ { "amount": "10,10", "creationDate": "2016-11-16 13:15:00", "description": "Ödemenizi buradan yapabilirsiniz", "email": " Ozan@domain.com, "gsm": "5884043366", "linkId": "001zuIpfDR/tk7mz5qRJrjkjg==", "linkState": "3", "name": "Ozan ", "surname": "Aksu", "taxNumber": "1881777842", "tcCertificate": "59915578895" }, { "amount": "150", "creationDate": "2016-11-19 16:00:00", "description": "Ödemenizi buradan yapabilirsiniz", "email": " Ozan@domain.com, "gsm": "5884043366", "linkId": "001MgiU/Dv8sJemWoDzJgBo/Q==", "linkState": "3", "name": "Ozan", "surname": "Nazo", "taxNumber": "1881777842", "tcCertificate": "59915578895" } ] } Başarısız İşlem Cevap Verisi { "errorCode":"3098", "errorMessage":"Geçerli bir email adresi giriniz", "responseMessage":"Geçerli bir email adresi giriniz", "result":"0" }
Ö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;
}
Link Silme
Kurumunuza ait kayıtlı mağazanın link ile ödeme talebini iletmesi doğrultusunda oluşan bağlantıların yetkisinin kaldırılarak etkisizleştirilmesi (silinmesi) işlemini sağlayan servistir.
Link silinmek istendiğinde gerekli istek bilgilerini JSON formatında hazırlayarak, https://api.ipara.com/corporate/merchant/linkpayment/delete adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder. iPara işlem sonucunu yine JSON formatında mağazaya döner.
Servis Girdi Parametreleri
Parametre Adı | Açıklama | Opsiyonel/Zorunlu |
---|---|---|
linkId |
Listeleme Servisi ile iletilmiş olan Ödeme Linki ID’si |
Zorunlu |
clientIp |
İstekte bulunan kullanıcının IP adresi |
Zorunlu |
İstek Güvenlik Bilgileri
iPara, 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. |
Zorunlu |
Servis Çıktı Parametreleri
Parametre Adı | Açıklama |
---|---|
result |
İşlem sonucu |
errorCode | Hata kodu. |
errorMessage | Teknik 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. |
Hata Kodları
Hata Kodu | Açıklama |
---|---|
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 |
İstek 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. |
882 |
Göndermiş olduğunuz token doğru değil. |
3165 |
Ödeme Linki kayıtlarının silinmesi işlemi için gelen istekte silinecek kayıt bilgisi bulunamadı. |
3166 |
Ödeme Linki kayıtlarının silinmesi işlemi için gelen istekte silinecek kayıt bilgisi tanımlanamadı. |
3167 |
Ödeme Linki kayıtlarının silinmesi işlemi bilinmeyen bir sebeple başarısız oldu. |
3168 |
Ödeme Linki kayıtlarının silinmesi işlemi silinmek istenen link kaydı ödeme aşamasını geçtiğinden dolayı gerçekleştirilmedi. |
3169 |
Ödeme Linki kayıtlarının silinmesi isteğinde belirtilen kayıt bilgisi bulunamadı. |
1000 |
İşleminiz gerçekleştirilirken beklenmedik bir hata oluştu. Lütfen daha sonra tekrar deneyiniz. |
Test İşlemleri
Örnek İstek Verisi
{ "clientIp":"127.0.0.1", "linkId":"Rq12/RyqdJuNKa08HL==" }
Örnek Cevap Verisi
Başarılı İşlem Cevap Verisi { "responseMessage": "Ödeme Linki kaydı başarı ile silindi.", "result": "1" } Başarısız İşlem Cevap Verisi { "errorCode":"3172", "errorMessage":"Ödeme Linki kaydının silinmesi işlemine izin verilmedi.", "responseMessage":"Ödeme Linki kaydının silinmesi işlemine izin verilmedi.", "result":"0" }
Ö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 Otorizasyon Servisi
Mağaza, müşteri üyelik bilgilerini ve kart bilgilerini aldıktan sonra, ödeme verilerini JSON formatında hazırlayarak https://api.ipara.com/rest/payment/preauth web servis adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder. iPara işlem sonucunu yine JSON formatında mağazaya döner.
Servis Girdi Parametreleri
Parametre Adı | Açıklama | Opsiyonel/Zorunlu |
---|---|---|
mode |
İstek modu. "P" veya "T" gönderilmelidir. |
Zorunlu |
orderId |
Mağazanın ilgili sipariş ile ilişkilendirdiği her bir istek için benzersiz olan tekil sipariş kodu. |
Zorunlu |
cardOwnerName |
Kart üzerindeki ad. |
Zorunlu |
cardNumber |
Kart numarası. |
* |
cardExpireMonth |
Kart son kullanma tarihi ay parametresi |
* |
cardExpireYear |
Kart son kullanma tarihi yıl parametresi. |
* |
cardCvc |
Kartın arkasındaki güvenlik kodu: |
* |
userId |
Mağaza kullanıcısını referans eden bilgi. |
* |
cardId |
Mağaza kullanıcısının kartını referans eden kart kaydetme işlemi sonucunda oluşan id bilgisi. |
* |
installment |
Taksit Sayısı. |
Zorunlu |
amount |
Karttan bloke edilecek olan toplam sipariş tutarı. |
Zorunlu |
echo |
Mağazaya istek sonucunda geri gönderilecek bilgi alanıdır. |
Opsiyonel |
vendorId |
iPara 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 ön otorizasyon yapmak istediğinizde 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 ön otorizasyon yapmak istediğinizde 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.
Parametre Adı | Açıklama | Opsiyonel/Zorunlu |
---|---|---|
purchaserName |
Müşteri isim bilgisi. |
Zorunlu |
purchaserSurname |
Müşteri soyisim bilgisi. |
Zorunlu |
purchaserEmail |
Müşteri e-posta bilgisi. |
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 |
İstek Güvenlik Bilgileri
iPara, 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 |
Login servis’i için gerekli bilgi aşağıdaki link’te yer almaktadır
https://documenter.getpostman.com/view/10639199/SzRw3Bnj
Servis Çıktı Parametreleri
Parametre Adı | Açıklama |
---|---|
result |
İşlem sonucu |
orderId | Mağaza sipariş Id |
amount | Sipariş toplam tutar bilgisi |
mode |
İstek modu. |
publicKey | Mağaza açık anahtar bilgisi. |
echo | Mağazanın istek bilgisinde iletmiş olduğu echo verisi. |
errorCode | Hata kodu. |
errorMessage |
Hata mesajı. |
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. |
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": "jack.connor@gmail.com", "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": "Multinet UP", "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.ipara.com/rest/payment/postauth web servis adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder. iPara işlem sonucunu yine Json formatında mağazaya döner.
Servis Girdi Parametreleri
Parametre Adı | Açıklama | Opsiyonel/Zorunlu |
---|---|---|
mode |
İstek modu. “P” veya “T” gönderilmelidir. |
Zorunlu |
orderId |
Mağazanın ilgili sipariş ile ilişkilendirdiği her bir istek için benzersiz olan tekil sipariş kodu. |
Zorunlu |
amount |
Karttan çekilecek olan toplam sipariş tutarı. |
Zorunlu |
clientIp |
Müşteri istemci IP adresi |
Zorunlu |
İstek Güvenlik Bilgileri
iPara, 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 |
Login servis’i için gerekli bilgi aşağıdaki link’te yer almaktadır
https://documenter.getpostman.com/view/10639199/SzRw3Bnj
Servis Çıktı Parametreleri
Parametre Adı | Açıklama |
---|---|
result |
İşlem sonucu |
orderId | Mağaza sipariş Id |
amount | Sipariş toplam tutar bilgisi |
mode |
İstek modu. |
publicKey | Mağaza açık anahtar bilgisi. |
echo | Mağazanın istek bilgisinde iletmiş olduğu echo verisi. |
errorCode | Hata kodu. |
errorMessage |
Hata mesajı. |
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. |
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 iPara 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 iPara 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, iPara ü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 iPara’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.ipara.com/corporate/payment/refund/inquiry
adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder. iPara 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.
iPara İade Sorgulama Servisi Rest bir servis olup JSON medya tipinde istekleri kabul etmektedir.
Önemli Notlar
- 1. Servisleri kullanabilmek için iPara 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.
- 2. 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.
- 3. Servis isteği yaparken göndermiş olduğunuz alanların başında ve sonunda oluşabilecek boşluk alanlarını kaldırmanızı ( trim() ) önemle rica ederiz.
- 4. Başarılı entegrasyon sonrası hata mesajlarının kullanıcıya direkt gösterilmesini öneririz. Hata mesajları kullanıcı dostu mesajlardır.
- 5. Sorularınız için destek@ipara.com.tr e-posta adresinden bizlere ulaşabilirsiniz.
İstek Güvenlik Bilgileri
HttpHeader Güvenlik Bilgileri
iPara, 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. |
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 |
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, iPara ü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 iPara’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.ipara.com/corporate/payment/refund
adresine gerekli güvenlik bilgilerini http header bilgisine ekleyerek post eder. iPara 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.
iPara İade Sorgulama Servisi Rest bir servis olup JSON medya tipinde istekleri kabul etmektedir.
Önemli Notlar
- 1. Servisleri kullanabilmek için iPara 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.
- 2. 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.
- 3. Servis isteği yaparken göndermiş olduğunuz alanların başında ve sonunda oluşabilecek boşluk alanlarını kaldırmanızı ( trim() ) önemle rica ederiz.
- 4. Başarılı entegrasyon sonrası hata mesajlarının kullanıcıya direkt gösterilmesini öneririz. Hata mesajları kullanıcı dostu mesajlardır.
- 5. Sorularınız için destek@ipara.com.tr e-posta adresinden bizlere ulaşabilirsiniz.
İstek Güvenlik Bilgileri
HttpHeader Güvenlik Bilgileri
iPara, 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. |
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 |
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;
}