E-ticaret

Dijital ürün mağazaları için kripto ödemeleri

Anahtar, hesap, indirme ve abonelik satan bir mağaza kriptoyu nasıl kabul eder: teslimat akışı, kısmi ödemeler, tekrarlanan webhook'lar ve müşterilere ne vaat edilmeli.

Lisans anahtarı, oyun hesabı, indirme veya erişim satan bir mağazanın alışılmadık bir özelliği vardır: ürün, para ulaştığı anda aracı olmadan teslim edilir. Kripto tam da bu yüzden uygundur ve ödeme akışının ayrıntıları da tam bu yüzden önemlidir. Bu rehber nelerin değiştiğini, teslimatı ödeme durumuna nasıl bağlayacağınızı ve dijital mağazaların stok kaybetmesine yol açan hataları anlatıyor.

Dijital ürünler ve kripto neden birbirine uyar

Dijital ürünlerin üç özelliği kripto ödemelerinin işleyişiyle örtüşür:

  • Teslimat anında olduğu için ödeme de anında olmalıdır. Anahtarını bekleyen müşteri, bankanın ödemeyi sonuçlandırmasını beklemek istemez. Kripto ödemesi ağ onayladığında kesinleşir ve sisteminiz hemen teslim edebilir.
  • Hedef kitle zaten orada. Yazılım anahtarı, oyun içi eşya, VPN erişimi, barındırma ve benzeri ürünleri alanlar çoğunlukla stablecoin tutar ve onlarla ödemeyi tercih eder; pazarınızdaki kartların çalışmadığı ülkelerdeki müşteriler de buna dahildir.
  • Kart geri ödeme talepleri (chargeback) yoktur. Kripto transferini gönderen geri alamaz. Ucuz, anında teslim edilen ürünlerde itiraz edilen kart ödemelerinden zarar görmüş bir mağaza için bu gerçek bir değişikliktir. Aynı zamanda iade, sizin vereceğiniz bir karar ve sizin göndereceğiniz bir transfer demektir; bu yüzden yayına almadan önce iade politikanızı yazın.

Fiyatlandırma basit kalır: fiyatı ABD doları olarak belirlersiniz, müşteri de ödeme sayfasında seçtiği varlık ve ağda karşılığını öder.

Sepetten teslim edilen ürüne giden akış

Bir siparişin izlediği yol şöyledir:

  1. Müşteri bir ürün ekler ve e-posta adresini girer (veya oturum açar).
  2. Ödeme adımında «Kriptoyla öde» seçeneğini seçer. Sunucunuz sipariş için bir ödeme oluşturur ve barındırılan ödeme sayfasına bir bağlantı alır.
  3. Müşteriyi o sayfaya yönlendirirsiniz. Bir varlık ve ağ seçer, tam tutarı kendi cüzdanından öder.
  4. Ödeme tamamlandığında ağ geçidi webhook'unuzu çağırır.
  5. Sunucunuz siparişi ödendi olarak işaretler, bir anahtar alır veya erişim verir; bunu e-postayla gönderir ve sipariş sayfasında gösterir.

Mağazanız hiçbir zaman adres üretmez, blok zincirini izlemez, tutarları karşılaştırmaz. İki şey yapar: ödeme oluşturur ve son duruma tepki verir. Kodlu, adım adım anlatım bir web sitesinde kripto ödemesi nasıl kabul edilir yazısında yer alır.

Ödemeyi kendi sipariş numaranızla oluşturun

Ödemeyi arka ucunuzdan https://api.qvard.com/api/v1/payment adresine tek bir POST ile oluşturun. İstekte anahtarınız Authorization: Bearer başlığında gider; JSON gövdesinde ise sipariş numaranız id olarak, ABD doları cinsinden tutar price olarak ve sayfanın belirli bir varlık ve ağ seçili olarak açılmasını istiyorsanız isteğe bağlı paymentSystemId yer alır. Yanıt, redirectUrl içeren 201 olarak döner.

