Barındırılan ödeme

Ayarlar'da başvurun, onay bekleyin, ardından bir oturum oluşturun ve alıcıları RMT ödeme sayfasına yönlendirin. Sipariş ödendikten sonra yerine getirin. Onaylı ortaklar, kilitli miktarın %4'ünü öder.

Kendi mağazanızdan ödeme alın. RMT.GG, kayıtlı satıcıdır. Alıcıları RMT ödeme sayfasına göndermek için Satıcı API'sini kullanın.

Barındırılan ödemenin nasıl çalıştığı

RMT.GG kayıtlı satıcı olarak kalır. Partner mağazanız kilitli bir tutar ve para birimi gönderir. Alıcı bizim barındırılan sayfamızda ödeme yapar. Ödeme sonrası, mağazanızda teslimat yaparsınız. Siparişler otomatik olarak tamamlanır, böylece cüzdan uzlaşması çalışabilir.

  • Alıcı tam olarak gönderdiğiniz tutar ve para birimini öder. Biz bunu artırmıyoruz.
  • Satıcı ücretiniz o kilitli tutarın %4'üdür. Pazar yeri listeleme ücretleri genelde %5'tir.
  • Kart, PayPal ve kripto işleme ücretleri bu akışta platform tarafından karşılanır.

Beyaz liste gereklidir

Ayarlar, Barındırılan ödeme altında başvurun, ardından yönetici onayı bekleyin. Onaylanmamış API anahtarları CHECKOUT_PARTNER_NOT_APPROVED alır.

Başvurun ve onay alın

Onaylandıktan sonra, Hosted checkout ayarları sayfasında checkout:write ile bir API anahtarı ve checkout.completed için bir JSON webhook oluşturun. Onaylanana kadar, hosted checkout API'leri engelli kalır.

  1. 1Ayarlar → Barındırılan ödeme'yi açın ve mağaza URL'nizi ve ödeme yöntemini nasıl kullanacağınızı belirten kısa bir not gönderin.
  2. 2Bir yöneticinin onaylamasını bekleyin. O zamana kadar bekleyen bir rozet göreceksiniz.
  3. 3Onaylandıktan sonra, Ayarlar → Hosted checkout altında checkout.completed için bir API anahtarı ve bir JSON webhook oluşturun.

Satıcı API'si

Bunu herhangi bir mağazadan veya kendi sunucunuzdan kullanın. POST /api/v1/checkout/sessions ile bir oturum oluşturun. checkout:write ve bir Idempotency-Key gönderin. Alıcıyı hosted_url'ye yönlendirin. order.paid'i dinleyin, ardından mağazanızda yerine getirin.

Barındırılan ödeme oturumu oluşturun

bash
curl -X POST -H "Authorization: Bearer rmt_sk_live_…" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: inv-12345" \
  https://rmt.gg/api/v1/checkout/sessions \
  -d @session.json

oturum.json

javascript
{
  amount: 10, // required when items is omitted
  currency: "USD", // optional; defaults to USD
  itemName: "Gold pack", // required when items is omitted; alias title
  description: "1000 gold for account example", // optional
  imageUrl: "https://cdn.shop.example/gold.png", // optional, HTTPS only
  categorySlug: "games", // send with offering, or omit both
  offering: "Mods", // send with categorySlug
  email: "[email protected]", // optional
  returnUrl: "https://your-shop.example/thanks", // optional
  cancelUrl: "https://your-shop.example/cancel", // optional
  invoiceId: "12345" // optional
}

Opsiyonel teslimat ile birden fazla kilitli satır (session.json)

