3D'li Satış İşlemi
Web Servis İsteği
NOT!
Aşağıdaki örnek kodlara ait kütüphanemize buradan ulaşabilirsiniz.
package com.hepsipay.sample;
import java.util.ArrayList;
import java.util.List;
import com.hepsipay.client.model.Basketitem;
import com.hepsipay.client.model.Card;
import com.hepsipay.client.model.Customer;
import com.hepsipay.client.model.Extra;
import com.hepsipay.client.model.InvoiceAddress;
import com.hepsipay.client.model.ShippingAddress;
import com.hepsipay.client.model.request.payment.Payment3D;
import com.hepsipay.client.service.PaymentService;
import com.hepsipay.client.type.BasketItemType;
import com.hepsipay.client.type.Currency;
import com.hepsipay.client.util.HepsiPayUtil;
/**
*
* @author Ahmet Faruk Bişkinler,
* @Support PixelTürk Web Studio, "destek@pixelturk.net"
*
*/
public class SamplePayment3D extends Sample {
public static void main(String[] args) {
Payment3D payment3DRequest = new Payment3D();
/**
* Create Payment3D Request
* Ödeme İsteği Oluştur
*/
// payment3DRequest.setTransactiontime(); // Ödeme İşlem Zamanı, Varsayılan zaman ise şuan.
// payment3DRequest.setTransactionId("tx_" . rand(100000, 999999)); // Ödemeye Ait Tekil Kodu (Maksimum 40 karakterdir)
payment3DRequest.setTransactionId(HepsiPayUtil.generateRandomTranstionId()); // Ödemeye Ait Tekil Kodu (Maksimum 40 karakterdir)
payment3DRequest.setDescription("E-Ticaret Ödemesi"); // Açıklama alanıdır (Maksimum 40 karakterdir)
payment3DRequest.setAmount("120,99"); // Toplam Ödeme Tutarı
payment3DRequest.setCurrency(Currency.TL.getCode()); // Toplam Ödeme Tutar Birimi
payment3DRequest.setInstallment(1); // Ödeme Taksit Sayısı (1'den 12'ye kadar taksit değeridir)
payment3DRequest.setSuccessUrl("http://example.com/payment_response.jsp?status=success"); // 3d secure işlemler için zorunlu bir alandır.İşlemin başarılı olması durumunda üye işyerine tarafından geliştirilmiş sayfanın URL'si yazılmalıdır.
payment3DRequest.setFailUrl("http://example.com/payment_response.jsp?status=fail"); // 3d secure işlemler için zorunlu bir alandır.İşlemin başarılı olması durumunda üye işyerine tarafından geliştirilmiş sayfanın URL'si yazılmalıdır.
/**
* Credit Card Info
* Kredi Kartı Bilgileri
*/
Card card = new Card();
card.setCardHolderName("John Doe"); // Kart İsim Soyisim (Maksimum 40 karakterdir. Sadece alfabetik karakterler ve boşluk kabul eder)
card.setCardNumber("4355084355084358"); // Kart Numarası (15 veya 16 haneli nümerik değerdir)
card.setExpireMonth("12"); // Kart Son Kullanım Tarihi (2 haneli nümerik değerdir.)
card.setExpireYear("18"); // Kart Son Kullanım Tarihi (2 haneli nümerik değerdir.)
card.setSecuritycode("000"); // Kart CVV (3 veya 4 haneli nümerik değerdir.)
payment3DRequest.setCard(card);
/**
* Customer Info
* Müşteri Bilgileri
*/
Customer customer = new Customer();
customer.setName("Ali"); // Müşteri İsim (Maksimum 20 karakterdir. Sadece alfabetik karakterler ve boşluk kabul eder.)
customer.setSurname("Veli"); // Müşteri Soyisim (Maksimum 20 karakterdir. Sadece alfabetik karakterler ve boşluk kabul eder.)
customer.setEmail("ali.veli@alivelimarket.com.tr"); // Müşteri Mail (Eposta adresidir.)
customer.setIpaddress("72.125.165.16"); // Müşteri IP Adresi (IP adresidir.)
customer.setPhonenumber("+905350000000"); // Müşteri Telefon Numarası (Maksimum 13 karakterdir. Sadece nümerik ve + değerlerini alabilir.)
customer.setCode("7cefdf61-38cd-4b35-b5f0-4c98c5805d41"); // Müşteri Kodu (Maksimum 36 karakterdir.)
customer.setTckn("12345678910"); // Müşteri Kimik Numarısı (TC Kimlik numarasıdır.)
customer.setVatNumber("12345678910"); // Müşteri Vergi Numarası (Şirketlere ve firmalara tekil vergi numarası)
customer.setMemberSince("20151124"); // Müşteri Üyelik tarihi (Müşteri üyelik tarihi formatı YYYYMMDD’dır.)
customer.setBirthdate("19781123"); // Müşteri Doğum tarihi (Müşteri üyelik tarihi formatı YYYYMMDD’dır.)
payment3DRequest.setCustomer(customer);
/**
* Shipping Address
* Teslimat/Nakliye Adresi
*/
ShippingAddress shippingAddress = new ShippingAddress();
shippingAddress.setName("Ali Veli"); // Sipariş Teslimatının yapılacağı kişi adı ve soyadı (Maksimum 40 karakterdir. Sadece alfabetik karakterler ve boşluk kabul eder.)
shippingAddress.setAddress("Kuştepe Mahallesi Mecidiyeköy Yolu Cad. No:12 Trump Towers Kule:2 Kat:11 Mecidiyeköy"); // Siparişin teslim edileceği adres (Maksimum 500 karakterdir. Sadece alfanümerik karakterler, &.,/: ve boşluk karakterini kabul eder.)
shippingAddress.setCountry("Türkiye"); // Sipariş teslimatının yapılacağı ülke (Maksimum 20 karakterdir. Sadece alfabetik olabilir.)
shippingAddress.setCountrycode("TUR"); // Sipariş teslimatının yapılacağı ülke (2 veya 3 haneli ISO ülke kodudur.Sadece alfabetik olabilir.)
shippingAddress.setCity("Istanbul"); // Sipariş teslimatının yapılacağı şehir (Maksimum 20 karakterdir.Sadece alfabetik olabilir.)
shippingAddress.setCitycode("34"); // Sipariş teslimatının yapılacağı şehir (Şehire ait ulusal veya uluslararası kod alanıdır. Türkiye için plaka kodu kullanılabilir.)
shippingAddress.setZipcode("34580"); // Sipariş teslimatının yapılacağı posta kodu (Uluslararası posta kodu alanıdır.)
shippingAddress.setDistrict("Şişli"); // Sipariş teslimatının yapılacağı ilçe (İlçe alanıdır.)
shippingAddress.setDistrictCode(""); // Sipariş teslimatının yapılacağı ilçe kodu (İlçe kodu alanıdır.)
shippingAddress.setShippingCompany("XXX"); // Taşıyıcı kargo bilgisi (Taşıyıcı kargo bilgisi alanıdır.)
payment3DRequest.setShippingaddress(shippingAddress);
/**
* Invoice Address
* Fature Adresi
*/
InvoiceAddress invoceAddress = new InvoiceAddress();
invoceAddress.setName("Ali Veli"); // Fatura kesilecek kişi veya kurum adı (Maksimum 40 karakterdir. Sadece alfanümerik karakterler, & . ve boşluk karakterini kabul eder.)
invoceAddress.setAddress("Kuştepe Mahallesi Mecidiyeköy Yolu Cad. No:12 Trump Towers Kule:2 Kat:11 Şişli"); // Fatura adresi (Maksimum 500 karakterdir. Sadece alfanümerik karakterler, &.,/: ve boşluk karakterini kabul eder.)
invoceAddress.setCountry("Türkiye"); // Fatura ülkesi (Maksimum 20 karakterdir. Sadece alfabetik olabilir.)
invoceAddress.setCountrycode("TUR"); // Fatura ülkesi (2 veya 3 haneli ISO ülke kodudur. Sadece alfabetik olabilir.)
invoceAddress.setCity("Istanbul"); // Fatura şehri (Maksimum 20 karakterdir. Sadece alfabetik olabilir.)
invoceAddress.setCitycode("34"); // Fatura şehri (Şehire ait ulusal veya uluslararası kod alanıdır. Türkiye için plaka kodu kullanılabilir.)
invoceAddress.setZipcode("34580"); // Fatura zip code (Uluslararası posta kodu alanıdır.)
invoceAddress.setDistrict("Şişli"); // Sipariş teslimatının yapılacağı ilçe (İlçe alanıdır.)
invoceAddress.setDistrictCode(""); // Sipariş teslimatının yapılacağı ilçe kodu (İlçe kodu alanıdır.)
invoceAddress.setShippingCompany("XXX"); // Taşıyıcı kargo bilgisi (Taşıyıcı kargo bilgisi alanıdır.)
payment3DRequest.setInvoiceaddress(invoceAddress);
/**
* Cart
* Sepet
*/
List basketList = new ArrayList<>();
Basketitem firstBasketitem = new Basketitem();
firstBasketitem.setDescription("Boyama Kalem Seti"); // Ürün ismi (Maksimum 40 karakterdir.)
firstBasketitem.setProductcode("7cefdf61-38cd-4b35-b5f0-4c98c5805d41"); // Ürün kodu (Maksimum 36 karakterdir.)
firstBasketitem.setAmount("87,50"); // Ürün fiyatı (Nokta ve virgülden arındırılmış double değerdir.)
firstBasketitem.setVatratio("18"); // Tutarın KDV içerip içermediğini belirtir (0, 8 veya 18 değerlerini alabilir.)
firstBasketitem.setCount("1"); // Ürün miktarı (Maksimum 3 haneli nümerik değerdir.)
firstBasketitem.setUrl("http://www.alivelimarket.com.tr/boyama-kalem-seti"); // Ürün web adresi (Web URL'idir)
firstBasketitem.setBasketItemType(BasketItemType.PHYSICAL.getCode()); // Ürün tipi (Ürünler için PHYSICAL, Kargo bilgisi için SHIPPING.)
firstBasketitem.setBasketItemId("basket_1"); // Ürün kodu (Maksimum 40 karakterdir.)
basketList.add(firstBasketitem);
Basketitem secondBasketitem = new Basketitem();
secondBasketitem.setDescription("Boyama Kitabı");
secondBasketitem.setProductcode("7cefdf61-38cd-4b35-b5f0-4c98c5805d41");
secondBasketitem.setAmount("25,50");
secondBasketitem.setVatratio("18");
secondBasketitem.setCount("3");
secondBasketitem.setUrl("http://www.alivelimarket.com.tr/boyama-kitabi");
secondBasketitem.setBasketItemType(BasketItemType.PHYSICAL.getCode());
secondBasketitem.setBasketItemId("basket_2");
basketList.add(secondBasketitem);
Basketitem thirdBasketitem = new Basketitem();
thirdBasketitem.setDescription("KargoBedeli");
thirdBasketitem.setAmount("10,00");
thirdBasketitem.setVatratio("18");
thirdBasketitem.setCount("1");
thirdBasketitem.setBasketItemType(BasketItemType.SHIPPING.getCode());
thirdBasketitem.setBasketItemId("basket_3");
basketList.add(thirdBasketitem);
payment3DRequest.setBasketitems(basketList);
List extraList = new ArrayList<>();
Extra extra1 = new Extra();
extra1.setKey("INT_SPRS_KODU");
extra1.setValue("spr_123456789");
extraList.add(extra1);
Extra extra2 = new Extra();
extra2.setKey("INT_MUSTERI_KODU");
extra2.setValue("mus_123456789");
extraList.add(extra2);
payment3DRequest.setExtras(extraList);
PaymentService payment3DService = new PaymentService(hepsiPaySettings);
payment3DService.makePayment3D(payment3DRequest);
}
}
<?php
require_once('config.php');
/**
* Create 3D Payment Request
* 3D Ödeme İsteği Oluştur
*/
$request = new \Hepsipay\Request\CreateThreeDSecurePaymentRequest();
/**
* Set Options
* Ayarları Set Et
*/
$request->setOptions($options);
$request->setTransactionTime(); // Ödeme İşlem Zamanı, Varsayılan zaman ise şuan.
$request->setTransactionId("tx_" . rand(100000, 999999)); // Ödemeye Ait Tekil Kodu (Maksimum 40 karakterdir)
$request->setDescription("3D E-Ticaret Ödemesi"); // Açıklama alanıdır (Maksimum 40 karakterdir)
$request->setAmount("12099"); // Toplam Ödeme Tutarı (120,99 TL için 12099 girilmesi gerekmektedir. Diğer örnek: 1 TL için 100 giriniz.)
$request->setCurrency(\Hepsipay\Model\Currency::TL); // Toplam Ödeme Tutar Birimi
$request->setInstallment(1); // Ödeme Taksit Sayısı (1'den 12'ye kadar taksit değeridir)
$request->setSuccessUrl("http://" . $_SERVER['SERVER_NAME'] . dirname($_SERVER['REQUEST_URI']). "/retrieve_threed_secure_payment_response.php?status=success"); // 3d secure işlemler için zorunlu bir alandır.İşlemin başarılı olması durumunda üye işyerine tarafından geliştirilmiş sayfanın URL'si yazılmalıdır.
$request->setFailUrl("http://" . $_SERVER['SERVER_NAME'] . dirname($_SERVER['REQUEST_URI']) . "/retrieve_threed_secure_payment_response.php?status=fail"); // 3d secure işlemler için zorunlu bir alandır.İşlemin başarılı olması durumunda üye işyerine tarafından geliştirilmiş sayfanın URL'si yazılmalıdır.
/**
* Credit Card Info
* Kredi Kartı Bilgileri
*/
$card = new \Hepsipay\Model\Card();
$card->setCardHolderName("John Doe"); // Kart İsim Soyisim (Maksimum 40 karakterdir. Sadece alfabetik karakterler ve boşluk kabul eder)
$card->setCardNumber("4355084355084358"); // Kart Numarası (15 veya 16 haneli nümerik değerdir)
$card->setExpireMonth("12"); // Kart Son Kullanım Tarihi (2 haneli nümerik değerdir.)
$card->setExpireYear("18"); // Kart Son Kullanım Tarihi (2 haneli nümerik değerdir.)
$card->setSecurityCode("000"); // Kart CVV (3 veya 4 haneli nümerik değerdir.)
$request->setCard($card);
/**
* Customer Info
* Müşteri Bilgileri
*/
$customer = new \Hepsipay\Model\Customer();
$customer->setName("Ali"); // Müşteri İsim (Maksimum 20 karakterdir. Sadece alfabetik karakterler ve boşluk kabul eder.)
$customer->setSurName("Veli"); // Müşteri Soyisim (Maksimum 20 karakterdir. Sadece alfabetik karakterler ve boşluk kabul eder.)
$customer->setEmail("ali.veli@alivelimarket.com.tr"); // Müşteri Mail (Eposta adresidir.)
$customer->setIpAddress("72.125.165.16"); // Müşteri IP Adresi (IP adresidir.)
$customer->setPhoneNumber("+905350000000"); // Müşteri Telefon Numarası (Maksimum 13 karakterdir. Sadece nümerik ve + değerlerini alabilir.)
$customer->setCode("7cefdf61-38cd-4b35-b5f0-4c98c5805d41"); // Müşteri Kodu (Maksimum 36 karakterdir.)
$customer->setTckn("12345678910"); // Müşteri Kimik Numarısı (TC Kimlik numarasıdır.)
$customer->setVatNumber("12345678910"); // Müşteri Vergi Numarası (Şirketlere ve firmalara tekil vergi numarası)
$customer->setMemberSince("20151124"); // Müşteri Üyelik tarihi (Müşteri üyelik tarihi formatı YYYYMMDD’dır.)
$customer->setBirthDate("19781123"); // Müşteri Doğum tarihi (Müşteri üyelik tarihi formatı YYYYMMDD’dır.)
$request->setCustomer($customer);
/**
* Shipping Address
* Teslimat/Nakliye Adresi
*/
$shippingAddress = new \Hepsipay\Model\Address();
$shippingAddress->setName("Ali Veli"); // Sipariş Teslimatının yapılacağı kişi adı ve soyadı (Maksimum 40 karakterdir. Sadece alfabetik karakterler ve boşluk kabul eder.)
$shippingAddress->setAddress("Kuştepe Mahallesi Mecidiyeköy Yolu Cad. No:12 Trump Towers Kule:2 Kat:11 Mecidiyeköy"); // Siparişin teslim edileceği adres (Maksimum 500 karakterdir. Sadece alfanümerik karakterler, &.,/: ve boşluk karakterini kabul eder.)
$shippingAddress->setCountry("Türkiye"); // Sipariş teslimatının yapılacağı ülke (Maksimum 20 karakterdir. Sadece alfabetik olabilir.)
$shippingAddress->setCountryCode("TUR"); // Sipariş teslimatının yapılacağı ülke (2 veya 3 haneli ISO ülke kodudur.Sadece alfabetik olabilir.)
$shippingAddress->setCity("Istanbul"); // Sipariş teslimatının yapılacağı şehir (Maksimum 20 karakterdir.Sadece alfabetik olabilir.)
$shippingAddress->setCityCode("34"); // Sipariş teslimatının yapılacağı şehir (Şehire ait ulusal veya uluslararası kod alanıdır. Türkiye için plaka kodu kullanılabilir.)
$shippingAddress->setZipCode("34580"); // Sipariş teslimatının yapılacağı posta kodu (Uluslararası posta kodu alanıdır.)
$shippingAddress->setDistrict("Şişli"); // Sipariş teslimatının yapılacağı ilçe (İlçe alanıdır.)
$shippingAddress->setDistrictCode(""); // Sipariş teslimatının yapılacağı ilçe kodu (İlçe kodu alanıdır.)
$shippingAddress->setShippingCompany("XXX"); // Taşıyıcı kargo bilgisi (Taşıyıcı kargo bilgisi alanıdır.)
$request->setShippingAddress($shippingAddress);
/**
* Invoice Address
* Fature Adresi
*/
$invoceAddress = new \Hepsipay\Model\Address();
$invoceAddress->setName("Ali Veli"); // Fatura kesilecek kişi veya kurum adı (Maksimum 40 karakterdir. Sadece alfanümerik karakterler, & . ve boşluk karakterini kabul eder.)
$invoceAddress->setAddress("Kuştepe Mahallesi Mecidiyeköy Yolu Cad. No:12 Trump Towers Kule:2 Kat:11 Şişli"); // Fatura adresi (Maksimum 500 karakterdir. Sadece alfanümerik karakterler, &.,/: ve boşluk karakterini kabul eder.)
$invoceAddress->setCountry("Türkiye"); // Fatura ülkesi (Maksimum 20 karakterdir. Sadece alfabetik olabilir.)
$invoceAddress->setCountryCode("TUR"); // Fatura ülkesi (2 veya 3 haneli ISO ülke kodudur. Sadece alfabetik olabilir.)
$invoceAddress->setCity("Istanbul"); // Fatura şehri (Maksimum 20 karakterdir. Sadece alfabetik olabilir.)
$invoceAddress->setCityCode("34"); // Fatura şehri (Şehire ait ulusal veya uluslararası kod alanıdır. Türkiye için plaka kodu kullanılabilir.)
$invoceAddress->setZipCode("34580"); // Fatura zip code (Uluslararası posta kodu alanıdır.)
$invoceAddress->setDistrict("Şişli"); // Sipariş teslimatının yapılacağı ilçe (İlçe alanıdır.)
$invoceAddress->setDistrictCode(""); // Sipariş teslimatının yapılacağı ilçe kodu (İlçe kodu alanıdır.)
$invoceAddress->setShippingCompany("XXX"); // Taşıyıcı kargo bilgisi (Taşıyıcı kargo bilgisi alanıdır.)
$request->setInvoiceAddress($invoceAddress);
/**
* Cart
* Sepet
*/
$basketItems = array();
$firstBasketItem = new \Hepsipay\Model\BasketItem();
$firstBasketItem->setDescription("Boyama Kalem Seti"); // Ürün ismi (Maksimum 40 karakterdir.)
$firstBasketItem->setProductCode("7cefdf61-38cd-4b35-b5f0-4c98c5805d41"); // Ürün kodu (Maksimum 36 karakterdir.)
$firstBasketItem->setAmount("8750"); // Ürün fiyatı (Nokta ve virgülden arındırılmış double değerdir.)
$firstBasketItem->setVatRatio("18"); // Tutarın KDV içerip içermediğini belirtir (0, 8 veya 18 değerlerini alabilir.)
$firstBasketItem->setCount("1"); // Ürün miktarı (Maksimum 3 haneli nümerik değerdir.)
$firstBasketItem->setUrl("http://www.alivelimarket.com.tr/boyama-kalem-seti"); // Ürün web adresi (Web URL'idir)
$firstBasketItem->setBasketItemType(\Hepsipay\Model\BasketItemType::PHYSICAL); // Ürün tipi (Ürünler için PHYSICAL, Kargo bilgisi için SHIPPING.)
$firstBasketItem->setBasketItemId("basket_1"); // Ürün kodu (Maksimum 40 karakterdir.)
$basketItems[] = $firstBasketItem;
$secondBasketItem = new \Hepsipay\Model\BasketItem();
$secondBasketItem->setDescription("Boyama Kitabı");
$secondBasketItem->setProductCode("7cefdf61-38cd-4b35-b5f0-4c98c5805d41");
$secondBasketItem->setAmount("2550");
$secondBasketItem->setVatRatio("18");
$secondBasketItem->setCount("3");
$secondBasketItem->setUrl("http://www.alivelimarket.com.tr/boyama-kitabi");
$secondBasketItem->setBasketItemType(\Hepsipay\Model\BasketItemType::PHYSICAL);
$secondBasketItem->setBasketItemId("basket_2");
$basketItems[] = $secondBasketItem;
$thirdBasketItem = new \Hepsipay\Model\BasketItem();
$thirdBasketItem->setDescription("KargoBedeli");
$thirdBasketItem->setAmount("1000");
$thirdBasketItem->setVatRatio("18");
$thirdBasketItem->setCount("1");
$thirdBasketItem->setBasketItemType(\Hepsipay\Model\BasketItemType::SHIPPING);
$thirdBasketItem->setBasketItemId("basket_3");
$basketItems[] = $thirdBasketItem;
$request->setBasketItems($basketItems);
/**
* Make Request
* İsteği Oluştur
*/
$response = \Hepsipay\Model\ThreeDSecurePayment::create($request);
/**
* Print Response ve Request Details
* Yanıtı ve İstek Detaylarını Yazdır
*/
echo "<pre>";
echo "\nRESPONSE\n\n";
print_r($response); // Response
echo "\nREQUEST\n\n";
print_r($request->toJsonString()); // Request
echo "</pre>";
/**
* Get HTML Codes
* HTML Kodu Al
*
* Yorum satırını devredışı bırakıp bu kodu çalıştırdığınızda javascript çalışacağı için sayfa otomatik olarak ödeme sayfasında yönlenecektir
*/
echo $response->getHtmlCodes();
public ActionResult Sale()
{
var createThreedRequest = new CreateThreedRequest
{
ApiKey = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoxLCJBcGlLZXkiOiJhNTNkZjYwZjUwNmY0MzBjYTRjNzQzNTRkNDU1Y2RlYyJ9.O-eJWMK1sHt3JZgHFsnJp6yyiqmbzdyuOOe0-AvnHzg",
TransactionId = "TestThreedPayment00001",
TransactionTime = "1443600845",
Amount = 5499,
Description = "E-ticaretÖdemesi",
Currency = "TRY",
Installment = 1,
Card = new Card
{
CardHolderName = "Ahmet Mehmet",
CardNumber = "4355084355084358",
ExpireMonth = "02",
ExpireYear = "20",
SecurityCode = "000"
},
BasketItems = new List
{
new BasketItem
{
Description = "BoyamaKalemSeti",
ProductCode = "7cefdf61-38cd-4b35-b5f0-4c98c5805d41",
Amount = 8750,
VatRatio = 18,
Count = 1,
Url = "http://www.ahmetmarket.com.tr/boyama-kalem-seti"
},
new BasketItem
{
Description = "BoyamaKitabı",
ProductCode = "7cefdf61-38cd-4b35-b5f0-4c98c5805d41",
Amount = 2550,
VatRatio = 18,
Count = 3,
Url = "http://www.ahmetmarket.com.tr/boyama-kitabi"
},
new BasketItem
{
Description = "KargoBedeli",
Amount = 1000,
VatRatio = 18,
Count = 1
}
},
Customer = new Customer
{
Name = "Ahmet",
Surname = "Mehmet",
Email = "ahmetmehmet@ahmetmarket.com.tr",
PhoneNumber = "5337654321",
Code = "7cefdf61-38cd-4b35-b5f0-4c98c5805d41"
},
ShippingAddress = new ShippingAddress
{
Name = "Ahmet Mehmet",
Address = "Kuştepe Mahallesi Mecidiyeköy Yolu Cad. No:12 Trump Towers Kule:2 Kat:11 ŞİŞLİ",
Country = "Türkiye",
CountryCode = "TUR",
City = "İstanbul",
CityCode = "34",
ZipCode = "34580"
},
InvoiceAddress = new InvoiceAddress
{
Name = "Ahmet Mehmet",
Address = "Kuştepe Mahallesi Mecidiyeköy Yolu Cad. No:12 Trump Towers Kule:2 Kat:11 ŞİŞLİ",
Country = "Türkiye",
CountryCode = "TUR",
City = "İstanbul",
CityCode = "34",
ZipCode = "34580"
},
Extras = new List { new Extra { Key = "INT_SPRS_KODU", Value = "spr_123456789" } },
SuccessUrl = _baseUrl + "/ThreedPayment/SuccessfulResult",
FailUrl = _baseUrl + "/ThreedPayment/FailedResult",
Priority = 1,
VisitorId = "12312312",
UserKey = "adasdas2222",
DiscountAmount = 4010,
GiftCheqAmount = 5600,
HashVersion = "1.1"
};
var apiUrl = "https://entgr.hepsipay.com/payment/ThreeDSecureV2";
var createThreedResponse = _paymentProcessor.CreateThreed(createThreedRequest, apiUrl, "123");
return Content(createThreedResponse.HtmlForm);
}
Bölüm 1 : ThreeD Nedir?
ThreeD Servisi Nedir?
ThreeD servisi, 3d satış işlemlerinin gerçekleştirilebileceği servistir.
Bölüm 2 : Servis Alanları
ThreeD Ödeme Servisi
ThreeD, yazılım kullanım akışlarının anlatıldığı bölümde de ifade edildiği gibi bir senkron web servistir ve kullanım akışı buna uygundur.
Servisin Kullanımı
ThreeD işlemi, iki aşamadan oluşur:
- Form post işlemi ile kullanıcı browser’ının 3d doğrulama adresine yönlendirilmesi
- 3d doğrulama ekranından dönen cevaba göre satış işleminin tamamlanması
Initialize ThreeD Adımı
Bu adımda, ödeme parametreleri, kullanıcı browser’ı üzerinden form post işlemi ile Hepsipay ThreeD endpoint’ine gönderilir.
3d işlemlerinde, başarılı ve başarısız dönüş adresleri (SuccessUrl, FailUrl) birbirinden farklı olmalıdır. Initialize ThreeD adımı başarısız olduğunda, işlem sonucu FailUrl adresine döner ve ikinci aşamaya geçilmez. Initialize threed adımı başarılı olduğunda SuccessUrl adresine işlem sonucu encrypt edilmiş olarak döner, bu sonuç Complete ThreeD adımında anlatıldığı gibi satış işleminin tamamlanacağı endpoint’e iletilmelidir.
- Metot: Form POST
- Content-Type: application/x-www-form-urlencoded
Signature Alanı
Signature alanında aşağıdaki alanlar art arda eklenip hash’lenerek gönderilmelidir:
SecretKey + TransactionId + TransactionTime + Amount + Currency + InstallmentCount
Signature alanını hash’lemede kullanılacak algoritma HashVersion alanına göre belirlenir.
- HashVersion alanı 1.0 ise Sha256
- HashVersion alanı 1.1 ise HMac Sha512
Complete ThreeD Adımı
Üye iş yerinin SuccessUrl adresine yönlenen şifreli işlem sonucu (EncryptedThreedResult), 3d satışın tamamlanması için Hepsipay API Complete ThreeD endpoint’ine HTTP POST metotu ile gönderilir. İşlem sonucu, POST isteğine cevap olarak dönülecektir.
- Metot: POST
- Content-Type: application/json
Signature Alanı
Signature alanında aşağıdaki alanlar art arda eklenip hash’lenerek gönderilmelidir:
SecretKey + EncryptedThreedResult
Signature alanını hash’lemede kullanılacak algoritma HashVersion alanına göre belirlenir.
- HashVersion alanı 1.0 ise Sha256
- HashVersion alanı 1.1 ise HMac Sha512
Web Servis Cevabı
Web Servis Cevabı alındığında MessageCode parametresi ile işlem durumu kontrol edilebilir. Ancak işlemlerinizin Güvenliğini sağlayabilmek için MessageCode paremetresi ile birlikte Amount ve Transactionid paremetreleri de kontrol edilmelidir.Bu kontrol ile işlem güvenliği sağlamış olur.
{
"Amount": 12300,
"TransactionType": 0,
"Installment": 1,
"ApiKey": "1ca71cb09c7f4a2188fbddfa90efb481",
"TransactionId": "tx_121345678912345",
"TransactionTime": "1447752023",
"Signature": "8480954d54d94e5f272c53caa69efdcb0b678e837d3997eec42c4dbfa636cdde",
"Currency": "TRY",
"Extras": [ { "Key": "INT_SPRS_KODU", "Value": "spr_123456789" } ],
"Success": true,
"MessageCode": "0000",
"Message": "Başarılı",
"UserMessage": "İşleminiz başarıyla gerçekleştirildi."
}