Ödemeden önce sisteminizde var olan bir sipariş numarası kullanın; her satın alma için bir tane. İstek zaman aşımına uğrarsa ve aynı ödeme yöntemi için aynı id ile yeniden gönderirseniz ikinci bir ödeme yerine mevcut ödemeyi alırsınız, yani yeniden denemek güvenlidir.

Ödemeyi sepet kurulurken değil, müşteri ödeme düğmesine bastıktan sonra oluşturun. Aksi halde terk edilen sepetler, ödenmemiş ödemelerden oluşan bir yığın olarak görünür.

Yalnızca tam ödemede ve yalnızca bir kez teslim edin

Stokunuzu koruyan kural budur. Bir ödemenin dört durumu vardır: wait (oluşturuldu), partial (müşteri gerekenden az gönderdi), completed (tam tutar ulaştı) ve rejected. Qvard, bir ödeme tamamlandığında gönderdiğiniz id ve status ile webhook'unuzu çağırır.

Bundan işleyiciniz için iki gereklilik çıkar:

  • Yalnızca completed durumunda hareket edin. Müşteri sitenize döndü diye ya da kısmi bir tutar geldiğinde asla anahtar vermeyin. Ödemenin kanıtı tarayıcı değil, webhook'tur.
  • İdempotent olun. Webhook, uç noktanız tam olarak HTTP 200 yanıtlayana kadar yeniden denenir (yaklaşık altı dakikada beş deneme) ve bir yeniden deneme, ilki başarılı olduktan sonra da gelebilir. Anahtarı verme ve siparişi «teslim edildi» olarak işaretleme adımlarını tek bir veritabanı işleminde (transaction) yapın ve zaten teslim edilmiş siparişleri atlayın. Aksi halde tek bir ödeme size iki anahtara mal olabilir.

Her webhook'un X-Qvard-Signature imzasını doğrulayın: gizli anahtarınızla HMAC-SHA256, sabit zamanlı karşılaştırmayla; eşleşmeyenleri reddedin. Daha fazla bilgi için kripto ödeme webhook'ları nasıl güvenli hale getirilir yazısında.

Node.jsdeliver.js
// Called from the Qvard webhook handler after the X-Qvard-Signature check.
async function onQvardEvent({ id, status }) {
  const order = await db.orders.findById(id);
  if (!order) return;                          // unknown order: ignore

  if (status !== 'completed') return;          // deliver only on a full payment
  if (order.deliveredAt) return;               // the webhook can arrive twice

  // One transaction: take a key and mark the order, so a retry cannot take a second key.
  await db.transaction(async (tx) => {
    const key = await tx.licenseKeys.takeFree(order.productId);
    await tx.orders.update(order.id, { state: 'paid', deliveredAt: new Date(), keyId: key.id });
    await mailer.send(order.email, 'Your purchase', 'Key: ' + key.value);
  });
}

Müşteriye ne olduğunu gösterin

Ödeme sonrası dönüş URL'leri henüz yok; bu yüzden ödeme yapan müşteri siteye kendi başına döner, çoğu zaman webhook'unuz işlenmeden birkaç saniye önce. Bu ana hazırlıklı olun:

  • Her siparişe güncel durumu gösteren bir sayfa verin: ödeme bekleniyor, ödendi ve teslim edildi veya bir sorun.
  • Durum «bekleniyor» iken sayfa kendini yenilesin; anahtar, müşteri sayfayı yeniden yüklemeden görünsün.
  • Anahtarı e-postayla da gönderin. İnsanlar sekmeleri kapatır, sonradan arayacakları kopya e-postadır.
  • Sipariş henüz ödendi olarak işaretlenmediyse bunu açıkça söyleyin ve müşteriden iki kez ödememesini isteyin.

Dijital mağazalardaki destek taleplerinin çoğu «ödedim ama hiçbir şey almadım» şeklindedir. Bunları en çok azaltan şey, durum sayfası ve e-postadır.

Eksik ödeme ve süresi dolmuş siparişler