javascript
{
  currency: "USD",
  invoiceId: "12345", // optional
  items: [ // required when amount is omitted
    {
      name: "Gold pack", // required per line
      description: "1000 gold", // optional
      amount: 10, // required per line
      quantity: 1, // optional, default 1
      imageUrl: "https://cdn.shop.example/gold.png", // optional, HTTPS only
      delivery: [ // optional
        { name: "Code", type: "text", value: "XXXX-YYYY" } // name and value required; type is optional
      ]
    }
  ]
}
  • Tek bir ürün için miktar artı itemName (veya başlık) gönderin ya da boş olmayan bir items[] dizisi. Para birimi varsayılan olarak USD'dir. Opsiyonel alanlar: açıklama, HTTPS imageUrl, e-posta (ödeme sayfasını önceden doldurur), returnUrl, cancelUrl, invoiceId, categorySlug ve offering (her ikisini de gönderebilir veya hiçbiri). itemName, ödeme sayfasının başlığıdır; açıklama ise altında yer alan daha uzun metindir. Alıcı, ödeme yapmadan önce geçerli bir e-posta adresini onaylamalıdır. Ödeme sonrası alıcı, RMT.GG onay sayfasında kalır, böylece teslimat alanlarını kopyalayabilir. Eğer returnUrl ayarlarsanız ve teslimat alanları varsa, o ekrandan mağazanıza yönlendirilirler. Eğer yoksa, kısa bir geri sayımın ardından geri göndeririz. returnUrl veya cancelUrl'yi atlarsanız, alıcı ödeme, iptal veya sürenin dolmasından sonra RMT.GG ödeme sayfasında kalır.
  • Başarılı olduğunda, o URL HTTPS (veya localhost) olduğunda returnUrl'ye ?order= olarak sipariş uid'sini ekleriz.
  • Tekrar eden Idempotency-Key veya invoiceId değerleri aynı oturumu yeniden kullanır, kopya oluşturmaz.
  • itemName ve açıklama yalnızca RMT ödeme sayfasında görünür. Kart, PayPal ve kripto ödeme işlemleri, asla mağaza başlığınızı kullanmadan, Games · Add-ons gibi katalog kodlu etiketler kullanır. Ayarların altında, Hosted checkout kısmında varsayılan bir ayar belirleyin veya session'da categorySlug ve offering gönderin.
  • Oturumlar 24 saat sürer. Bunun ardından ödeme sayfası tamamlanamaz, devam eden Stripe ve PayPal oturumları kapatılır ve checkout.canceled'ı süresi dolmuş nedeni ile POST ederiz.
  • items[] tek bir miktar ve itemName gövdesinin çok satırlı alternatifidir. Her satırın adı ve miktarı gereklidir. items ile miktar atlanabilir ve satırlardan hesaplanır veya gönderdiğinizde toplamla eşleşmelidir. Miktar rmt.gg'de kilitlidir: alıcılar satır ekleyemez, çıkaramaz veya değiştiremez. imageUrl HTTPS olmalıdır; bunu almayız. İsteğe bağlı teslimat alanları (metin, şifre veya metin alanı) bir ad ve değer gerektirir. Ödeme sonrası onay sayfasında ve Satın Almalar'da gösterilir. Kamu oturumu GET, yalnızca ödeme sonrası teslimat değerlerini içerir. Satıcı GET ve webhook'lar asla bunları içermez.

Ödeme durumunu kontrol et

Öncelikle checkout.completed için dinleyin. Eğer bir webhook gecikirse, oturumu GET edin. Alıcı ödeme yaptığında paid true olur. Oturum uid'si veya gönderdiğiniz invoiceId ile arama yapabilirsiniz.

  • Oturum oluşturduğunuzda dönen uid ile GET /api/v1/checkout/sessions/{uid}.
  • Eğer kendi invoice id'nizi sakladıysanız, GET /api/v1/checkout/sessions?invoiceId=YOUR_INVOICE_ID.

Invoice id ile arama yap

bash
curl -H "Authorization: Bearer rmt_sk_live_…" \
  https://rmt.gg/api/v1/checkout/sessions?invoiceId=inv-12345

Digiseller ve benzeri mağazalar

Eğer Satıcı API'si ile checkout oluşturuyorsanız bunu atlayın. Mağazanız (örneğin Digiseller) alıcıyı buraya özel bir ödeme yöntemiyle gönderdiğinde kullanın. Digiseller, Ödeme URL'mize gönderir, ödemeyi alırız, ardından Digiseller Durum URL'sini kontrol eder.

  1. 1Ödeme URL'sini, Durum URL'sini ve ödeme gizlisini Ayarlar → Hosted checkout'tan kopyalayın.
  2. 2Bunları Digiseller'a özel bir ödeme yöntemi olarak yapıştırın. Gizliyi özel tutun.
  3. 3Digiseller daha sonra alıcıları ödemek için bize gönderir ve ödenmiş veya ödenmemiş için Durum URL'sini kontrol eder.
  • item_name (veya başlık) ödeme sayfasındaki başlıktır. açıklama ise altında daha uzun bir metindir. Eğer her iki isim de atlanırsa, açıklama başlık olarak kullanılır.

Digiseller'ın gönderdiği örnek istek

json
{
  "invoice_id": "12345",
  "amount": "10.00",
  "currency": "USD",
  "item_name": "Altın paketi",
  "description": "Hesap örneği için 1000 altın",
  "signature": "…"
}

JSON webhook tercih edin

Durum URL'si Digiseller içindir. Kendi sunucunuzdan yerine getiriyorsanız, bir JSON webhook ekleyin ve checkout.completed için dinleyin. Ayrıca yedek olarak oturumu GET edebilirsiniz.

JSON webhooks

Barındırılan ödeme, ayrı bir webhook API'si kullanmaz. Geliştirici altında, JSON HTTPS uç noktasını pazar satışlarıyla aynı olaylara yönlendirin. Ödeme sonrası order.paid POST ederiz. İade sonrası order.refunded POST ederiz. Satışı externalInvoiceId (faturaId'niz) veya partnerSessionUid ile eşleştirin.

order.paid yükü (barındırılan ödeme alanları)

