# MorPOS Developer Portal

&#x20;         MorPOS altyapısı üzerinden uçtan uca ödeme entegrasyonu gerçekleştirebilmeniz için gerekli tüm teknik açıklamaları, örnek istek/yanıt yapıları ve entegrasyon akışlarını içermektedir.&#x20;

> MorPOS Developer Portal (Beta) \
> Bu portal aktif olarak geliştirilmektedir. API’ler üretim ortamında kullanılabilir olmakla birlikte, dokümantasyon ve geliştirici araçları düzenli olarak güncellenmektedir.

```
Base URL PROD: https://sale-gateway.morpara.com
```

```
Base URL Sandbox: https://finagopay-pf-api-gateway.prp.morpara.com
```

***

### Bu Dokümantasyonda Neler Bulacaksınız?

#### [Ödeme İşlemleri](/api-dokumantasyonu/editor)

* [Non-3DS Ödeme](https://docs.morpara.com/pages/i73g4LZQanoLj7XtSO18#id-1.-non-3d-secure-odeme)
* [3D Secure Ödeme](https://docs.morpara.com/pages/i73g4LZQanoLj7XtSO18#id-2.-3d-secure-odeme)
  * [3D Ödeme Başlat](/api-dokumantasyonu/editor/3d-secure-odeme/3d-odeme-baslat)
  * [3D Ödeme Tamamla](/api-dokumantasyonu/editor/3d-secure-odeme/3d-odeme-tamamla)
* [Ödeme Sorgulama](/api-dokumantasyonu/editor/checkpayment)

#### [Entegrasyon Yöntemleri](/api-dokumantasyonu/entegrasyon)

* [Gömülü Ödeme Formu](/api-dokumantasyonu/entegrasyon/embeddedpaymentform)
* [Ortak Ödeme Sayfası](/api-dokumantasyonu/entegrasyon/hostedpaymentpage)

#### [Destekleyici Servisler](#destekleyici-servisler)

* [BIN Kontrol](/api-dokumantasyonu/destekleyiciservisler/bincheck)

#### [İşlem Yönetimi](/api-dokumantasyonu/bincheck)

* [İptal](/api-dokumantasyonu/bincheck/iptal)
* [İade](/api-dokumantasyonu/bincheck/iade)

#### [Geliştirici Araçları / Developer Tools](/api-dokumantasyonu/gelistiriciaraclari)

* [**Postman Collection**:](/api-dokumantasyonu/gelistiriciaraclari/postman) Hazır API koleksiyonu ile hızlı test
* [**Client Libraries** ](/api-dokumantasyonu/gelistiriciaraclari#client-kutuphaneleri)**/ SDK’lar**: PHP, .NET, Java ve diğer diller için örnek kütüphaneler
* [**Açık Kaynak Eklentiler**](/api-dokumantasyonu/gelistiriciaraclari/acik-kaynak-eklentiler): WooCommerce, OpenCart, PrestaShop ve  Magento 2 gibi platformlar için örnek entegrasyon modülleri

***

Geliştirme sürecinizi hızlandırmak amacıyla; tüm uç noktalar (endpoint), zorunlu alanlar, yanıtlama formatları ve örnek **cURL / JSON** kullanım senaryoları her ilgili bölüm altında detaylı biçimde açıklanmıştır. Ayrıca, geliştirici araçları ile test, entegrasyon ve örnek uygulamaları kolayca deneyebilirsiniz.


# Kimlik Doğrulama

&#x20;Bu alan, entegrasyona başlamadan önce gerekli güvenlik ve kimlik doğrulama adımları hakkında temel bilgilere ulaşmanız için hazırlanmıştır.

MorPOS API’ları ile haberleşirken **SHA256 algoritması ile kimlik doğrulama** yapılması zorunludur. Aşağıdaki adımları takip ederek kimlik doğrulama mekanizmasını entegrasyonunuza dahil edebilirsiniz.

```
Base URL PROD: https://sale-gateway.morpara.com
```

```
Base URL Sandbox: https://finagopay-pf-api-gateway.prp.morpara.com
```

***

### 1) Headers

MorPOS Üye İşyeri Paneli > **Key Yönetimi** > **Key Tanıma** ekranına erişerek\
`ClientId` ve `ClientSecret` bilgilerinizi temin ediniz.

Bu bilgiler, yapacağınız tüm API çağrılarının **header** bilgileri içerisinde gönderilmelidir.

***

### 2) Request Sign

Herhangi bir API çağrısında, request gövdesi ile birlikte gönderilmesi gereken **sign** parametresi zorunludur.

Sign değeri şu şekilde üretilir:

* Request body’deki alanlar alınır
* Alt alta yazmak yerine **string olarak birleştirilir**
* Sonuna API Key eklenir
* SHA256 ile şifrelenir
* Base64 formatına çevrilip büyük harfe dönüştürülür
* Üretilen bu değer `sign` alanında API isteği ile gönderilir

```javascript
var CryptoJS = require("crypto-js");

let now = new Date();
let xTimestamp =
    now.getFullYear().toString() +
    String(now.getMonth() + 1).padStart(2, '0') +
    String(now.getDate()).padStart(2, '0') +
    String(now.getHours()).padStart(2, '0') +
    String(now.getMinutes()).padStart(2, '0') +
    String(now.getSeconds()).padStart(2, '0');

pm.environment.set("xTimestamp", xTimestamp);

const MrpApikey = "api_key_bilginiz";
const clientSecretKey = "client_secret_key_bilginiz";
const clientId = "client_id_bilginiz";
const MrpMerchantId = "merchant_id_bilginiz";

function generateRandomId(prefix, length) {
    const randomPart = Array(length)
        .fill(0)
        .map(() => Math.floor(Math.random() * 10))
        .join("");
    return `${prefix}${randomPart}`;
}

/*
ConversationId Kuralları

Alan zorunludur; null veya boş değer kabul edilmez.
Değer uzunluğu tam olarak 20 karakter olmalıdır.
Yalnızca İngilizce alfabetik karakterler (A-Z, a-z) ve rakamsal karakterler (0-9) kullanılabilir.
Türkçe karakter (ç, ğ, ı, İ, ö, ş, ü) kullanımına izin verilmez.
*/

const conversationId = generateRandomId("MSD", 17); 
const conversationIdPayment = generateRandomId("YSD", 17);


console.log("Client Secret",clientSecretKey);

const decodedClientSecret = CryptoJS.enc.Base64.parse(clientSecretKey).toString(CryptoJS.enc.Utf8);

console.log("Decoded Client Secret (UTF-8): ", decodedClientSecret);


const combined = decodedClientSecret + xTimestamp;
console.log("Combined Value (Decoded Client Secret + X-Timestamp): ", combined);


const sha256Hash = CryptoJS.SHA256(combined);
console.log("SHA256 Hash (Raw): ", sha256Hash.toString(CryptoJS.enc.Hex)); // 


const utf8Hash = CryptoJS.enc.Utf8.parse(sha256Hash.toString(CryptoJS.enc.Hex));
const finalEncoded = CryptoJS.enc.Base64.stringify(utf8Hash);
console.log("Final Encoded Hash (Base64, UTF-8): ", finalEncoded);


pm.variables.set("EncodedHash", finalEncoded);
pm.variables.set("MpConversationId", conversationId);
pm.variables.set("MpConversationIdPayment", conversationIdPayment);

let requestBodyDump = JSON.parse(pm.request.body);


const requestBody = {
...
};

function isNullOrWhiteSpace(str) {
    return !str || str.trim().length === 0;
}

function calculateDynamicHash(requestBody) {
    const concatenatedString = Object.values(requestBody)
        .map((value) => `${value}`) 
        .join(";"); 

    if (isNullOrWhiteSpace(concatenatedString))
        return false;

    const hash = CryptoJS.enc.Base64.stringify(CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(concatenatedString))).toUpperCase();

    return hash;
}

const hashResult = calculateDynamicHash(requestBody);
    pm.variables.set("MpSign", hashResult);



```


# Sandbox / Test Ortamı

Test ortamı (Sandbox), canlı sistemleri etkilemeden API entegrasyonlarınızı denemenizi sağlar.

* Tüm servisler (Non-3DS, 3D, Ödeme Sorgulama, BIN Kontrol, İptal, İade) Sandbox ortamında çalıştırılabilir.
* Örnek verilerle işlem testi yapabilir, request/response davranışlarını inceleyebilirsiniz.
* Gerçek ödemeler veya finansal hareketler oluşmaz, sistem tamamen simülasyon modunda çalışır.

> ⚡ Test ortamı, canlı sistemlerinizde oluşabilecek hataları önceden tespit etmenize yardımcı olur.<br>
>
> ```
> Base URL Sandbox: https://finagopay-pf-api-gateway.prp.morpara.com
> ```

***

### Sandbox Hesabı Oluşturma

Test ortamı için bir hesap oluşturmak veya API erişimi almak için lütfen aşağıdaki e-posta adresi üzerinden iletişime geçin:

**📧 <entegrasyon@morpara.com>**

> Başvuru sırasında aşağıdaki bilgileri paylaşmanız işleri hızlandıracaktır:
>
> * Firma adı
> * Entegrasyon amacı
> * İletişim bilgileri

Sandbox hesabınız aktive edildikten sonra, size **test clientId, clientSecret ve environment bilgileri** sağlanacaktır.


# Test Kartları

Bu sayfada yer alan kartlar, **API entegrasyonlarını ve ödeme akışlarını güvenli bir şekilde test etmek** için hazırlanmıştır.\
Test kartları sayesinde canlı sistemleri etkilemeden; Non‑3DS ve 3D Secure ödeme senaryolarını deneyebilir, doğrulama ve hata akışlarını kontrol edebilirsiniz.

* Gerçek finansal işlem gerçekleşmez, sadece simülasyon amaçlıdır.
* 3D Secure işlemlerde doğrulama ekranında ilgili **3D şifresi** girilmelidir.
* Test senaryoları tamamlanmadan canlı ortama geçilmesi önerilmez.

***

### 💳 Test Kartları

| Kart Numarası    | Son Kullanma Tarihi | CVV | 3D Şifresi | Not                       |
| ---------------- | ------------------- | --- | ---------- | ------------------------- |
| 5246776356903508 | 12/2030             | 792 | 123456     | 3D Secure Test Kart       |
| 4691810771946876 | 11/2048             | 858 | 123456     | 3D Secure Test Kart       |
| 4508034508034509 | 12/2036             | 000 | 123456     | 3D Secure Test Kart       |
| 5269737320050521 | 12/2030             | 000 | 123456     | 3D Secure Test Kart       |
| 5413330057004112 | 12/2026             | 312 | -          | Non‑3DS / Genel Test Kart |

***

### Önemli Notlar

* Tüm kartlar **yalnızca test ortamında** geçerlidir.
* 3D Secure işlemlerde doğrulama ekranında tüm kartların **3D Şifresi: `123456`** olarak girilmelidir
* Canlı ortamda test kartları çalışmaz.
* Gerçek kart bilgileri dokümantasyonda paylaşılmaz.


# Hata Yönetimi

Bu sayfada, API servislerinden dönebilecek hata kodları ve açıklamaları listelenmiştir.\
Hata kodları, ödeme, iade, iptal ve sorgulama gibi tüm servisler için ortak kullanılmaktadır.\
Entegrasyon sırasında karşılaşılan hataları anlamak ve doğru aksiyon almak için bu tablo referans alınabilir.

***

### ⚠️Hata Kodları

| Hata Kodu | Hata Mesajı                                                                                                                                  | Hata Mesajı                                                                                                                                                  |
| --------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| B0000     | Approved                                                                                                                                     | Onaylandı                                                                                                                                                    |
| B0001     | Refer to card issuer                                                                                                                         | Kartı veren banka ile iletişime geçiniz.                                                                                                                     |
| B0002     | Refer to card issuer's special conditions                                                                                                    | Kategori yok.                                                                                                                                                |
| B0003     | Invalid merchant                                                                                                                             | Üye kodu hatalı/tanımsız.                                                                                                                                    |
| B0004     | Capture card                                                                                                                                 | Karte el koyunuz.                                                                                                                                            |
| B0005     | Do not honor                                                                                                                                 | Red                                                                                                                                                          |
| B0006     | Error                                                                                                                                        | Hatalı işlem                                                                                                                                                 |
| B0007     | Pick-up card, special condition                                                                                                              | Karta el koyunuz.                                                                                                                                            |
| B0008     | Honor with ID                                                                                                                                | Kimlik kontrolü                                                                                                                                              |
| B0009     | Try Again                                                                                                                                    | Tekrar deneyin.                                                                                                                                              |
| B0010     | Partial Approval                                                                                                                             | İşlem kısmen onaylandı.                                                                                                                                      |
| B0011     | Approved (VIP)                                                                                                                               | Onaylandı VIP                                                                                                                                                |
| B0012     | Invalid transaction                                                                                                                          | Hatalı işlem                                                                                                                                                 |
| B0013     | Invalid amount                                                                                                                               | Hatalı miktar                                                                                                                                                |
| B0014     | Invalid card number                                                                                                                          | Hatalı kart no                                                                                                                                               |
| B0015     | Invalid issuer                                                                                                                               | Müşteri yok                                                                                                                                                  |
| B0016     | Approved, update track 3                                                                                                                     | İşlem onaylandı, Track 3 verisi güncellenecek.                                                                                                               |
| B0017     | Customer cancellation                                                                                                                        | Müşteri iptali.                                                                                                                                              |
| B0018     | Customer dispute                                                                                                                             | Müşteri itirazı.                                                                                                                                             |
| B0019     | Re-enter transaction                                                                                                                         | İşlemi tekrar gir.                                                                                                                                           |
| B0020     | Invalid response                                                                                                                             | Geçersiz yanıt.                                                                                                                                              |
| B0021     | No action taken                                                                                                                              | İşlem yapılmadı.                                                                                                                                             |
| B0022     | Suspected malfunction                                                                                                                        | Arıza şüphesi.                                                                                                                                               |
| B0023     | Unacceptable transaction fee                                                                                                                 | İşlem ücreti uygun değil.                                                                                                                                    |
| B0024     | File update not supported by receiver                                                                                                        | Dosya güncellemesi alıcı tarafından desteklenmiyor.                                                                                                          |
| B0025     | Unable to locate record on file                                                                                                              | Dosyada kayıt bulunamadı.                                                                                                                                    |
| B0026     | Duplicate file update record, old record replaced                                                                                            | Dosya güncelleme kaydı yinelendi, eski kayıt değiştirildi.                                                                                                   |
| B0027     | File update field edit error                                                                                                                 | Dosya güncelleme alanı düzenleme hatası.                                                                                                                     |
| B0028     | Original is declined                                                                                                                         | Orijinal teklif reddedildi.                                                                                                                                  |
| B0029     | Original not found                                                                                                                           | Orijinal teklif bulunamadı.                                                                                                                                  |
| B0030     | Format error                                                                                                                                 | Format hatası.                                                                                                                                               |
| B0031     | Bank not supported by switch                                                                                                                 | Banka switch tarafından desteklenmiyor.                                                                                                                      |
| B0032     | Completed partially                                                                                                                          | Kısmen tamamlandı.                                                                                                                                           |
| B0033     | Expired card - pick up                                                                                                                       | Süresi dolmuş kart.                                                                                                                                          |
| B0034     | Suspected fraud - pick up                                                                                                                    | Dolandırıcılık şüphesi.                                                                                                                                      |
| B0035     | Card acceptor contact acquirer - pick up                                                                                                     | Kart kabul eden, bankayı arayın.                                                                                                                             |
| B0036     | Restricted card - pick up                                                                                                                    | Kısıtlı kart – Kartı alın.                                                                                                                                   |
| B0037     | Card acceptor call acquirer security - pick up                                                                                               | Kart kabul eden, banka güvenliğini arayın – Kartı alın.                                                                                                      |
| B0038     | Allowable PIN tries exceeded                                                                                                                 | PIN deneme hakkı doldu.                                                                                                                                      |
| B0039     | No credit account                                                                                                                            | Kredi hesabı yok.                                                                                                                                            |
| B0041     | Lost card                                                                                                                                    | Kayıp kart.                                                                                                                                                  |
| B0042     | No universal account                                                                                                                         | Evrensel hesap yok.                                                                                                                                          |
| B0043     | Stolen card                                                                                                                                  | Çalıntı kart.                                                                                                                                                |
| B0044     | No investment account                                                                                                                        | Yatırım hesabı yok.                                                                                                                                          |
| B0045     | Reserved for ISO use                                                                                                                         | ISO kullanımı için ayrılmıştır.                                                                                                                              |
| B0046     | Reserved for ISO use                                                                                                                         | ISO kullanımı için ayrılmıştır.                                                                                                                              |
| B0047     | Reserved for ISO use                                                                                                                         | ISO kullanımı için ayrılmıştır.                                                                                                                              |
| B0048     | Reserved for ISO use                                                                                                                         | ISO kullanımı için ayrılmıştır.                                                                                                                              |
| B0049     | Reserved for ISO use                                                                                                                         | ISO kullanımı için ayrılmıştır.                                                                                                                              |
| B0050     | Reserved for ISO use                                                                                                                         | ISO kullanımı için ayrılmıştır.                                                                                                                              |
| B0051     | Insufficient funds/over credit limit                                                                                                         | Yetersiz hesap.                                                                                                                                              |
| B0052     | No checking account                                                                                                                          | Hesap noyu kontrol edin.                                                                                                                                     |
| B0053     | No savings account                                                                                                                           | Hesap yok.                                                                                                                                                   |
| B0054     | Expired card                                                                                                                                 | Süresi geçmiş kart.                                                                                                                                          |
| B0055     | Invalid PIN                                                                                                                                  | Şifre hatalı.                                                                                                                                                |
| B0056     | No card record                                                                                                                               | Kart kaydı yok.                                                                                                                                              |
| B0057     | Transaction not permitted to issuer/cardholder                                                                                               | Kart sahibine/kartı veren kuruluşa işlem izni verilmedi.                                                                                                     |
| B0058     | Transaction not permitted to acquirer/terminal                                                                                               | Alıcı/terminal için işleme izin verilmiyor.                                                                                                                  |
| B0059     | Suspected fraud                                                                                                                              | Dolandırıcılık şüphesi.                                                                                                                                      |
| B0060     | Card acceptor contact acquirer                                                                                                               | Kart kabul eden kuruluş, ödeme işlemcisiyle iletişime geçmektedir.                                                                                           |
| B0061     | Exceeds withdrawal amount limit                                                                                                              | Para çekme tutarı limiti aşıldı.                                                                                                                             |
| B0062     | Restricted card                                                                                                                              | Yasaklanmış kart.                                                                                                                                            |
| B0063     | Security violation                                                                                                                           | Güvenlik ihlali.                                                                                                                                             |
| B0064     | Original amount incorrect                                                                                                                    | Orijinal tutar yanlış.                                                                                                                                       |
| B0065     | Exceeds withdrawal count limit OR Identity Check Soft-Decline of EMV 3DS Authentication (merchant should resubmit authentication with 3DSv1) | Para çekme işlem adedi limitini aşmaktadır VEYA EMV 3DS kimlik doğrulamasında yumuşak ret. (üye işyeri, 3DSv1 ile kimlik doğrulamayı yeniden göndermelidir). |
| B0066     | Card acceptor call acquirer's security department                                                                                            | Kart kabul eden taraf, üye işyeri bankasının güvenlik departmanını aramalıdır.                                                                               |
| B0067     | Hard capture (requires that card be picked up at ATM)                                                                                        | Zorla el koyma (kartın ATM’de alıkonulmasını gerektirir).                                                                                                    |
| B0068     | Response received too late                                                                                                                   | Yanıt çok geç alındı.                                                                                                                                        |
| B0069     | Reserved for ISO use                                                                                                                         | ISO kullanımı için ayrılmıştır.                                                                                                                              |
| B0070     | Contact Card Issuer                                                                                                                          | Kartı veren banka ile iletişime geçiniz.                                                                                                                     |
| B0071     | PIN Not Changed                                                                                                                              | PIN değiştirilmedi.                                                                                                                                          |
| B0072     | Reserved for ISO use                                                                                                                         | ISO kullanımı için ayrılmıştır.                                                                                                                              |
| B0073     | Reserved for ISO use                                                                                                                         | ISO kullanımı için ayrılmıştır.                                                                                                                              |
| B0074     | Reserved for ISO use                                                                                                                         | ISO kullanımı için ayrılmıştır.                                                                                                                              |
| B0075     | Allowable number of PIN tries exceeded                                                                                                       | İzin verilen PIN deneme sayısı aşıldı.                                                                                                                       |
| B0076     | Key synchronisation error                                                                                                                    | Anahtar senkronizasyon hatası.                                                                                                                               |
| B0077     | Decline of Request – No script available                                                                                                     | Talep reddedildi-Tanımlı işlem akışı yok.                                                                                                                    |
| B0078     | Unsafe PIN                                                                                                                                   | Güvensiz PIN.                                                                                                                                                |
| B0079     | ARQC failed                                                                                                                                  | ARQC doğrulanmadı.                                                                                                                                           |
| B0080     | Reserved for private use                                                                                                                     | Özel kullanım için ayrılmıştır.                                                                                                                              |
| B0081     | Domestic Debit Transaction Not Allowed (Regional use only)                                                                                   | Yurt içi debit işlemi yapılamaz (yalnızca bölgesel kullanım).                                                                                                |
| B0082     | Policy (Mastercard use only)                                                                                                                 | Politika (yalnızca Mastercard kullanımına özeldir).                                                                                                          |
| B0083     | Fraud/Security (Mastercard use only)                                                                                                         | Dolandırıcılık/Güvenlik (yalnızca Mastercard kullanımına özeldir).                                                                                           |
| B0084     | Invalid Authorization Life Cycle                                                                                                             | Geçersiz yetkilendirme yaşam döngüsü.                                                                                                                        |
| B0085     | Approval of request (for PIN management messages)                                                                                            | Talep onaylandı (PIN yönetimi mesajları için).                                                                                                               |
| B0086     | PIN Validation not possible                                                                                                                  | PIN doğrulaması yapılamıyor.                                                                                                                                 |
| B0087     | Purchase Amount Only, No Cash Back Allowed                                                                                                   | Yalnızca alışveriş tutarı geçerlidir, nakit çekim yapılamaz.                                                                                                 |
| B0088     | Cryptographic failure                                                                                                                        | Kriptografik hata.                                                                                                                                           |
| B0089     | Unacceptable PIN—Transaction Declined—Retry                                                                                                  | PIN kabul edilemez — İşlem reddedildi — Tekrar deneyin.                                                                                                      |
| B0090     | Cutoff is in process (switch ending a day's business and starting the next. Transaction can be sent again in a few minutes)                  | Gün sonu (cut-off) işlemi devam ediyor (switch gün sonunu kapatıp yeni günü başlatıyor. İşlem birkaç dakika sonra tekrar gönderilebilir).                    |
| B0091     | Authorization System or issuer system inoperative                                                                                            | Yetkilendirme sistemi veya kartı çıkaran banka sistemi çalışmıyor.                                                                                           |
| B0092     | Unable to route transaction                                                                                                                  | İşlem yönlendirilemedi.                                                                                                                                      |
| B0093     | Transaction cannot be completed. Violation of law                                                                                            | İşlem tamamlanamaz. Yasal ihlal.                                                                                                                             |
| B0095     | Reconcile error                                                                                                                              | Hesap eşleşme hatası.                                                                                                                                        |
| B0096     | System error                                                                                                                                 | Sistem hatası.                                                                                                                                               |
| B0098     | Duplicate transmission detected                                                                                                              | Aynı işlem birden fazla gönderildi.                                                                                                                          |
| B0100     | PaymentID is not found                                                                                                                       | Ödeme kimliği bulunamadı.                                                                                                                                    |
| B0101     | PaymentID is invalid                                                                                                                         | Ödeme kimliği geçersiz.                                                                                                                                      |
| B9999     | Bank Validation Error                                                                                                                        | Banka doğrulama hatası.                                                                                                                                      |

> ⚠️ Not: Hata kodları servis ve banka spesifik olabilir. Karşılaşılan hata kodunu doğru şekilde yönetmek için bu tablo referans alınmalıdır.


# Ödemeler

Bu bölüm, sistem üzerinden gerçekleştirilen tüm ödeme işlemlerine ait API uç noktalarını kapsar. Ödemeler; **Non-3D Secure**, **3D Secure** ve **Ödeme Sorgulama** olmak üzere üç ana başlık altında ele alınır.

Bu doküman, yalnızca **Ödemeler** ana sayfası için genel bir çerçeve sunar. Her bir ödeme türüne ait detaylı teknik bilgiler kendi alt sayfalarında yer almaktadır.

***

### Ödeme Akışına Genel Bakış

Ödeme işlemleri aşağıdaki temel adımlarla ilerler:

1. Ödeme talebi oluşturulur
2. Gerekli doğrulamalar yapılır (kart, tutar, yetkilendirme vb.)
3. Banka / kart ağına iletilir
4. Sonuç alınır ve işlem durumu oluşturulur
5. İşlem sorgulanabilir hale gelir

> Not: 3D Secure kullanılan işlemlerde kullanıcı, bankanın doğrulama ekranına yönlendirilir.

***

### Ödeme Türleri

#### 1. Non-3D Secure Ödeme

3D Secure doğrulaması olmadan, kart bilgileri kullanılarak doğrudan gerçekleştirilen ödeme türüdür.

**Kullanım senaryoları:**

* Abonelik / tekrar eden ödemeler
* Güvenli kart saklama altyapıları
* Hızlı ödeme gerektiren akışlar

➡️ Detaylı teknik entegrasyon için: **Non-3D Secure Ödeme** sayfasına bakınız.

***

#### 2. 3D Secure Ödeme

Kart sahibinin, bankası tarafından ek bir doğrulama adımına tabi tutulduğu güvenli ödeme yöntemidir.

**Öne çıkan özellikler:**

* Kart sahibinin SMS / mobil uygulama ile doğrulanması
* Fraud riskinin azaltılması
* Yasal ve regülasyonlara uyum

➡️ Detaylı teknik entegrasyon için: **3D Secure Ödeme** sayfasına bakınız.

***

#### 3. Ödeme Sorgulama

Gerçekleştirilen bir ödemenin güncel durumunu öğrenmek için kullanılır.

**Sorgulanabilecek bilgiler:**

* Ödeme durumu (başarılı / başarısız / beklemede)
* İşlem tutarı ve para birimi
* Banka referans numaraları
* Oluşturulma ve güncellenme tarihleri

➡️ Detaylı teknik entegrasyon için: **Ödeme Sorgulama** sayfasına bakınız.

***

### Ortak Kavramlar

Tüm ödeme işlemlerinde aşağıdaki kavramlar ortaktır:

* **orderId**: İşleme ait benzersiz sipariş numarası
* **transactionId**: Sistem tarafından üretilen işlem kimliği
* **amount**: İşlem tutarı
* **currency**: Para birimi (örn: TRY)
* **status**: İşlemin güncel durumu

***

### Güvenlik ve Entegrasyon Notları

* Tüm istekler HTTPS üzerinden yapılmalıdır
* API anahtarları gizli tutulmalıdır
* Kart bilgileri kesinlikle merchant sunucularında saklanmamalıdır
* PCI-DSS uyumluluğu entegrasyon sorumluluğu kapsamında değerlendirilmelidir

***

Bir sonraki adım olarak, ödeme türlerinden birini seçerek ilgili teknik detay sayfasına geçebilirsiniz.


# Non-3DS Ödeme

Üye işyerlerinin 3D doğrulama olmaksızın ödeme talebi göndermesine olanak tanır.

### Endpoint

```http
POST /v1/Payment/DoPayment
```

***

### Headers

| Anahtar        | Tür    | Açıklama                                 | Örnek                   |
| -------------- | ------ | ---------------------------------------- | ----------------------- |
| x-ClientID     | String | API istemcisi için benzersiz tanımlayıcı | sizin-istemci-id’niz    |
| x-ClientSecret | String | API istemcisi için gizli anahtar         | sizin-gizli-anahtarınız |
| x-GrantType    | String | Kullanılan erişim token türü             | client\_credentials     |
| x-Scope        | String | API kapsamı                              | pf\_write, pf\_read     |
| x-Timestamp    | String | İstek zaman damgası (ISO 8601)           | 2024-12-17T12:34:56Z    |

***

### Request Body

| Alan                                | Zorunlu | Tür     | Açıklama                                   | Örnek                                        |
| ----------------------------------- | ------- | ------- | ------------------------------------------ | -------------------------------------------- |
| merchantId                          | ✅       | String  | Üye işyeri için benzersiz kimlik           | 100000000000004                              |
| returnUrl                           | ✅       | URL     | Başarılı işlem sonrası yönlendirme URL     | <https://www.ornek.com/basari>               |
| failUrl                             | ✅       | URL     | Başarısız işlem sonrası yönlendirme URL    | <https://www.ornek.com/hata>                 |
| paymentMethod                       | ✅       | String  | Ödeme yöntemi türü                         | CARDPAYMENT                                  |
| language                            | ✅       | String  | İşlem dili                                 | tr                                           |
| conversationId                      | ✅       | String  | Takip için benzersiz kimlik                | MSD2024030500000000115                       |
| sign                                | ✅       | String  | İsteğin dijital imzası                     | AAVWY3RZKJVVCEAD8LDQB4KWJL4QX/IQQRGQ3XIWAAG= |
| paymentInstrumentType               | ✅       | String  | Ödeme aracı türü                           | CARD                                         |
| cardDetails.cardNo                  | ✅       | String  | Kart numarası                              | 4508034508034581                             |
| cardDetails.expDate                 | ✅       | String  | Kart son kullanma tarihi (AAYY formatında) | 1226                                         |
| cardDetails.cvv                     | ✅       | String  | Kart güvenlik kodu                         | 000                                          |
| transactionDetails.transactionType  | ✅       | String  | İşlem türü                                 | SALE                                         |
| transactionDetails.installmentCount | ✅       | Integer | Taksit sayısı                              | 1                                            |
| transactionDetails.amount           | ✅       | Float   | İşlem tutarı                               | 60.00                                        |
| transactionDetails.currencyCode     | ✅       | Integer | Para birimi kodu (örneğin Türk Lirası=949) | 949                                          |
| transactionDetails.vftFlag          | ❌       | Boolean | VFT’nin etkin olup olmadığı (opsiyonel)    | false                                        |
| cardHolderInfo.cardHolderName       | ✅       | String  | Kart sahibinin adı                         | Selim Dil                                    |
| cardHolderInfo.buyerGsm             | ✅       | String  | Alıcının GSM numarası                      | 55555555                                     |
| extraParameter.pfSubMerchantId      | ❌       | String  | Alt üye işyeri kimliği (varsa)             | 12345                                        |

#### Örnek Request

```json
{
  "merchantId": "100000000000004",
  "returnUrl": "https://www.ornek.com/basari",
  "failUrl": "https://www.ornek.com/hata",
  "paymentMethod": "CARDPAYMENT",
  "language": "tr",
  "conversationId": "MSD2024030500000000115",
  "sign": "AAVWY3RZKJVVCEAD8LDQB4KWJL4QX/IQQRGQ3XIWAAG=",
  "paymentInstrumentType": "CARD",
  "cardDetails": {
    "cardNo": "4508034508034581",
    "expDate": "1226",
    "cvv": "000"
  },
  "transactionDetails": {
    "transactionType": "SALE",
    "installmentCount": 1,
    "amount": 60.00,
    "currencyCode": 949,
    "vftFlag": false
  },
  "cardHolderInfo": {
    "cardHolderName": "Selim Dil",
    "buyerGsm": "55555555"
  },
  "extraParameter": {
    "pfSubMerchantId": "12345"
  }
}
```

#### Örnek Response

```json
{
  "code": "B0000",
  "message": "Onaylandı",
  "resultCode": "B0000",
  "resultDescription": "Onaylandı",
  "responseDate": "05/02/2025 15:09:09",
  "conversationId": "YBS11108699401304534",
  "orderId": "5000000045202502030041",
  "paymentId": "5000000045202502030041",
  "bankUniqueReferenceNumber": "503615446559",
  "transactionDate": "05/02/2025 15:09:09",
  "currency": "949",
  "authCode": "655050",
  "paymentInstrumentType": "CARDPAYMENT",
  "sign": "AAVWY3RZKJVVCEAD8LDQB4KWJL4QX/IQQRGQ3XIWAAG=",
  "instrumentDetail": {
    "maskedCardNumber": "524677******3508",
    "cardType": "CARD"
  },
  "paymentInfo": {
    "installmentCount": 1,
    "payFacCommissionRate": 1.00,
    "amount": 25.00,
    "payFacCommissionAmount": 0.2500
  },
  "okUrl": null,
  "failUrl": null
}

```


# 3D Secure Ödeme

3D Ödeme (3D Secure), kartlı online ödemelerde kart sahibinin banka tarafından doğrulanmasını sağlayan, iki aşamalı bir ödeme sürecidir.\
Bu yöntemle yapılan işlemlerde ödeme, bankanın 3D Secure altyapısı üzerinden kullanıcı doğrulaması alındıktan sonra kesinleştirilir.

3D Ödeme süreci **yalnızca ödeme başlatma adımıyla tamamlanmaz**.\
Kullanıcının bankadaki doğrulama adımını tamamlamasının ardından, işlem sonucunun ayrıca doğrulanarak **ödemenin başarılı veya başarısız olarak sonlandırılması gerekir**.

***

### 3D Ödeme Süreci

3D Ödeme aşağıdaki iki ana adımdan oluşur:

1. **3D Ödeme Başlatma (Init3d)**
2. **3D Ödeme Tamamlama (Auth3d)**

Her iki adımın da eksiksiz şekilde uygulanması gerekmektedir.

***

### 1. 3D Ödeme Başlatma (Init3d)

Bu adımda üye işyeri, kart bilgileri ve işlem detayları ile birlikte 3D ödeme başlatma isteği gönderir.

* API, bankaya yönlendirme için **Base64 encoded 3D içeriği** döner
* Bu içerik decode edilerek kullanıcı tarayıcısında render edilir
* Kullanıcı bankanın 3D Secure doğrulama ekranına yönlendirilir

Bu aşamada ödeme **henüz tamamlanmış sayılmaz**.

***

### 3D Doğrulama ve Kullanıcı Aksiyonu

Kullanıcı, bankanın 3D Secure ekranında:

* SMS / mobil uygulama / banka doğrulaması gibi yöntemlerle
* İşlemi onaylar veya reddeder

Bu aksiyon bankanın altyapısında gerçekleşir.

***

### 2. 3D Ödeme Tamamlama (Auth3d)

Kullanıcının 3D doğrulama adımını tamamlamasının ardından banka:

* İşlem sonucunu
* Başarılı veya başarısız durum bilgilerini

üye işyerinin **Init3d adımında tanımladığı `returnUrl` veya `failUrl`** adresine **Request** olarak iletir.

Üye işyeri bu gelen Request içeriğini kullanarak:

* **Auth3d endpoint’ine** son bir çağrı yapar
* İşlemi sistemsel olarak **başarılı veya başarısız** şekilde kesinleştirir

Bu adım tamamlanmadan ödeme süreci kapanmış sayılmaz.

***

### Sonuç Bildirimi ve Zamanlama

* Bankadan dönüş genellikle **kullanıcı aksiyonuna bağlı olarak \~1 dakika içerisinde** gerçekleşir
* Return / Fail URL’e gelen veriler doğrulanmalı ve Auth3d çağrısında kullanılmalıdır
* Nihai ödeme sonucu Auth3d response’u ile belirlenir

***

### İlgili Endpoint’ler

3D Ödeme sürecinde kullanılan endpoint’ler:

* **3D Ödeme Başlatma:** `POST /v1/Payment/Init3d`
* **3D Ödeme Tamamlama:** `POST /v1/Payment/Auth3d`

Bu endpoint’lere ait request ve response detayları aşağıdaki bölümlerde açıklanmaktadır.


# 3D Ödeme Başlat

3D Ödeme Başlatma adımı, kartlı bir ödemenin **3D Güvenli doğrulama sürecine sokulmasını** sağlar.

Bu çağrı sonucunda API tarafından bankaya yönlendirme için gerekli olan **Base64 encoded 3D içerik** döner.\
Üye işyeri bu içeriği decode ederek son kullanıcıyı bankanın 3D Güvenli doğrulama ekranına yönlendirmelidir.

> ⚠️ Bu adımda ödeme **henüz tamamlanmaz**.\
> Kullanıcının bankadaki doğrulama işlemini tamamlamasından sonra **3D Ödeme Tamamlama (Auth3d)** adımı çağrılmalıdır.

***

### Endpoint

```http
POST /v1/Payment/Init3d
```

***

### Headers

| Anahtar        | Tür    | Açıklama                                 | Örnek                      |
| -------------- | ------ | ---------------------------------------- | -------------------------- |
| x-ClientID     | String | API istemcisi için benzersiz tanımlayıcı | sizin-istemci-id'niz       |
| x-ClientSecret | String | API istemcisi için gizli anahtar         | sizin-gizli-anahtarınız    |
| x-GrantType    | String | Kullanılan erişim tokeni türü            | istemci\_kimlik\_bilgileri |
| x-Scope        | String | API kapsamı                              | pf\_write, pf\_read        |
| x-Timestamp    | String | İstek zaman damgası                      | 2024-12-17T12:34:56Z       |

***

### Request Body

| Alan                                | Zorunlu | Tür          | Açıklama                                    | Örnek                          |
| ----------------------------------- | ------- | ------------ | ------------------------------------------- | ------------------------------ |
| merchantId                          | ✅       | Integer      | Üye işyeri için benzersiz kimlik            | 100000000000004                |
| returnUrl                           | ✅       | String (URL) | Başarılı doğrulama sonrası yönlendirme URL  | <https://www.ornek.com/basari> |
| failUrl                             | ✅       | String (URL) | Başarısız doğrulama sonrası yönlendirme URL | <https://www.ornek.com/hata>   |
| paymentMethod                       | ✅       | String       | Ödeme yöntemi                               | CARDPAYMENT                    |
| language                            | ✅       | String       | İşlem dili                                  | tr                             |
| conversationId                      | ✅       | String       | İşlem takip numarası                        | MSD2024030500000000115         |
| sign                                | ✅       | String       | İsteğin doğrulanması için dijital imza      | AAVWY3RZKJVVCEAD8LDQB4K        |
| paymentInstrumentType               | ✅       | String       | Ödeme aracı türü                            | CARD                           |
| cardDetails.cardNo                  | ✅       | String       | Kart numarası                               | 4508034508034581               |
| cardDetails.expDate                 | ✅       | String       | Son kullanma tarihi (AAYY)                  | 1226                           |
| cardDetails.cvv                     | ✅       | String       | Kart güvenlik kodu                          | 000                            |
| transactionDetails.transactionType  | ✅       | String       | İşlem türü                                  | SALE                           |
| transactionDetails.installmentCount | ✅       | Integer      | Taksit sayısı                               | 1                              |
| transactionDetails.amount           | ✅       | Float        | İşlem tutarı                                | 60.00                          |
| transactionDetails.currencyCode     | ✅       | Integer      | Para birimi kodu (ISO 4217)                 | 949                            |
| transactionDetails.vftFlag          | ❌       | Boolean      | VFT’nin etkin olup olmadığını gösterir      | false                          |
| cardHolderInfo.cardHolderName       | ✅       | String       | Kart sahibinin adı                          | Selim Dil                      |
| cardHolderInfo.buyerGsm             | ✅       | String       | Alıcının GSM numarası                       | 55555555                       |
| extraParameter.pfSubMerchantId      | ❌       | String       | Alt üye işyeri kimliği                      | 12345                          |

### Response Body

Bu servis **Base64 encoded 3D içerik** döner.\
Dönen veri decode edilerek kullanıcı tarayıcısında render edilmelidir.

#### Örnek Request

```http
POST /v1/Payment/Init3d
Content-Type: application/json
x-ClientID: sizin-istemci-id'niz
x-ClientSecret: sizin-gizli-anahtarınız
x-GrantType: istemci_kimlik_bilgileri
x-Scope: pf_write, pf_read
x-Timestamp: 2024-12-17T12:34:56Z
```

```json
{
  "merchantId": 100000000000004,
  "returnUrl": "https://www.ornek.com/basari",
  "failUrl": "https://www.ornek.com/hata",
  "paymentMethod": "CARDPAYMENT",
  "language": "tr",
  "conversationId": "MSD2024030500000000115",
  "sign": "AAVWY3RZKJVVCEAD8LDQB4K...",
  "paymentInstrumentType": "CARD",
  "cardDetails": {
    "cardNo": "4508034508034581",
    "expDate": "1226",
    "cvv": "000"
  },
  "transactionDetails": {
    "transactionType": "SALE",
    "installmentCount": 1,
    "amount": 60.00,
    "currencyCode": 949,
    "vftFlag": false
  },
  "cardHolderInfo": {
    "cardHolderName": "Selim Dil",
    "buyerGsm": "55555555"
  },
  "extraParameter": {
    "pfSubMerchantId": "12345"
  }
}

```

#### Örnek Response

```json
{
  "threeDSecureContent": "PGh0bWw+Li4uPC9odG1sPg=="
}
```

> `threeDSecureContent` alanı **Base64 decode edilerek** kullanıcıya gösterilmelidir.


# 3D Ödeme Tamamla

3D Ödeme Tamamlama adımı, **3D Secure doğrulaması tamamlanan** bir ödemenin sistemsel olarak **başarılı veya başarısız şekilde kesinleştirilmesini** sağlar.

Kullanıcının bankanın 3D Secure ekranında gerçekleştirdiği aksiyonun ardından, banka tarafından işlem sonucu **Init3d adımında tanımlanan `returnUrl` veya `failUrl`** adresine **HTTP Request** olarak iletilir.

Üye işyeri, bu URL’e gelen Request içeriğini kullanarak **Auth3d** servisine çağrı yapmalı ve ödeme sürecini sonlandırmalıdır.

> ⚠️ Bu adım çağrılmadan 3D ödeme **tamamlanmış sayılmaz**.

***

### Endpoint

```http
POST /v1/Payment/Auth3d
```

***

### Headers

| Anahtar        | Tür    | Açıklama                                 | Örnek                      |
| -------------- | ------ | ---------------------------------------- | -------------------------- |
| x-ClientID     | String | API istemcisi için benzersiz tanımlayıcı | sizin-istemci-id'niz       |
| x-ClientSecret | String | API istemcisi için gizli anahtar         | sizin-gizli-anahtarınız    |
| x-GrantType    | String | Kullanılan erişim tokeni türü            | istemci\_kimlik\_bilgileri |
| x-Scope        | String | API kapsamı                              | pf\_write, pf\_read        |
| x-Timestamp    | String | İstek zaman damgası                      | 2024-12-17T12:34:56Z       |

***

### Request Body

Bu alanlar, **returnUrl / failUrl** adresine banka tarafından gönderilen Request içeriğinden alınarak iletilmelidir.

| Alan                  | Zorunlu | Tür      | Açıklama                    | Örnek                  |
| --------------------- | ------- | -------- | --------------------------- | ---------------------- |
| Code                  | ✅       | String   | İşlem sonucu kodu           | B0000                  |
| Message               | ✅       | String   | İşlem durumu                | Approved               |
| EftCode               | ✅       | String   | EFT işlem kodu              | 0150                   |
| MdStatus              | ✅       | String   | 3D doğrulama durum bilgisi  | UGF5...ODRD            |
| MdStatusMessage       | ✅       | String   | 3D doğrulama mesajı         | (Boş)                  |
| conversationId        | ✅       | String   | İşlem takip numarası        | MSD2024030500000000115 |
| OrderId               | ✅       | String   | Sipariş kimliği             | 5000000045202502030044 |
| PaymentId             | ✅       | String   | Ödeme kimliği               | 5000000045202502030044 |
| TransactionDate       | ✅       | DateTime | İşlem tarihi ve saati       | 05/02/2025 16:16:10    |
| Currency              | ✅       | Integer  | Para birimi kodu (ISO 4217) | 949                    |
| PaymentInstrumentType | ✅       | String   | Ödeme aracı türü            | CARD                   |
| MerchantId            | ✅       | String   | Üye işyeri kimliği          | 5000000045             |
| InstrumentDetail      | ✅       | Object   | Ödeme aracı detay bilgisi   | InstrumentDetailVM     |

***

### Response Body

Auth3d çağrısına verilen yanıt, ödemenin **nihai sonucunu** içerir.

#### Örnek Request

```http
POST /v1/Payment/Auth3d
Content-Type: application/json
x-ClientID: sizin-istemci-id'niz
x-ClientSecret: sizin-gizli-anahtarınız
x-GrantType: istemci_kimlik_bilgileri
x-Scope: pf_write, pf_read
x-Timestamp: 2024-12-17T12:34:56Z
```

```json
{
  "Code": "B0000",
  "Message": "Approved",
  "EftCode": "0150",
  "MdStatus": "UGF5...ODRD",
  "MdStatusMessage": "",
  "conversationId": "MSD2024030500000000115",
  "OrderId": "5000000045202502030044",
  "PaymentId": "5000000045202502030044",
  "TransactionDate": "05/02/2025 16:16:10",
  "Currency": 949,
  "PaymentInstrumentType": "CARD",
  "MerchantId": "5000000045",
  "InstrumentDetail": {}
}
```

#### Örnek Response

```json
{
  "code": "B0000",
  "message": "Onaylandı",
  "resultCode": "B0000",
  "resultDescription": "Onaylandı",
  "responseDate": "05/02/2025 16:16:10",
  "conversationId": "MSD2024030500000000115",
  "orderId": "5000000045202502030044",
  "paymentId": "5000000045202502030044",
  "bankUniqueReferenceNumber": "503615446559",
  "transactionDate": "05/02/2025 16:16:10",
  "currency": "949",
  "authCode": "655050",
  "paymentInstrumentType": "CARDPAYMENT",
  "instrumentDetail": {
    "maskedCardNumber": "524677******3508",
    "cardType": "CARD"
  },
  "paymentInfo": {
    "installmentCount": 1,
    "payFacCommissionRate": 1.00,
    "amount": 25.00,
    "payFacCommissionAmount": 0.2500
  },
  "okUrl": null,
  "failUrl": null
}
```


# Ödeme Sorgulama

Ödeme Sorgulama servisi, bir ödeme işleminin sonucunun:

* teknik problemler nedeniyle response bilgisinden alınamadığı,
* işlem sonucunun tekrar doğrulanmak istendiği

durumlarda kullanılır.

Bu servis ile, daha önce başlatılmış bir ödemenin **nihai durumu** (`Başarılı`, `Başarısız`, `Beklemede` vb.) sistem üzerinden tekrar sorgulanabilir.

> ℹ️ Ödeme sorgulama işlemi **yalnızca bilgi amaçlıdır**, ödeme durumunu değiştirmez.

***

### Endpoint

```http
POST /v1/Payment/CheckPayment
```

***

### Headers

| Anahtar        | Tür    | Açıklama                                 | Örnek                      |
| -------------- | ------ | ---------------------------------------- | -------------------------- |
| x-ClientID     | String | API istemcisi için benzersiz tanımlayıcı | sizin-istemci-id'niz       |
| x-ClientSecret | String | API istemcisi için gizli anahtar         | sizin-gizli-anahtarınız    |
| x-GrantType    | String | Kullanılan erişim tokeni türü            | istemci\_kimlik\_bilgileri |
| x-Scope        | String | API kapsamı                              | pf\_write, pf\_read        |
| x-Timestamp    | String | İstek zaman damgası                      | 2024-12-17T12:34:56Z       |

***

### Request Body

| Alan           | Zorunlu | Tür     | Açıklama                                       | Örnek                   |
| -------------- | ------- | ------- | ---------------------------------------------- | ----------------------- |
| merchantId     | ✅       | Integer | Üye işyeri için benzersiz kimlik               | 100000000000004         |
| conversationId | ✅       | String  | İşlem takibi için oluşturulan benzersiz kimlik | MSD2024030500000000115  |
| sign           | ✅       | String  | İsteğin doğrulanması için dijital imza         | AAVWY3RZKJVVCEAD8LDQB4K |

***

### Response Body

Ödeme sorgulama servisi, sorgulanan ödemenin **mevcut durumunu** ve detaylarını döner.

#### Örnek Request

```http
POST /v1/Payment/CheckPayment
Content-Type: application/json
x-ClientID: sizin-istemci-id'niz
x-ClientSecret: sizin-gizli-anahtarınız
x-GrantType: istemci_kimlik_bilgileri
x-Scope: pf_write, pf_read
x-Timestamp: 2024-12-17T12:34:56Z
```

```
{
  "merchantId": 100000000000004,
  "conversationId": "MSD2024030500000000115",
  "sign": "AAVWY3RZKJVVCEAD8LDQB4K..."
}
```

#### Örnek Response

```json
{
  "responseCode": "B0000",
  "responseDescription": "Approved",
  "responseDate": "02/06/2025 15:45:31",
  "mdStatus": "",
  "conversationId": "YBS57148868202773272",
  "orderId": "5000000045202502030049",
  "paymentId": "5000000045202502030049",
  "bankUniqueReferenceNumber": "503715446698",
  "paymentInstrumentType": "CARD",
  "transactionDate": "02/06/2025 15:45:17",
  "transactionStatus": "Normal",
  "transactionType": "Satış",
  "paymentInfo": {
    "installmentCommission": 0.25,
    "installmentCount": 1,
    "amount": 25.00,
    "currency": "949",
    "authCode": "683819"
  },
  "sign": "AVPGVFPHPS+HXCKT4IWQ6EYL/UMYQANXXHQ6YTNNMA8="
}

```


# Entegrasyon Yöntemleri

MorPOS, farklı iş modelleri ve güvenlik ihtiyaçları için birden fazla ödeme entegrasyon yöntemi sunar.\
Üye işyerleri, kullanıcı deneyimi ve PCI-DSS kapsamı ihtiyaçlarına göre kendilerine en uygun entegrasyon modelini seçebilir.

Bu bölümde yer alan entegrasyon yöntemleri ile kartlı ödeme işlemleri güvenli ve esnek bir şekilde gerçekleştirilebilir.

***

### Embedded Payment

Embedded Payment yönteminde kart bilgileri MorPOS’un sunduğu gömülü (embedded) ödeme formu üzerinden alınır.\
Ödeme formu, üye işyerinin kendi sayfası içerisinde gösterilir.

**Öne çıkan özellikler**

* Kart bilgileri Üye işyeri sistemine iletilmez.
* Ödeme deneyimi üye işyerinin sayfası içinde kalır.
* PCI-DSS kapsamı önemli ölçüde azaltılır.
* Kullanıcı deneyimi üzerinde daha fazla kontrol sağlar.

👉 Detaylı kullanım ve teknik bilgiler için **Embedded Payment** dokümantasyonunu inceleyiniz.

***

### Hosted Payment

Hosted Payment yönteminde ödeme işlemi MorPOS tarafından sunulan güvenli ödeme sayfası üzerinden gerçekleştirilir.\
Ödeme başlatıldığında kullanıcı MorPOS ödeme ekranına yönlendirilir ve kart bilgileri bu sayfa üzerinden alınır.

**Öne çıkan özellikler**

* Kart bilgileri üye işyeri sistemine iletilmez
* PCI-DSS yükümlülüğü minimum seviyededir
* Hızlı ve kolay entegrasyon sağlar
* MorPOS tarafından sunulan standart ödeme arayüzü kullanılır

👉 Detaylı kullanım ve teknik bilgiler için **Hosted Payment** dokümantasyonunu inceleyiniz.

***

### Hangi Entegrasyon Yöntemi Tercih Edilmeli?

| Kriter                      | Hosted Payment | Embedded Payment |
| --------------------------- | -------------- | ---------------- |
| PCI-DSS kapsamı             | Çok düşük      | Düşük            |
| Entegrasyon kolaylığı       | Yüksek         | Orta             |
| Kullanıcı deneyimi kontrolü | Sınırlı        | Yüksek           |
| Ödeme sayfası               | MorPOS         | Merchant sayfası |

***

Bu sayfa, ödeme entegrasyon yöntemlerinin genel tanıtımını içermektedir.\
Her entegrasyon yöntemi için teknik detaylar ve örnek kullanımlar ilgili alt sayfalarda yer almaktadır.


# Gömülü Ödeme Formu

MorPOS **Gömülü Ödeme  Formu (Embedded Payment Form) ile** kart bilgileri MorPOS'un güvenli arayüzü üzerinden alınır.

***

### Endpoint

```http
POST /v1/EmbeddedPayment/CreatePaymentForm
```

***

### Headers

| Anahtar        | Tür    | Açıklama                                 | Örnek                   |
| -------------- | ------ | ---------------------------------------- | ----------------------- |
| x-ClientID     | String | API istemcisi için benzersiz tanımlayıcı | sizin-istemci-id’niz    |
| x-ClientSecret | String | API istemcisi için gizli anahtar         | sizin-gizli-anahtarınız |
| x-GrantType    | String | Kullanılan erişim token türü             | client\_credentials     |
| x-Scope        | String | API kapsamı                              | pf\_write, pf\_read     |
| x-Timestamp    | String | İstek zaman damgası (ISO 8601)           | 2024-12-17T12:34:56Z    |

***

### Request Body

| Alan                                | Zorunlu | Tür     | Açıklama                                | Örnek                          |
| ----------------------------------- | ------- | ------- | --------------------------------------- | ------------------------------ |
| merchantId                          | ✅       | String  | Üye işyeri için benzersiz kimlik        | 100000000000004                |
| returnUrl                           | ✅       | URL     | Başarılı işlem sonrası yönlendirme URL  | <https://www.ornek.com/basari> |
| failUrl                             | ✅       | URL     | Başarısız işlem sonrası yönlendirme URL | <https://www.ornek.com/hata>   |
| paymentMethod                       | ✅       | String  | Ödeme yöntemi                           | EMBEDDEDPAYMENT                |
| paymentInstrumentType               | ✅       | String  | Ödeme aracı türü                        | CARD                           |
| language                            | ✅       | String  | İşlem dili                              | en                             |
| conversationId                      | ✅       | String  | Takip için benzersiz kimlik             | MP20240305001                  |
| sign                                | ✅       | String  | İsteğin dijital imzası                  | ABC123...                      |
| transactionDetails.transactionType  | ✅       | String  | İşlem türü                              | SALE                           |
| transactionDetails.installmentCount | ✅       | Integer | Taksit sayısı (0 = tek çekim)           | 0                              |
| transactionDetails.amount           | ✅       | Decimal | İşlem tutarı                            | 1.00                           |
| transactionDetails.currencyCode     | ✅       | Integer | Para birimi kodu (TRY = 949)            | 949                            |
| transactionDetails.vftFlag          | ❌       | Boolean | VFT kullanım durumu                     | false                          |
| extraParameter.pFSubMerchantId      | ❌       | String  | Alt üye işyeri kimliği                  | 12345                          |

***

### Örnek Request

```json
{
  "merchantId": "100000000000004",
  "returnUrl": "https://www.ornek.com/basari",
  "failUrl": "https://www.ornek.com/hata",
  "paymentMethod": "EMBEDDEDPAYMENT",
  "paymentInstrumentType": "CARD",
  "language": "en",
  "conversationId": "MSD2024030500000000115",
  "sign": "AAVWY3RZKJVVCEAD8LDQB4KWJL4QX/IQQRGQ3XIWAAG=",
  "transactionDetails": {
    "transactionType": "SALE",
    "installmentCount": 0,
    "amount": "1.00",
    "currencyCode": "949",
    "vftFlag": false
  },
  "extraParameter": {
    "pFSubMerchantId": "12345"
  }
}
```

### Örnek Response

```json
{
    "code": "B0000",
    "message": "SUCCESS",
    "conversationId": "MSD28729399188493475",
    "paymentFormContent": "                    <div id='finagopay-container'>jscode</div>                    <script  src='https://finagopay-pf-ui-merchant.prp.morpara.com/embedded/finagopayPayment.js'></script>                       <script>                                                let isPaymentStarted = false;                        const paymentDateTime = new Date('2026-01-27 10:28:40');                         const now = new Date();                        const timePassed = paymentDateTime -now;                        const expireTime = Math.max(0, timePassed);                        function postRedirect(url, dataObj) {                            let form = document.createElement('form');                            form.method = 'POST';                            form.action = url;                            for (const key in dataObj) {                                if (dataObj.hasOwnProperty(key)) {                                    let input = document.createElement('input');                                    input.type = 'hidden';                                    input.name = key;                                    input.value = dataObj[key];                                    form.appendChild(input);                                }                            }                            document.body.appendChild(form);                            form.submit();                        }                        let finagopayPayment = new FinagopayPayment({                            container: '#finagopay-container',                    baseUrl:'https://finagopay-pf-api-gateway.prp.morpara.com/v1/EmbeddedPayment',                            clientSecret:'MjEyYTFmYzA4NTVhMWNiNDA1YzllNjM3Mzk3NDBjNzVmYjZmMDJlODI5NWU1ZmQ4ZTZhMmY1ZTA5NGFhYjZiYw==',                            clientId:'cx+eQAPE6JJAaJrGDDl2',                            timestamp:'20260127101840',                            merchantId:'5000000017',                            amount:'1.00',                            conversationId:'YBS28729399188493475',                            language:'en',                            onSuccess: function(payload) {                                                                isPaymentStarted = true;                                let request = {                                    RequestData: 'usZND1SEut9/Il3R2FwU/cIhDzw3NZpFfLEjfymUUj/qEnxBt0PqJk7WJmWrLT9u9GLpCnRQAzcMbPFIUu+ZM4fE9ngZxxrzp36C1tfo98plQux5NjjyV58uOIg02jeBDSxSD4borOvyanfV0+LhTy2lbhvJgVGJCVsOOw7GE+g4sWQZshwQ9piSjAgUu/zZUHkP/rHWSMP08C9XAtrgmdzrkayOZLyxI7mg3REHQlVI6Zjocz4pMbwVuduSUprt8VfvCxu8rZWeDEeG6DOga8+fUkGQL8RTVFSVgGUNwrXlApAQwtaNMteYef/0Kd7QMb0c2y+rqT9yUmQePJvQuZNXPRKXEGcMtKC/0XtSXM2D4Es4X9uTRGNP3MWDpNG502yI25mIkjcfI2UDOO2iVPZPWFnN5F0BuQSWfCV49eBTGemkrOmSLN/C3ubyLrvkAvB1WokeTi/h9cTuQnluPsVazXw7z8kWM6lyl6/kGTq+l5Ai+FgrCOIdNJABt7bs9ctD9CtUChiuLpBKIOsHT01QQ55/Uz5xgnMwqOM1uCne71BLrp1+Pc6+Xa6+y/F+7A4yEBlD1kKV98ro3e3T4MqiVL9KiTIhH1GWeGKUZ4Obeela6Wz6JNiVEHuJqW1suPXoNvQ5kp7ylmwztRZC080nffntk7w7CT+BdBv7an/IkmYyGvIkcsye38qmHi/jsKyUNrc40PGvg0uoz00+BA==æe6yK94u/Z3ye4r2frkolqQ==',                                    PaymentPageTransactionGuid:'vJGv1A+C9HJ1F6EAGdp2mEd8ltt0U7+VM565KqQptB4=æUm3LGMAvV21tZ1ySvXzjfQ==',                                    CardToken: payload.token                                };                                fetch('https://finagopay-pf-api-gateway.prp.morpara.com/v1/EmbeddedPayment/processPayment', {                                    method: 'POST',                                    headers: {                                        'Content-Type': 'application/json',                                        'X-ClientSecret': 'MjEyYTFmYzA4NTVhMWNiNDA1YzllNjM3Mzk3NDBjNzVmYjZmMDJlODI5NWU1ZmQ4ZTZhMmY1ZTA5NGFhYjZiYw==' ,                                        'X-ClientId': 'cx+eQAPE6JJAaJrGDDl2' ,                                        'X-GrantType': 'client_credentials' ,                                        'X-Scope': 'pf_write pf_read',                                         'X-Timestamp': '20260127101840',                                     },                                    body: JSON.stringify(request)                                })                               .then(response => response.json())                               .then(data => {                                    if (data.use3d)                                        {                                        if (data.htmlForm) {                                            const decodedHtmlContent = atob(data.htmlForm);                                            document.open();                                            document.write(decodedHtmlContent);                                            document.close();                                         }                                         else {                                                postRedirect(data.failUrl, {Code: 'R0099',Message: '3D Secure doğrulama için gerekli HTML içeriği alınamadı'});                                             }                                        }                                    else                                        {                                            let targetUrl = (data.code === 'B0000') ? data.returnUrl : data.failUrl;                                            postRedirect(targetUrl, data);                                        }                                                                 })                               .catch(error => {                                         postRedirect('{baseUrl}/fail-response', { error: error.message || 'Bilinmeyen hata'});                                });                            }                        });                     setTimeout(() => {                           if (!isPaymentStarted) {                                const container = document.querySelector('#finagopay-container');                                if (container) {                                    container.innerHTML = '<p>Ödeme süresi sona erdi. Lütfen tekrar deneyin.</p>';                                }                            }                        }, expireTime);                                       </script>",
    "paymentFormExpireTime": "2026-01-27T10:28:40.4442155+03:00",
    "returnUrl": "https://www.ornek.com/basari",
    "failUrl": "https://www.ornek.com/basarisiz"
}
```

***

### İşleyiş Notları

* Kart bilgileri **merchant sistemine iletilmez**
* Kart verileri ödeme sağlayıcının **gömülü (embedded) ödeme arayüzü** üzerinden toplanır
* PCI-DSS kapsamı önemli ölçüde azaltılır
* İşlem sonucuna göre kullanıcı `returnUrl` veya `failUrl` adresine yönlendirilir


# Ortak Ödeme Sayfası

### MorPOS Yönlendirmeli Ödeme (Hosted Payment)

MorPOS **Hosted Payment** modeli ile kart bilgileri MorPOS’un güvenli ödeme sayfasında alınır.\
Kullanıcı, ödeme başlatıldıktan sonra MorPOS tarafından sunulan ödeme ekranına yönlendirilir.

***

#### Endpoint

```http
POST /v1/HostedPayment/HostedPaymentRedirect
```

***

### Headers

| Anahtar        | Tür    | Açıklama                                 | Örnek                   |
| -------------- | ------ | ---------------------------------------- | ----------------------- |
| x-ClientID     | String | API istemcisi için benzersiz tanımlayıcı | sizin-istemci-id’niz    |
| x-ClientSecret | String | API istemcisi için gizli anahtar         | sizin-gizli-anahtarınız |
| x-GrantType    | String | Kullanılan erişim token türü             | client\_credentials     |
| x-Scope        | String | API kapsamı                              | pf\_write, pf\_read     |
| x-Timestamp    | String | İstek zaman damgası (ISO 8601)           | 2024-12-17T12:34:56Z    |

***

### Request Body

| Alan                                | Zorunlu | Tür     | Açıklama                                | Örnek                          |
| ----------------------------------- | ------- | ------- | --------------------------------------- | ------------------------------ |
| merchantId                          | ✅       | String  | Üye işyeri için benzersiz kimlik        | 100000000000004                |
| returnUrl                           | ✅       | URL     | Başarılı işlem sonrası yönlendirme URL  | <https://www.ornek.com/basari> |
| failUrl                             | ✅       | URL     | Başarısız işlem sonrası yönlendirme URL | <https://www.ornek.com/hata>   |
| paymentMethod                       | ✅       | String  | Ödeme yöntemi                           | EMBEDDEDPAYMENT                |
| paymentInstrumentType               | ✅       | String  | Ödeme aracı türü                        | CARD                           |
| language                            | ✅       | String  | İşlem dili                              | en                             |
| conversationId                      | ✅       | String  | Takip için benzersiz kimlik             | MP20240305001                  |
| sign                                | ✅       | String  | İsteğin dijital imzası                  | ABC123...                      |
| transactionDetails.transactionType  | ✅       | String  | İşlem türü                              | SALE                           |
| transactionDetails.installmentCount | ✅       | Integer | Taksit sayısı (0 = tek çekim)           | 0                              |
| transactionDetails.amount           | ✅       | Decimal | İşlem tutarı                            | 1.00                           |
| transactionDetails.currencyCode     | ✅       | Integer | Para birimi kodu (TRY = 949)            | 949                            |
| transactionDetails.vftFlag          | ❌       | Boolean | VFT kullanım durumu                     | false                          |
| extraParameter.pFSubMerchantId      | ❌       | String  | Alt üye işyeri kimliği                  | 12345                          |

***

#### Örnek Request

```json
{
  "merchantId": "100000000000004",
  "returnUrl": "https://www.ornek.com/basari",
  "failUrl": "https://www.ornek.com/hata",
  "paymentMethod": "HOSTEDPAYMENT",
  "paymentInstrumentType": "CARD",
  "language": "en",
  "conversationId": "MSD2024030500000000123",
  "sign": "AAVWY3RZKJVVCEAD8LDQB4KWJL4QX/IQQRGQ3XIWAAG=",
  "transactionDetails": {
    "transactionType": "SALE",
    "installmentCount": 0,
    "amount": "1.00",
    "currencyCode": "949",
    "vftFlag": false
  },
  "extraParameter": {
    "pFSubMerchantId": "12345"
  }
}
```

#### Örnek Response

```json
{
    "returnUrl": "https://api.morpara.com/hostedpaymentpage/SdL+XGrAcMi+Z+7brD69kMasgWJIPui/nP1CFNETmXo="
}
```

***

#### İşleyiş Notları

* Kart bilgileri **merchant sistemine iletilmez**
* Kullanıcı MorPOS’un **hosted ödeme sayfasına yönlendirilir**
* Kart verileri MorPOS altyapısında işlenir
* PCI-DSS yükümlülüğü minimum seviyededir
* Ödeme sonucuna göre kullanıcı:
  * Başarılı işlemde `returnUrl`
  * Başarısız işlemde `failUrl`\
    adresine yönlendirilir
* Hosted Payment, **3D Secure ve non-3D Secure** senaryoları destekler


# Destekleyici Servisler

Bu bölüm, ödeme işlemlerini **doğrudan başlatmayan** ancak ödeme akışlarını destekleyen yardımcı servisleri kapsar. Destekleyici servisler; entegrasyon sırasında doğru kararların alınmasını, kullanıcı deneyiminin iyileştirilmesini ve operasyonel kontrollerin sağlanmasını amaçlar.

Bu doküman, **Destekleyici Servisler** ana sayfası için genel bir çerçeve sunar. Her bir servis için detaylı teknik bilgiler ilgili alt sayfalarda yer almaktadır.

***

### Destekleyici Servislerin Kullanım Amacı

Destekleyici servisler aşağıdaki senaryolarda kullanılır:

* Ödeme öncesi kart ve banka bilgilerinin tespiti
* Doğru ödeme akışının seçilmesi (3D / Non-3D)
* Kart türüne veya bankaya özel iş kurallarının uygulanması
* Hata oranlarının ve başarısız işlemlerin azaltılması

Bu servisler tek başına finansal bir işlem oluşturmaz.

***

### Mevcut Servisler

#### 1. BIN Sorgulama

Kart numarasının ilk 6 hanesi (BIN – Bank Identification Number) kullanılarak kart hakkında temel bilgilerin elde edilmesini sağlar.

**Sağlanan bilgiler:**

* Kartın ait olduğu banka
* Kart markası (Visa, Mastercard vb.)
* Kart tipi (Debit / Credit / Prepaid)
* Kartın yerel veya yabancı olup olmadığı

**Tipik kullanım senaryoları:**

* Ödeme ekranında banka logosu gösterimi
* 3D Secure zorunluluğu kararları
* Taksit veya komisyon kurallarının belirlenmesi

➡️ Detaylı teknik entegrasyon için: **BIN Sorgulama** sayfasına bakınız.

***

### Ortak Kavramlar

Destekleyici servislerde sık kullanılan bazı temel kavramlar:

* **bin**: Kart numarasının ilk 6 hanesi
* **cardBrand**: Kart markası
* **cardType**: Kart tipi
* **issuingBank**: Kartı çıkaran banka

***

### Entegrasyon ve Performans Notları

* Destekleyici servisler genellikle ödeme öncesinde çağrılır
* Düşük gecikme süresi için senkron kullanım önerilir
* Gereksiz tekrar çağrılardan kaçınılmalıdır
* Yanıtlar cache mekanizmaları ile desteklenebilir

***

Bir sonraki adım olarak, ilgili destekleyici servisi seçerek teknik detay sayfasına geçebilirsiniz.


# BIN Kontrol

BIN Kontrol servisi, girilen kart numarasına ait **BIN bilgilerini** sorgulamak için kullanılır.

Bu servis ile:

* Kartın bağlı olduğu banka
* Kart tipi (kredi / banka / ön ödemeli)
* Kart markası (Visa, Mastercard vb.)
* Kartın ticari olup olmadığı

gibi temel kart özellikleri öğrenilebilir.

> ℹ️ BIN sorgulama işlemi **finansal bir işlem değildir** ve ödeme başlatmaz.

***

### Endpoint

```http
POST /v1/BinList/CheckBin
```

***

### Headers

| Anahtar        | Tür    | Açıklama                                 | Örnek                      |
| -------------- | ------ | ---------------------------------------- | -------------------------- |
| x-ClientID     | String | API istemcisi için benzersiz tanımlayıcı | sizin-istemci-id'niz       |
| x-ClientSecret | String | API istemcisi için gizli anahtar         | sizin-gizli-anahtarınız    |
| x-GrantType    | String | Kullanılan erişim tokeni türü            | istemci\_kimlik\_bilgileri |
| x-Scope        | String | API kapsamı                              | pf\_write, pf\_read        |
| x-Timestamp    | String | İstek zaman damgası                      | 2024-12-17T12:34:56Z       |

***

### Request Body

| Alan     | Zorunlu | Tür     | Açıklama                               | Örnek                   |
| -------- | ------- | ------- | -------------------------------------- | ----------------------- |
| bin      | ✅       | Integer | 4 veya 6 haneli BIN numarası           | 402940                  |
| language | ✅       | String  | İşlem dili                             | tr                      |
| sign     | ✅       | String  | İsteğin doğrulanması için dijital imza | AAVWY3RZKJVVCEAD8LDQB4K |

***

### Response Body

BIN kontrol servisi, sorgulanan karta ait banka ve kart bilgilerini döner.

#### Örnek Request

```http
POST /v1/BinList/CheckBin
Content-Type: application/json
x-ClientID: sizin-istemci-id'niz
x-ClientSecret: sizin-gizli-anahtarınız
x-GrantType: istemci_kimlik_bilgileri
x-Scope: pf_write, pf_read
x-Timestamp: 2024-12-17T12:34:56Z
```

```json
{
  "responseCode": "B0000",
  "responseDescription": "Approved",
  "responseDate": "2025-02-05T17:26:54.3277205+03:00",
  "conversationId": "BSR29715509646227267",
  "bin": "402940",
  "cardType": "B",
  "cardBrand": "VISA / World",
  "bankName": "T.VAKIFLAR BANKASI T.A.O.",
  "bankCode": "0015",
  "commercial": "0"
}

```

#### Örnek Response

```json
{
  "responseCode": "B0000",
  "responseDescription": "Approved",
  "responseDate": "2025-02-05T17:26:54.3277205+03:00",
  "conversationId": "BSR29715509646227267",
  "bin": "402940",
  "cardType": "B",
  "cardBrand": "VISA / World",
  "bankName": "T.VAKIFLAR BANKASI T.A.O.",
  "bankCode": "0015",
  "commercial": "0"
}

```


# Taksit Oranları


# İşlem Yönetimi

Bu bölüm, sistem üzerinden daha önce oluşturulmuş ödeme işlemleri üzerinde yapılan **iptal** ve **iade** operasyonlarını kapsar. İşlem Yönetimi servisleri, başarılı veya devam eden işlemler üzerinde finansal ve operasyonel kontrol sağlamak amacıyla kullanılır.

Bu sayfa, **İşlem Yönetimi** ana menüsü için hazırlanmış olup; iptal ve iade işlemlerinin ne zaman ve hangi amaçlarla kullanıldığını genel hatlarıyla açıklar. Teknik entegrasyon detayları ilgili alt sayfalarda yer almaktadır.

***

### İşlem Yönetiminin Amacı

İşlem yönetimi servisleri aşağıdaki ihtiyaçlara yönelik olarak kullanılır:

* Yanlış veya mükerrer oluşturulan ödemelerin durdurulması
* Müşteri talepleri doğrultusunda ücret iadesi yapılması
* Operasyonel veya teknik hatalara müdahale edilmesi
* Fraud şüphesi bulunan işlemlerin kontrol altına alınması

Bu işlemler, **mevcut bir ödeme kaydı** üzerinden gerçekleştirilir ve yeni bir ödeme oluşturmaz.

***

### İşlem Türleri

#### İptal (Void)

Henüz bankaya iletilmemiş veya gün sonu mutabakatına girmemiş bir ödemenin tamamen geçersiz hale getirilmesini sağlar.

**Genel özellikler:**

* Aynı gün içerisinde uygulanır
* İşlem tutarı kart sahibine yansımaz
* Finansal kayıt oluşmadan işlem sonlandırılır

➡️ Detaylı bilgi için **İptal** sayfasına bakınız.

***

#### İade (Refund)

Başarılı şekilde tamamlanmış bir ödemenin, kart sahibine kısmen veya tamamen geri ödenmesini sağlar.

**Genel özellikler:**

* Tam veya kısmi iade yapılabilir
* Bir işlem için birden fazla iade uygulanabilir
* Kart sahibine yansıma süresi banka süreçlerine bağlıdır

➡️ Detaylı bilgi için **İade** sayfasına bakınız.

***

### Ortak Kavramlar

İşlem Yönetimi kapsamında sık kullanılan bazı temel kavramlar aşağıda listelenmiştir:

* **transactionId**: Yönetilecek ödeme işleminin benzersiz kimliği
* **originalAmount**: İlk ödeme tutarı
* **refundableAmount**: İade edilebilir kalan tutar
* **status**: İşlemin güncel durumu
* **createdAt**: İşlemin oluşturulma zamanı

***

### Önemli Notlar

* İptal ve iade işlemleri geri alınamaz
* Her işlem türü, belirli zaman ve durum kısıtlarına tabidir
* İşlem durumu, operasyon sonrası mutlaka sorgulanmalıdır
* Banka ve kart ağlarının kuralları geçerlidir

***

Bir sonraki adımda, yapmak istediğiniz işlem türünü seçerek ilgili alt sayfaya geçebilirsiniz.


# İptal

İptal servisi, başarılı bir ödemenin **henüz finansallaşmadan aynı gün içerisinde** iptal edilmesini sağlar.

Bu servis ile:

* Ödeme geri alınır.
* Banka ve üye işyeri kayıtları güncellenir.
* İptal işlemi için işlem takibi sağlanır.

> ⚠️ İptal işlemi **sadece aynı gün** finansallaşmamış ödemeler için geçerlidir.\
> Finansallaşmış ödemelerde **iade (Refund)** servisi kullanılmalıdır.

***

### Endpoint

```http
POST /v1/Payment/DoPayment
```

***

### Headers

| Anahtar        | Tür    | Açıklama                                 | Örnek                      |
| -------------- | ------ | ---------------------------------------- | -------------------------- |
| x-ClientID     | String | API istemcisi için benzersiz tanımlayıcı | sizin-istemci-id'niz       |
| x-ClientSecret | String | API istemcisi için gizli anahtar         | sizin-gizli-anahtarınız    |
| x-GrantType    | String | Kullanılan erişim tokeni türü            | istemci\_kimlik\_bilgileri |
| x-Scope        | String | API kapsamı                              | pf\_write, pf\_read        |
| x-Timestamp    | String | İstek zaman damgası                      | 2024-12-17T12:34:56Z       |

***

### Request Body

| Alan                               | Zorunlu | Tür     | Açıklama                                | Örnek                                        |
| ---------------------------------- | ------- | ------- | --------------------------------------- | -------------------------------------------- |
| merchantId                         | ✅       | Integer | Üye işyeri kimlik numarası              | 100000000000004                              |
| paymentId                          | ✅       | String  | İptal edilecek ödemenin kimlik numarası | 100000000000004202402140248                  |
| conversationId                     | ✅       | String  | İşlem takip numarası                    | MSD29715509646227267                         |
| sign                               | ✅       | String  | İsteğin doğrulanması için dijital imza  | PT6JMMJANWWQ6DN5M+DUGIZW4DSVJHX0NI2JRJ0XT3O= |
| transactionDetails.transactionType | ✅       | String  | İşlem türü (VOID = iptal)               | VOID                                         |
| transactionDetails.currency        | ✅       | String  | Para birimi kodu (ISO 4217)             | 949                                          |
| language                           | ✅       | String  | İşlem dili                              | tr                                           |

***

### Response Body

İptal işlemi başarılı ise, sistem aşağıdaki yanıtı döner:

#### Örnek Request

```http
POST /v1/Payment/DoPayment
Content-Type: application/json
x-ClientID: sizin-istemci-id'niz
x-ClientSecret: sizin-gizli-anahtarınız
x-GrantType: istemci_kimlik_bilgileri
x-Scope: pf_write, pf_read
x-Timestamp: 2024-12-17T12:34:56Z
```

```json
{
  "merchantId": 100000000000004,
  "paymentId": "100000000000004202402140248",
  "conversationId": "MSD29715509646227267",
  "sign": "PT6JMMJANWWQ6DN5M+DUGIZW4DSVJHX0NI2JRJ0XT3O=",
  "transactionDetails": {
    "transactionType": "VOID",
    "currency": "949"
  },
  "language": "tr"
}

```

#### Örnek Response

```json
{
  "code": "00",
  "message": "Approved",
  "resultCode": "00",
  "resultDescription": "Başarılı",
  "responseDate": "11/03/2024 12:34:40",
  "conversationId": "MSD29715509646227267",
  "orderId": "100000000000004202402140248",
  "paymentId": "100000000000004202402140248",
  "bankUniqueReferenceNumber": "407100003684",
  "authCode": "562660",
  "sign": "F7GJMMJANWWQ6DN5M+DUGIZW4DSVJHXJNI2JRJ0XT3O="
}

```


# İade

İade servisi, **gün sonu sürecine girmiş** yani finansallaşmış bir işlemin geri alınmasını sağlar.

Bu servis ile:

* Tüm ödeme veya **parçalı iade** yapılabilir.
* Banka ve üye işyeri kayıtları güncellenir.
* İşlem takibi sağlanır.

> ⚠️ Finansallaşmamış işlemler için **İptal (Void)** servisi kullanılmalıdır.

***

### Endpoint

```http
POST /v1/Payment/DoPayment
```

***

### Request Body

| Alan                               | Zorunlu | Tür     | Açıklama                               | Örnek                                        |
| ---------------------------------- | ------- | ------- | -------------------------------------- | -------------------------------------------- |
| merchantId                         | ✅       | String  | Satıcının benzersiz kimlik numarası    | 100000000000004                              |
| language                           | ✅       | String  | İşlem dili                             | tr                                           |
| conversationId                     | ✅       | String  | İşlem takibi için benzersiz kimlik     | MSD000011                                    |
| sign                               | ✅       | String  | İsteğin doğrulanması için dijital imza | NN6JMMJANWWQ6DN5M+DUGIZW4DS2WHX0NI2JRJ0XT3O= |
| orderId                            | ✅       | String  | Siparişin benzersiz kimlik numarası    | 100000000000004202402140269                  |
| paymentId                          | ✅       | String  | İade edilecek ödemenin kimlik numarası | 32423424                                     |
| transactionDetails.transactionType | ✅       | String  | İşlem türü                             | REFUND                                       |
| transactionDetails.currencyCode    | ✅       | String  | Para birimi kodu (ISO 4217)            | 949                                          |
| transactionDetails.amount          | ✅       | Decimal | İade edilecek tutar                    | 1.00                                         |

***

### Response Body

İade işlemi başarılı ise, sistem aşağıdaki yanıtı döner:

#### Örnek Request

```http
POST /v1/Payment/DoPayment
Content-Type: application/json
```

```json
{
  "merchantId": "100000000000004",
  "language": "tr",
  "conversationId": "MSD000011",
  "sign": "NN6JMMJANWWQ6DN5M+DUGIZW4DS2WHX0NI2JRJ0XT3O=",
  "orderId": "100000000000004202402140269",
  "paymentId": "32423424",
  "transactionDetails": {
    "transactionType": "REFUND",
    "currencyCode": "949",
    "amount": 1.00
  }
}

```

#### Örnek Response

```json
{
  "code": "00",
  "message": "Approved",
  "resultCode": "00",
  "resultDescription": "Başarılı",
  "responseDate": "12/03/2024 12:34:40",
  "conversationId": "MSD2024030500000000120",
  "orderId": "100000000000004202402140269",
  "paymentId": "100000000000004202402140269",
  "bankUniqueReferenceNumber": "407100003684"
}

```


# Geliştirici Araçları

Bu bölüm, geliştiricilerin API entegrasyonlarını daha hızlı ve hatasız şekilde gerçekleştirebilmesi için sunulan hazır araç ve kaynakları kapsar. **Geliştirici Araçları**, farklı teknoloji altyapılarına ve kullanım senaryolarına uygun çözümler sunarak entegrasyon süresini minimuma indirmeyi hedefler.

Bu sayfa, **Geliştirici Araçları** ana menüsü için genel bir tanıtım niteliğindedir. Her bir araç ve kaynağa ait detaylı kullanım ve teknik bilgiler ilgili alt sayfalarda yer almaktadır.

***

### Geliştirici Araçlarının Amacı

Geliştirici araçları aşağıdaki ihtiyaçlara yönelik olarak tasarlanmıştır:

* API uç noktalarının hızlıca test edilmesi
* Farklı yazılım dilleri için örnek entegrasyonların sunulması
* E‑ticaret altyapıları için hazır entegrasyon seçenekleri sağlanması
* Entegrasyon sırasında oluşabilecek hataların azaltılması

Bu araçlar, geliştiricilerin minimum eforla canlı ortama geçebilmesini amaçlar.

***

### Sunulan Araçlar ve Kaynaklar

#### Postman Koleksiyonu

Tüm API uç noktalarının hazır istek örnekleriyle birlikte Postman üzerinden test edilmesini sağlar.

**Kullanım avantajları:**

* Hızlı request / response testleri
* Header ve body parametrelerinin kolay yönetimi
* Test ve canlı ortamlar için ayrı yapılandırma

➡️ Detaylı bilgi için **Postman** sayfasına bakınız.

***

#### Client Kütüphaneleri

API entegrasyonunu kolaylaştırmak amacıyla farklı yazılım dilleri için hazırlanmış örnek client kütüphanelerini içerir.

**Desteklenen diller:**

* PHP
* Java
* .NET

**Genel özellikler:**

* Ortak request / response modelleri
* Hata yönetimi ve imzalama örnekleri
* Best practice entegrasyon yaklaşımları

➡️ Detaylı bilgi için **Client (PHP, Java, .NET)** sayfasına bakınız.

***

#### Açık Kaynak Eklentiler

Popüler e‑ticaret platformları için geliştirilmiş, açık kaynak kodlu ödeme entegrasyon eklentilerini kapsar.

**Desteklenen platformlar:**

* WooCommerce
* OpenCart
* PrestaShop
* Magento 2

**Sağlanan faydalar:**

* Hızlı kurulum ve yapılandırma
* Standart ödeme akışlarının hazır gelmesi
* Topluluk katkısına açık yapı

➡️ Detaylı bilgi için **Açık Kaynak Eklentiler** sayfasına bakınız.

***

### Kimler İçin Uygun?

* Backend geliştiriciler
* E‑ticaret altyapısı kullanan firmalar
* Hızlı PoC veya MVP geliştirmek isteyen ekipler
* Ödeme entegrasyonunu kısa sürede tamamlamak isteyen yazılım ekipleri

***

Bir sonraki adımda, kullanmak istediğiniz geliştirici aracını seçerek ilgili alt sayfaya geçebilirsiniz.


# Postman

## 🧾 MorPOS Postman Collection

Bu sayfa, MorPOS için hazırlanmış **Postman Collection**'ın referansını sunar.

* Tüm API servisleri (Non-3DS, 3D Secure, Ödeme Sorgulama, BIN Kontrol, İptal, İade) tek bir koleksiyonda birleştirilmiştir.
* Servislerin kullanımı, gerekli header ve request parametreleri, örnek JSON request & response’lar koleksiyon içinde yer almaktadır.
* Postman üzerinden doğrudan çağrı yapabilir, örnek verilerle test edebilirsiniz.

***

### Postman Collection İndir

* Koleksiyonu **Postman’a import** ederek tüm API servislerini kolayca kullanabilirsiniz:

📥 [**Postman Collection İndir**](https://www.morpara.com/)

> ⚡ Koleksiyon, güncel endpoint ve örnek verilerle sürekli olarak güncellenmektedir.\
> 🔒 API çağrıları için `x-ClientID` ve `x-ClientSecret` bilgilerinizi kullanmanız gerekmektedir.

***

### Request Header (Tüm Servisler)

| Alan           | Zorunlu | Tür    | Açıklama                                 | Örnek                      |
| -------------- | ------- | ------ | ---------------------------------------- | -------------------------- |
| x-ClientID     | ✅       | String | API istemcisi için benzersiz tanımlayıcı | sizin-istemci-id'niz       |
| x-ClientSecret | ✅       | String | API istemcisi için gizli anahtar         | sizin-gizli-anahtarınız    |
| x-GrantType    | ✅       | String | Kullanılan erişim tokeni türü            | istemci\_kimlik\_bilgileri |
| x-Scope        | ✅       | String | API kapsamı                              | pf\_write, pf\_read        |
| x-Timestamp    | ✅       | String | Doğrulama için isteğin zaman damgası     | 2024-12-17T12:34:56Z       |
| Content-Type   | ✅       | String | Gönderilen veri formatı                  | application/json           |

***

### Önerilen Environment Değişkenleri

| Değişken     | Açıklama            | Örnek                   |
| ------------ | ------------------- | ----------------------- |
| clientId     | API istemci kimliği | sizin-istemci-id        |
| clientSecret | API gizli anahtarı  | sizin-gizli-anahtar     |
| baseUrl      | API taban URL       | <https://api.ornek.com> |

***

### Kullanım Notları

1. Koleksiyon içindeki tüm servisler için gerekli **header** bilgilerini yukarıdaki gibi ekleyin.
2. Environment değişkenlerini tanımlayarak **kolay test ve import** yapabilirsiniz.
3. Servisler için zorunlu ve opsiyonel alanlar, koleksiyon açıklamalarında belirtilmiştir.
4. Postman ile doğrudan test yapabilir ve örnek request/response’ları inceleyebilirsiniz.


# İstemci Kütüphaneleri (Client SDK)

MorPOS, ödeme servislerine hızlı ve güvenli şekilde entegre olabilmeniz için **PHP, .NET ve Java** dilleri için istemci kütüphaneleri (Client SDK) sunar.\
Bu kütüphaneler, MorPOS API’leri ile yapılan entegrasyonlarda tekrar eden işlemleri kolaylaştırmak ve geliştirme sürecini hızlandırmak amacıyla hazırlanmıştır.

Client SDK’lar, MorPOS API standartlarına uygun olarak geliştirilmiş olup ödeme, sorgulama ve işlem yönetimi gibi temel operasyonların daha basit şekilde gerçekleştirilmesini sağlar.

***

### Desteklenen Diller

MorPOS Client SDK’ları aşağıdaki dilleri desteklemektedir:

* **PHP**
* **.NET**
* **Java**

Her bir SDK, ilgili platformun standartlarına uygun şekilde geliştirilmiş olup MorPOS servisleriyle güvenli iletişim kurulmasını sağlar.

***

### PHP

PHP Client SDK, özellikle web tabanlı uygulamalar ve e-ticaret platformları için tasarlanmıştır.\
MorPOS servislerine yapılan isteklerin güvenli ve hızlı şekilde yönetilmesine olanak tanır.

👉 Kurulum ve kullanım detayları için **PHP Client SDK** sayfasını inceleyiniz.

***

### .NET

.NET Client SDK, .NET tabanlı uygulamalar için MorPOS API’lerine kolay entegrasyon sağlar.\
Kurumsal uygulamalar ve yüksek trafikli sistemler için uygundur.

👉 Kurulum ve kullanım detayları için **.NET Client SDK** sayfasını inceleyiniz.

***

### Java

Java Client SDK, Java tabanlı backend uygulamalarında MorPOS servislerini kullanmak isteyen geliştiriciler için sunulmaktadır.\
Güvenli ve ölçeklenebilir entegrasyonlar için uygundur.

👉 Kurulum ve kullanım detayları için **Java Client SDK** sayfasını inceleyiniz.

***

### Genel Notlar

* Client SDK’lar MorPOS API dokümantasyonu ile tam uyumludur
* API anahtarı ve imzalama (sign) süreçlerini kolaylaştırır
* Standart request ve response yapıları sunar
* Güncel sürümler ve örnek kullanımlar ilgili dilin alt sayfalarında yer alır


# PHP


# Dotnet


# Java


# Açık Kaynak Eklentiler

Bu bölüm, popüler e-ticaret platformları için geliştirilmiş **açık kaynak kodlu ödeme entegrasyon eklentilerini** kapsar. Açık Kaynak Eklentiler, teknik entegrasyon sürecini en aza indirerek kısa sürede ödeme almaya başlanmasını amaçlar.

Bu sayfa, **Açık Kaynak Eklentiler** ana menüsü için hazırlanmış genel bir tanıtım niteliğindedir. Her platforma özel kurulum ve kullanım detayları ilgili alt sayfalarda yer almaktadır.

***

### Açık Kaynak Eklentilerin Amacı

Açık kaynak eklentiler aşağıdaki ihtiyaçlara yönelik olarak sunulmaktadır:

* Kod yazmadan veya minimum geliştirme ile ödeme entegrasyonu sağlamak
* Standart ödeme akışlarını hızlıca canlıya almak
* Platform bazlı best-practice ödeme deneyimi sunmak
* Açık kaynak yapısı sayesinde şeffaf ve geliştirilebilir bir entegrasyon sağlamak

Bu eklentiler, ödeme altyapısını platformun doğal akışına entegre eder.

***

### Desteklenen Platformlar

#### WooCommerce

WordPress tabanlı e-ticaret siteleri için geliştirilmiş ödeme eklentisidir.

**Genel özellikler:**

* Kolay kurulum ve yapılandırma
* Ortak Ödeme Sayfası ve Gömülü Ödeme Formu desteği

➡️ Detaylı bilgi için **WooCommerce** sayfasına bakınız.

***

#### OpenCart

OpenCart altyapısını kullanan e-ticaret siteleri için hazırlanmış ödeme entegrasyonunu kapsar.

**Genel özellikler:**

* Yönetim paneli üzerinden konfigürasyon
* Sipariş bazlı ödeme takibi
* Standart ödeme akışlarıyla uyum

➡️ Detaylı bilgi için **OpenCart** sayfasına bakınız.

***

#### PrestaShop

PrestaShop altyapısına sahip mağazalar için geliştirilmiş ödeme eklentisidir.

**Genel özellikler:**

* Modül tabanlı kurulum
* Çoklu ödeme senaryoları desteği
* Sipariş ve ödeme senkronizasyonu

➡️ Detaylı bilgi için **PrestaShop** sayfasına bakınız.

***

#### Magento 2

Magento 2 altyapısı kullanan orta ve büyük ölçekli e-ticaret projeleri için hazırlanmıştır.

**Genel özellikler:**

* Gelişmiş konfigürasyon seçenekleri
* Ölçeklenebilir ödeme altyapısı
* Genişletilebilir modül yapısı

➡️ Detaylı bilgi için **Magento 2** sayfasına bakınız.

***

### Ortak Özellikler

Tüm açık kaynak eklentilerde ortak olarak sunulan bazı özellikler:

* Test ve canlı ortam desteği
* Güvenli API anahtarı kullanımı
* Standart ödeme, iptal ve iade akışları
* Açık kaynak kod yapısı

***

Bir sonraki adımda, kullandığınız e-ticaret platformunu seçerek ilgili eklenti sayfasına geçebilirsiniz.


# Woocommerce

[![WordPress Plugin Version](https://img.shields.io/badge/WordPress-6.0%2B-blue.svg)](https://wordpress.org/) [![WooCommerce](https://img.shields.io/badge/WooCommerce-7.0%2B-purple.svg)](https://woocommerce.com/) [![PHP Version](https://img.shields.io/badge/PHP-7.4%2B-777bb4.svg)](https://php.net/) ![License](https://img.shields.io/badge/license-MIT-blue.svg)

**WooCommerce için MorPOS**, Morpara MorPOS ödeme sistemini WooCommerce mağazalarıyla entegre eden güvenli ve kullanımı kolay bir ödeme geçidi eklentisidir.\
Müşteriler siparişlerini tamamlarken güvenli **Hosted Payment Page (HPP)** akışıyla yönlendirilir.

***

### 📥 Eklenti İndir

**MorPOS WooCommerce eklentisini Wordpress altyapınızda,   Eklentiler -> Yeni Ekle bölümünden "MorPOS WooCommerce" yazarak aratarak kurabilirsiniz.** \
**Manuel kurulum yapmak için aşağıdaki bağlantıdan indirebilirsiniz.**

[**Eklentiyi İndir**](https://github.com/morpara/morpos-woocommerce/archive/refs/heads/main.zip) ✅

> Not: ZIP dosyası WordPress yönetici paneli veya manuel kurulum için uygundur.

***

### ✨ Özellikler

* 🛒 WooCommerce Entegrasyonu
* 🔒 Güvenli Ödemeler (Hosted Payment Page)
* 🏗️ WooCommerce Blocks Desteği
* 🌍 Çoklu Para Birimi (TRY, USD, EUR)
* 💳 Çoklu Ödeme Seçenekleri (Kredi kartı, banka kartı, taksitli ödeme)
* 🧪 Sandbox Modu
* 🔧 Kolay Yapılandırma
* 🛡️ Güvenlik Özellikleri (TLS 1.2+, imzalı API iletişimi)

***

### 📋 Gereksinimler

#### Sunucu Gereksinimleri

| Bileşen     | Minimum | Önerilen |
| ----------- | ------- | -------- |
| WordPress   | 6.0     | 6.8+     |
| WooCommerce | 7.0     | 10.0+    |
| PHP         | 7.4     | 8.2+     |
| TLS         | 1.2     | 1.3      |

#### PHP Uzantıları

* `cURL`
* `json`
* `hash`
* `openssl`

#### WordPress Özellikleri

* WooCommerce kurulu ve aktif
* Pretty Permalinks aktif
* SSL sertifikası (üretim için önerilen)

***

### 🚀 Kurulum

#### WordPress.org Deposu

1. WordPress panel → **Eklentiler → Yeni Ekle**
2. "MorPOS for WooCommerce" arayın
3. **Şimdi Yükle → Etkinleştir**

#### WP-CLI

```bash
wp plugin install morpos-gateway --activate
```

#### Manuel Yükleme

1. ZIP dosyasını indirin: Eklentiyi İndir
2. WordPress → **Eklentiler → Yeni Ekle → Eklenti Yükle → Dosya Seç**
3. ZIP dosyasını seçin → **Şimdi Yükle → Etkinleştir**

***

### ⚙️ Yapılandırma

1. **WooCommerce → Ayarlar → Ödemeler → MorPOS**
2. Zorunlu alanları doldurun:

| Alan          | Açıklama               | Örnek                |
| ------------- | ---------------------- | -------------------- |
| Merchant ID   | Bayi kimliği           | 12345                |
| Client ID     | OAuth istemci kimliği  | your\_client\_id     |
| Client Secret | OAuth istemci şifresi  | your\_client\_secret |
| API Key       | API doğrulama anahtarı | your\_api\_key       |

3. **Ortam Ayarları**

* Test Modu: Sandbox kullanır, gerçek işlem yapılmaz
* Form Türü: `Hosted` (önerilen) veya `Embedded`

4. **Bağlantı Testi**

* Kimlik bilgilerini girdikten sonra **Bağlantıyı Test Et**
* Yeşil onay görünmeli

***

### 🛠️ Hata Ayıklama ve Loglar

```php
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
```

Loglar `/wp-content/debug.log` dosyasına yazılır.

#### Yaygın Sorunlar

* Ödeme başlatılamıyor → Kimlik bilgilerini kontrol edin, TLS 1.2+
* Ödeme işlenmiyor → Para birimi ve tutar limitlerini kontrol edin
* Ödeme sayfası hatası → Pretty permalink ve WooCommerce kurulumunu kontrol edin

***

### 🌐 Uluslararasılaştırma

* Türkçe (`tr_TR`) ve İngilizce (`en_US`) destekler
* WP-CLI ile POT ve JSON çeviri dosyaları oluşturulabilir

***

### 🤝 Katkıda Bulunma

1. Repository'yi Fork → Değişiklik yap → Pull request gönder
2. WordPress/WooCommerce uyumluluğunu test edin

***

### 📄 Lisans

MIT Lisansı. Detaylar için LICENSE

***

### 🆘 Destek

* Dokümantasyon
* [GitHub Issues](https://github.com/morpara/morpos-woocommerce/issues)
* [WordPress Destek Forumu](https://wordpress.org/support/plugin/morpos-gateway/)
* [Morpara Destek](https://morpara.com/support)


# Opencart

[![OpenCart Sürümü](https://img.shields.io/badge/OpenCart-4.0%2B-blue.svg)](https://www.opencart.com/) [![PHP Sürümü](https://img.shields.io/badge/PHP-8.0%2B-777bb4.svg)](https://php.net/) ![Lisans](https://img.shields.io/badge/license-MIT-blue.svg)

**MorPOS for OpenCart**, OpenCart 4.x mağazalarına **Morpara MorPOS** ödeme sistemini entegre eden güvenli ve kullanımı kolay bir ödeme ağ geçidi eklentisidir.\
Müşteriler, siparişlerini tamamlarken güvenli **Barındırılan Ödeme Sayfası (HPP)** akışı üzerinden yönlendirilir veya **Gömülü Ödeme Formu** kullanabilir.

***

### 📦 Versiyonlar

* **OpenCart 4.x**: [4.x branch](https://github.com/morpara/morpos-opencart/tree/4.x)
* **OpenCart 3.x**: [3.x branch](https://github.com/morpara/morpos-opencart/tree/3.x)
* **OpenCart 2.3.x**: [2.3.x branch](https://github.com/morpara/morpos-opencart/tree/2.3.x)
* **OpenCart 2.x**: [2.x branch](https://github.com/morpara/morpos-opencart/tree/2.x)

***

> ZIP dosyaları OpenCart yönetici paneli veya manuel kurulum için uygundur.

***

### ✨ Özellikler

* 🛒 **OpenCart Entegrasyonu**: OpenCart 4.x için MorPOS'u ödeme yöntemi olarak sorunsuzca ekler
* 🔒 **Güvenli Ödemeler**: Barındırılan Ödeme Sayfası (HPP) ve Gömülü Ödeme Formu
* 🌍 **Çoklu Para Birimi**: TRY, USD, EUR
* 💳 **Çoklu Ödeme Seçenekleri**: Kredi kartları, banka kartları ve taksitli ödemeler
* 🧪 **Test Modu**: Geliştirme/test için sandbox
* 🔧 **Kolay Yapılandırma**: Bağlantı testi ve yönetici paneli
* 🛡️ **Güvenlik Özellikleri**: TLS 1.2+, imzalı API iletişimi, sepet/sipariş doğrulaması
* 🌐 **Çoklu Dil**: Türkçe ve İngilizce desteği

***

### 📋 Gereksinimler

#### Sunucu Gereksinimleri

| Bileşen  | Minimum | Önerilen |
| -------- | ------- | -------- |
| OpenCart | 4.0     | 4.1.0.3  |
| PHP      | 8.0     | 8.2+     |
| TLS      | 1.2     | 1.3      |

#### PHP Eklentileri

* `cURL`
* `json`
* `hash`
* `openssl`

#### OpenCart Özellikleri

* Yönetici Paneli Erişimi
* Veritabanı Erişimi
* HTTPS önerilir
* Oturum SameSite Politikası: 'Lax'

***

### 🚀 Kurulum

#### Yöntem 1: Eklenti Yükleyici (Önerilen)

1. ZIP dosyasını [GitHub Releases](https://github.com/morpara/morpos-opencart/releases) üzerinden indirin
2. OpenCart → **Eklentiler → Yükleyici** → ZIP yükle
3. **Eklentiler → Ödemeler** → MorPOS Payment Gateway → **Yükle**
4. **Düzenle** → Kimlik bilgilerini girin → **Bağlantıyı Test Et** → **Kaydet**

#### Yöntem 2: Manuel Kurulum (Geliştiriciler)

```bash
git clone https://github.com/morpara/morpos-opencart.git
cd morpos-opencart
cp -r upload/extension/morpos_gateway/* /path/to/opencart/extension/morpos_gateway/
cp -r upload/system/library/morpos/* /path/to/opencart/system/library/morpos/
chmod 644 /path/to/opencart/extension/morpos_gateway/**/*.php
chmod 755 /path/to/opencart/extension/morpos_gateway/
```

#### Yöntem 3: FTP Yükleme

1. ZIP dosyasını indirin ve çıkartın
2. `upload/` içeriğini OpenCart kök dizinine yükleyin
3. Yöntem 2’deki adımları takip edin

***

### ⚙️ Yapılandırma

1. **Eklentiler → Ödemeler → MorPOS Payment Gateway → Düzenle**
2. Zorunlu alanları doldurun:

| Alan          | Açıklama                                | Örnek                |
| ------------- | --------------------------------------- | -------------------- |
| Merchant ID   | MorPOS’tan aldığınız üye işyeri kimliği | 12345                |
| Client ID     | OAuth istemci kimliği                   | your\_client\_id     |
| Client Secret | OAuth istemci gizli anahtarı            | your\_client\_secret |
| API Key       | API doğrulama anahtarı                  | your\_api\_key       |

3. **Test Modu (Sandbox)**: Geliştirme/test için etkinleştirin
4. **Form Tipi**: Hosted (önerilen) veya Embedded
5. **Sipariş Durumu**: Başarılı/başarısız sipariş durumlarını ayarlayın
6. **Bağlantıyı Test Et** → Yeşil onay görünmeli → **Kaydet**

***

### 🔧 Ödeme Akışı

1. Müşteri sepette ürünleri inceler
2. Ödeme sayfasına geçer ve MorPOS seçer
3. Sistem sepeti doğrular ve sipariş oluşturur
4. Hosted: MorPOS sayfasına yönlendirilir
5. Embedded: Form sayfa içinde yüklenir
6. MorPOS’tan geri çağrı alınır → Sipariş durumu güncellenir
7. Müşteri başarı/başarısız sayfasını görür

***

### 🛠️ Hata Ayıklama

```php
// OpenCart 4.x
define('ERROR_LOG', '/path/to/your/error.log');
tail -f /path/to/your/error.log
```

* Test kartları ve sandbox modunu kullanın
* Ödeme akışlarını adım adım kontrol edin
* Sorun giderme tabloları: TLS, PHP, OpenCart sürümü

***

### 🌐 Uluslararasılaştırma

* Türkçe (tr-tr) ve İngilizce (en-gb)
* Yeni dil eklemek için dil dosyalarını kopyalayın ve çevirin

***

### 🤝 Katkıda Bulunma

1. Depoyu Fork → Değişiklik yap → Pull Request
2. Kodlama standartlarına uyun: PSR-4, PHPDoc
3. Test edin: Kurulum, ödeme akışları, çoklu para birimi, güvenlik, uyumluluk

***

### 📄 Lisans

MIT Lisansı - detaylar LICENSE

***

### 🆘 Destek

* [Dokümantasyon](https://docs.opencart.com/)
* [GitHub Issues](https://github.com/morpara/morpos-opencart/issues)
* [Morpara Destek](https://morpara.com/support)


# Prestashop

**PrestaShop için MorPOS**, **Morpara MorPOS** ödeme altyapısını PrestaShop mağazalarıyla entegre eden güvenli ve kullanımı kolay bir ödeme modülüdür.\
Müşterileriniz ödemelerini güvenli **Hosted Payment Page (HPP)** veya **Embedded** ödeme akışı ile tamamlar.

***

### 📥 Modülü İndir

PrestaShop için MorPOS modülünü aşağıdaki bağlantı üzerinden indirebilirsiniz:

👉 [**PrestaShop MorPOS Modülünü İndir**](https://github.com/morpara/morpos-prestashop/archive/refs/heads/main.zip)

> İndirme bağlantısı her zaman en güncel sürümü içerir.

***

### ✨ Özellikler

* 🛒 **PrestaShop Entegrasyonu**: MorPOS’u ödeme yöntemi olarak ekler
* 🔒 **Güvenli Ödeme**: Hosted Payment Page (HPP) ve Embedded form
* 💳 **Kartlı Ödemeler**: Kredi kartı ve banka kartı desteği
* 📆 **Taksitli Ödeme**: Banka ve kart bazlı taksit seçenekleri
* 🌍 **Çoklu Para Birimi**: TRY, USD, EUR, GBP
* 🧪 **Sandbox Modu**: Test ortamı desteği
* 🏬 **Multi-Store Desteği**: PrestaShop çoklu mağaza uyumu
* 🛡️ **Güvenlik**: TLS 1.2+, imzalı API iletişimi

***

### 📋 Gereksinimler

#### Sunucu Gereksinimleri

| Bileşen        | Minimum | Önerilen |
| -------------- | ------- | -------- |
| **PrestaShop** | 1.7.0   | 8.x      |
| **PHP**        | 7.4     | 8.2+     |
| **TLS**        | 1.2     | 1.3      |

#### PHP Uzantıları

* `cURL`
* `json`
* `hash`
* `openssl`

#### PrestaShop Gereksinimleri

* SSL sertifikası (üretim ortamı için zorunlu)
* Friendly URL açık olmalı
* Desteklenen para birimleri aktif olmalı

***

### 🚀 Kurulum

#### Yöntem 1: Modül Yöneticisi (Önerilen)

1. Modül ZIP dosyasını indirin
2. PrestaShop yönetici paneline girin
3. **Modüller → Modül Yöneticisi**
4. **Modül Yükle** butonuna tıklayın
5. ZIP dosyasını seçip yükleyin
6. **Yapılandır** butonuna tıklayın

***

#### Yöntem 2: Manuel Kurulum

1. ZIP dosyasını açın
2. `morposgateway` klasörünü `/modules/` dizinine kopyalayın
3. Yönetici panelinden modülü kurun

***

### ⚙️ Yapılandırma

#### Temel Ayarlar

**Modüller → Modül Yöneticisi → MorPOS → Yapılandır**

| Alan          | Açıklama              |
| ------------- | --------------------- |
| Merchant ID   | Üye işyeri kimliği    |
| Client ID     | OAuth istemci kimliği |
| Client Secret | OAuth gizli anahtarı  |
| API Key       | API erişim anahtarı   |

***

#### Ortam Ayarları

* **Test Modu**\
  Sandbox ortamını kullanır, gerçek işlem yapılmaz
* **Form Türü**
  * `Hosted` (önerilen)
  * `Embedded`

***

### 🔄 Ödeme Akışı

1. Müşteri sipariş oluşturur
2. MorPOS ödeme yöntemi seçilir
3. Sipariş doğrulaması yapılır
4. Ödeme formuna yönlendirilir
5. Ödeme tamamlanır
6. Callback alınır
7. Sipariş durumu güncellenir

***

### 🛠️ Geliştirme ve Hata Ayıklama

#### Loglama

PrestaShop loglarını kontrol edin:

* **Gelişmiş Parametreler → Loglar**
* **Gelişmiş Parametreler → Performans → Hata Ayıklama**

Geliştirme ortamı için:

```php
define('_PS_MODE_DEV_', true);
```

### 🔍 Sorun Giderme

#### "Ödeme başlatılamadı" Hatası

1. API bilgilerini kontrol edin
2. Test modunun doğru ortamda olduğundan emin olun
3. TLS 1.2+ desteğini doğrulayın
4. Sunucu saatinin doğru olduğundan emin olun
5. Log kayıtlarını inceleyin

***

#### Ödeme Durumu Güncellenmiyor

1. Callback URL’inin erişilebilir olduğunu kontrol edin
2. SSL sertifikasını doğrulayın
3. Friendly URL ayarlarını kontrol edin
4. Firewall / WAF engellemelerini inceleyin

***

### 🌐 Uluslararasılaştırma

* Türkçe (`tr_TR`)
* İngilizce (`en_US`)

***

### 🤝 Katkıda Bulunma

* Fork → Commit → Pull Request
* PrestaShop kodlama standartlarına uyum
* Geriye dönük sürüm uyumluluğu

***

### 📄 Lisans

MIT Lisansı

***

### 🆘 Destek

* Destek: <https://morpara.com/support>
* GitHub Issues
* Teknik dokümantasyon


# Magento 2

**MorPOS Payment Gateway for Magento 2**, Magento 2 tabanlı mağazalara **Morpara MorPOS** ödeme sistemini entegre eden güvenli, esnek ve kolay bir ödeme ağ geçididir.

***

#### 📥 Eklenti İndir <a href="#eklenti-indir" id="eklenti-indir"></a>

**MorPOS Magento 2 eklentisini aşağıdaki bağlantıdan indirebilirsiniz:**

[**Eklentiyi İndir**](https://github.com/morpara/morpos-magento2/archive/refs/heads/main.zip) ✅

### 🧠 Genel Özellikler

Modül aşağıdaki özellikleri içerir:

* Magento **2.2 ve üzeri** ile uyumlu
* Ortak Ödeme Sayfası&#x20;
* Gömülü Ödeme Formu ile kesintisiz ödeme
* Çoklu para birimi: **TRY, USD, EUR**
* Sandbox (test) modu
* Yönetici panelinden kolay yapılandırma
* Çoklu mağaza desteği
* Misafir & kayıtlı kullanıcılar için ödeme
* CSP (Content Security Policy) uyumlu
* API imzalama ve güvenlik özellikleri

***

### 📌 Gereksinimler

**Sunucu tarafı:**

* Magento: **2.2+**
* PHP: **7.2+** (8.1+ önerilir)
* TLS 1.2 veya üstü
* PHP eklentileri: `cURL`, `json`, `hash`, `openssl`

***

### ⚙️ Kurulum

#### 1) Composer ile (önerilen)

```bash
composer require morpara/morpos-magento2
php bin/magento module:enable MorPOS_PaymentGateway
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
php bin/magento cache:flush
```

#### 2) Manuel

1. ZIP dosyasını GitHub Releases sayfasından indirin
2. Modül klasörünü **app/code/MorPOS/PaymentGateway/** altına çıkartın
3. Etkinleştirme ve deployment komutlarını çalıştırın\
   → aynı adımlar Composer ile yapılan kurulumla eşleşir

#### 3) FTP ile

FTP ile modül dosyalarını `app/code/MorPOS/PaymentGateway/` dizinine yükleyin ve ardından terminalde Magento kurulum komutlarını çalıştırın.

***

### 🔧 Yapılandırma (Yönetici Paneli)

Yapılandırma için:

> **Mağazalar → Yapılandırma → Satış → Ödeme Yöntemleri → MorPOS Payment Gateway**

Gerekli alanlar:

| Ayar                     | Açıklama                               |
| ------------------------ | -------------------------------------- |
| Merchant ID              | MorPOS üye işyeri kimliği              |
| Client ID                | OAuth Client ID                        |
| Client Secret            | OAuth Client Secret                    |
| API Key                  | MorPOS API anahtarı                    |
| Test Modu                | Sandbox / Prod ayarı                   |
| Form Tipi                | HPP veya Gömülü form                   |
| Sipariş Durumu           | Başarılı ödeme sonrası sipariş statüsü |
| Minimum / Maksimum Tutar | Opsiyonel sınırlar                     |
| Ülkeler                  | Ödeme için izin verilen ülkeler        |
|                          |                                        |

👉 **Bilgileri nereden alırsınız?**\
MorPOS panelinden veya Morpara destek ekibi üzerinden temin edebilirsiniz.

***

### 🛒 Ödeme Akışı

1. Müşteri sepete ürün ekler
2. Ödeme adımında MorPOS yöntemi seçilir
3. Magento ödeme oturumunu MorPOS API ile başlatır
4. Müşteri ödeme sayfasına yönlendirilir veya modal içerisinde ödeme formu açılır
5. Ödeme tamamlanınca MorPOS mağazaya callback gönderir
6. Sipariş otomatik güncellenir
7. Müşteri sonuç ekranını görür

***

### 🔐 Güvenlik Özellikleri

Modül aşağıdaki güvenlik uygulamalarını içerir:

* SHA-256 imzalı API çağrıları (MorPOS Docs gerekliliği)
* Client Secret & API Key veritabanında şifreli tutulur
* CSP beyaz liste yapılandırması
* HTTPS zorunluluğu
* Hassas veriler loglanmaz

***

### 🧪 Test Kartları & Sandbox

Modül sandbox desteği içerir. Test kart numaraları ve örnek senaryolar için MorPOS dokümantasyonuna bakabilirsiniz.

***

### 🚑 Sorun Giderme

**Ödeme yöntemi görünmüyor?**

* Modül aktif mi?
* Desteklenen para birimi var mı?
* Ülke / sipariş tutarı kısıtlaması var mı?

**Ödeme başlatılamıyor?**

* Kimlik bilgileri doğru mu?
* TLS sürümü uygun mu?
* cURL yüklü mü?

**Callback sonrası sipariş güncellenmiyor?**

* Callback URL erişilebilir mi?
* Firewall / DNS engeli var mı?

***

### 🌍 Uluslararasılaştırma (i18n)

Modül Türkçe ve İngilizce çeviri dosyaları içerir. Yeni diller eklemek de mümkündür.

***

### 🧩 Modül Yapısı (Önemli Dizinler)

```
MorPOS/PaymentGateway/
├── Api/
├── Block/
├── Controller/
├── Gateway/
├── Helper/
├── Model/
├── Plugin/
├── etc/
├── i18n/
└── view/
```

***

### 📍 API Uç Noktaları

| Endpoint                 | Method | Kullanım             |
| ------------------------ | ------ | -------------------- |
| /morpos/payment/start    | POST   | Ödeme oturumu başlat |
| /morpos/payment/callback | POST   | MorPOS geri çağrısı  |
| /morpos/payment/success  | GET    | Başarı yönlendirme   |
| /morpos/payment/cancel   | GET    | İptal yönlendirme    |
|                          |        |                      |