Kripto müşterileri bazen gerekenden biraz az gönderir; çünkü bir borsanın çekim ücreti tutardan düşülmüştür veya planladıklarından geç öderler. Bunun olmasından önce ne yapacağınıza karar verin.

  • Kısmi ödeme. Durum partial. Teslim etmeyin. Genellikle ya sipariş açık tutulup müşteriden kalanı göndermesi istenir ya da iade edilip iptal edilir. Birini seçin ve sipariş sayfasında müşteriye bildirin.
  • Kur ve süre. Ödeme sayfasındaki kur bir saat sabittir, yani müşteri öderken tutar değişmez. Siparişin stokunu en az o kadar süre ayırın, sipariş hiç ödenmezse serbest bırakın.
  • Sınırlı stok. Tek bir anahtar kaldıysa ödeme oluşturulurken ayırın, süre dolunca serbest bırakın; yoksa iki müşteri aynı anahtar için ödeme yapabilir.

Mantığı küçük tutun. Tam olarak üç sonucu olan (ödendi, kısmi, ödenmedi) bir mağaza, bir düzine özel durumu olan bir mağazadan daha kolay yönetilir.

Müşterilere ne söylenmeli

Net bir ödeme sayfası, kurnaz bir sayfadan daha iyi dönüşüm sağlar. Düğmenin yanında şunları belirtin:

  • hangi varlık ve ağları kabul ettiğinizi (desteklenen paralar sayfasına bakın) ve müşterinin ödeme sayfasında seçtiği ağda ödemesi gerektiğini;
  • ödeme tamamlandıktan sonra teslimatın otomatik olduğunu ve anahtarın nerede görüneceğini;
  • iade kuralınızı tek cümleyle, çünkü müşteri kripto ödemesini geri alamaz.

Fiyatı dolar olarak da belirtin ve seçilen varlıktaki kesin tutarı ödeme sayfası göstersin. Ürün sayfasında kripto tutarını kendiniz yazmayın; kurla birlikte değişir.

Qvard'da bugün neler hazır, neler değil

Neyi entegre ettiğiniz konusunda gerçekçi olun. Qvard API üzerinden çalışır: mağazanız ödemeyi oluşturur ve webhook'u alır. Mağaza platformları için hazır bir eklenti henüz yok, ödeme bağlantıları ve ayrı bir sandbox geliştirme aşamasında, müşteriler ödeme sonrası siteye kendi başlarına döner. Geliştiricisi olan ya da bir serbest çalışanın bir saatlik emeğini karşılayabilen bir mağaza için bu küçük bir kod parçasıdır. Geliştirici belgelerine ve entegrasyonlara genel bakışa göz atın, müşterinizin ne göreceğini görmek için bir demo faturaya bakın.

Para tarafında, fonlar Qvard bakiyenizde durur ve kendi cüzdanınıza çekersiniz; çekimde yalnızca ağ ücretini ödersiniz, abonelik ücreti yoktur. Banka hesabına fiat para çekimi mümkün değildir.

FAQ

Kripto ödemesinden sonra ürünü otomatik teslim edebilir miyim?

Evet. Qvard ödeme tamamlandığında webhook'unuzu çağırır; sunucunuz bir anahtar alabilir veya erişim verebilir, ardından bunu müşteriye iletebilir. Yalnızca completed durumunda teslim edin ve işleyicinin iki kez çalışması sorun yaratmasın.

Müşteri tam tutardan az gönderirse ne olur?

Ödeme partial durumuna geçer ve tamamlanma webhook'u gönderilmez. Teslim etmeyin. Politikanıza göre müşteriden kalanı göndermesini isteyin veya iade edin.

Kripto ödemelerinde chargeback olur mu?

Hayır. Kripto transferini gönderen geri alamaz. Bu sizi itiraz edilen kart ödemelerinden korur, ama iadeleri sizin göndermeniz demektir; bu yüzden baştan bir iade politikası belirleyin.

Fiyatları dolar olarak belirleyebilir miyim?

Evet, fiyat ABD doları olarak belirlenir. Müşteri, ödeme sayfasında seçtiği varlık ve ağdaki karşılığını bir saat boyunca sabit tutulan kurla öder.

Mağaza platformum için eklenti var mı?

Henüz yok. Bugün entegrasyon API üzerinden yapılır: ödeme oluşturmak için bir istek ve sonucu almak için bir webhook.

İlgili makaleler

İlgili makaleler