json
{
  "id": "whd_…",
  "type": "order.paid",
  "created": "2026-08-14T12:00:00.000Z",
  "data": {
    "order": {
      "uid": "ord_…",
      "status": "ÖDENDİ",
      "partnerSessionUid": "…",
      "externalInvoiceId": "inv-12345",
      "partnerSource": "api"
    }
  }
}
  • source, Satıcı API oturumları için apidir.
  • İsteğe bağlı imzalama, X-RMT-Timestamp ve X-RMT-Signature kullanır. HMAC'ı diğer satıcı webhook'larıyla aynı şekilde doğrulayın.
  • checkout.canceled, alıcı ödeme sayfasını ödemeden terk ettiğinde buyer_canceled sebebini veya 24 saatlik oturum TTL'si dolduğunda expired sebebini içerir.
  • checkout.items kilitli satırları listeler (isim, açıklama, miktar, miktar, imageUrl). Teslimat değerleri asla webhook'larda yer almaz.

İki kez yerine getirmeyin

Digiseller ayrıca kendi ödeme geri çağrısını alır. Eğer checkout.completed için de dinliyorsanız, siparişi yalnızca bir kez yerine getirin. Satıcı API oturumları asla o Digiseller geri çağrısını göndermez.

Misafir e-posta ve makbuzlar

Alıcılar, makbuzu ve vergi faturasını gönderebilmemiz için ödeme sayfasında bir e-posta girmelidir. Eşleşen RMT hesapları, alıcıyı oturum açmadan eklenir.

  • E-posta zaten bir RMT hesabına ait ise, sipariş o hesabın Satın Alma bölümünde görünür. Ödeme sayfasında oturum açma çerezi ayarlanmaz.
  • Yeni bir e-posta, makbuzların ve daha sonraki oturum açmanın çalışabilmesi için hafif bir kullanıcı oluşturur.
  • Ödeme işlemini tamamlamak için e-posta gereklidir. Mağazanız hala checkout.completed olayını dinlemelidir.

Para birimleri ve limitler

USD veya EUR gibi desteklenen bir ISO para birimi kullanın. Kartla ödeme en iyi USD veya EUR ile çalışır. Sağlayıcı kabul ederse, diğer para birimleri için kripto ve PayPal hala çalışabilir.

Bu sürümde yok

Barındırılan ödeme sayfasında iframe SDK, özel ödeme sayfası alanı veya cüzdan bakiyesi yoktur. Alıcılar kart, PayPal veya kripto yönlendirme ödemesi kullanır.

Canlıya geçmeden önce

Staging kontrol listesi

Birim testleri ücretleri, HMAC ve yeniden kullanımı kapsar. Gerçek alıcılar göndermeden önce staging'de bu listeyi gözden geçirin.

  • Başvurun, bekleyen rozeti onaylayın, ardından bir yöneticinin onaylamasını sağlayın. Kimlik bilgileri yalnızca onaylandığında görünür. POST /api/v1/checkout/sessions'da onaylanmamış bir anahtar 403 döner.
  • itemName, açıklama ve categorySlug ile bir oturum oluşturun, ayrıca bir teklif (veya kaydedilmiş varsayılan). hosted_url'yi açın. Başlık, ürün adıdır; açıklama altında yer alır. Ödeme sayfasında üst navigasyon veya yan çubuk yoktur. USD veya EUR ile kartla ödeme yapın. Kart, PayPal ve kripto sayfaları, dükkan başlığınız yerine Oyunlar · Ek Paketler gibi bir katalog etiketi göstermelidir.
  • checkout.completed'in invoiceId, checkout.uid ve source içerdiğini onaylayın, ardından mağazanızda yerine getirin. Ödeme sayfasını iptal edin ve buyer_canceled sebebiyle checkout.canceled'ı onaylayın. Bir oturumun 24 saati geçmesine izin verin ve expired sebebiyle checkout.canceled'ı onaylayın, bu durumda hala ödeme yapılamaz.
  • Digiseller için, Ödeme URL'sini, Durum URL'sini ve ödeme gizlisini özel bir ödeme yöntemine yapıştırın. Digiseller'ın ödenmiş durumunu görebildiğinden emin olun ve siparişi yalnızca bir kez yerine getirin.
  • Mevcut bir RMT e-posta ile ödeme yapın: sipariş Alımlar kısmına düşer ve bir makbuz gönderilir, oturum açma çerezi olmadan. Yeni bir e-posta, hafif bir kullanıcı oluşturur. Ödeme sayfasında e-posta gereklidir.
  • Gizli sentetik teklif, pazar aramasında görünmemelidir. Bekleme listesi ile sınırlı bir ana bilgisayarda, /pay/:uid ve adaptör yolları hala çalışır.
  • Ürün resmi veya birden fazla kilitli satır gerekiyorsa isteğe bağlı imageUrl ve items[] gönderin. Ödeme sayfasında miktar kontrollerinin olmadığını onaylayın. Ödemeden sonra, teslimat alanları Satın Almalar ve sipariş sayfasında görünür. Sadece HTTPS resim URL'leri.

İlgili kılavuzlar

Barındırılan ödeme için başvurun

Ayarlar → Barındırılan ödeme'yi açarak başvurun veya onaylandıktan sonra API referansına atlayın.