Ana içeriğe atla

Ödeme Eklentisi Nasıl Yazılır

 

Ödeme Eklentisi Nasıl Yazılır


Ödeme sağlayıcısı bir ödeme eklentisinin en önemli parçasıdır ve bir ödeme yönteminin ana işlevlerini yerine getirir. Bir eklenti herhangi bir sayıda ödeme sağlayıcısı ve dolayısıyla herhangi bir sayıda ödeme yöntemi içerebilir. Sağlayıcı PaymentMethodBase sınıfından ve isteğe bağlı olarak IConfigurable sınıfından miras almalıdır. Sağlayıcıyı gerekli niteliklerle süsleyin:

  • SystemName: Sağlayıcının sistem adı.
  • FriendlyName: Sağlayıcının açıklayıcı adı.
  • DisplayOrder: Ödeme yöntemi listelerindeki görüntüleme sırası.
  • DependentWidgets: İsteğe bağlı. Ödeme yöntemi etkinleştirildiğinde\devre dışı bırakıldığında etkinleştirilmesi\devre dışı bırakılması gereken bir widget'ın sistem adı.

Example:

1
2
3
4
5
[SystemName("Payments.PayoneCreditCard")]
[FriendlyName("Payone credit card")]
[DisplayOrder(10)]
[DependentWidgets("Widgets.Payone")]
public class CreditCardProvider : PaymentMethodBase

PaymentMethodBase'in özelliklerini ve yöntemlerini geçersiz kılarak ödeme yönteminizin temel uygulamasını geliştirin. 

PaymentMethodBase'in Özellikleri

  • RequiresInteraction: Ödeme yönteminin ödeme işlemine devam etmeden önce kullanıcı girişi gerektirip gerektirmediğini belirten bir değer döndürür (örn. kredi kartı ödemesi).
  • PaymentMethodType: Ödeme yönteminize en uygun türü seçin. Aşağıdaki değerlere bakın.
  • IsActive: Ödeme yönteminin etkin olup olmadığına (ödeme ödeme listesinde görüntülenip görüntülenmediğine) ilişkin bir değer alır. Genellikle lisans kontrolleri için kullanılır.
  • SupportCapture: Ödeme yakalamanın desteklenip desteklenmediğini gösteren bir değer döndürür. True ise, Capture yönteminin üzerine yazmanız gerekir.
  • SupportPartiallyRefund: Kısmi geri ödemelerin desteklenip desteklenmediğini gösteren bir değer döndürür. True ise, Refund yönteminin üzerine yazmanız gerekir.
  • SupportRefund: Geri ödemelerin desteklenip desteklenmediğini gösteren bir değer döndürür. True ise, Refund yönteminin üzerine yazmanız gerekir.
  • SupportVoid: Sağlayıcının ödeme iptalini destekleyip desteklemediğini gösteren bir değer döndürür. Eğer true ise, Void metodunun üzerine yazmalısınız.

PaymentMethodType Değerleri

  • Unknown: Type bilinmiyor.
  • Standard: Tüm ödeme verileri mağazaya girilir, örneğin tüm verilerin kasada girildiği kredi kartı ödemesi.
  • Redirection: Müşteri, ödeme amacıyla sipariş verildikten sonra ödeme sağlayıcısının bir sayfasına yönlendirilecektir.
  • Button: Ödeme işlemi, ödeme sayfasındaki bir düğme aracılığıyla başlatılır.
  • StandardAndButton: Ödeme işlemi, ödeme sayfasındaki bir düğme aracılığıyla başlatılır ve tüm ödeme verileri mağazaya girilir.
  • StandardAndRedirection: Nadir özel durum. Ödeme bilgileri ödeme sırasında girilir ve sipariş verildikten sonra müşteri ödemeyi tamamlamak için yönlendirilir (örn. 3D Secure).

PaymentMethodBase Methodu

  • GetControllerType: Ödeme denetleyicisinin türü (aşağıya bakın). Örneğin typeof(PayoneCreditCardController)
  • GetAdditionalHandlingFee : İsteğe bağlı olarak, ödeme yöntemini işlemek için ek ücretler alır.
  • CanRePostProcessPayment : Yalnızca Redirection ve StandardAndRedirection türleri için geçerlidir . Müşteri tarafından sipariş detay sayfasında bir butona basarak ödeme işleminin yeniden başlatılıp başlatılamayacağını gösteren bir değer alır.
  • GetPaymentInfoRoute : Ödeme ödeme listesinde görüntülenen ödeme bilgilerini sağlayan kısmi bir görünüme yol değerleri alır.
  • PreProcessPayment : Bir sipariş verilirken, ancak sipariş nesnesi oluşturulup veritabanına kaydedilmeden önce çağrılır. Genellikle, ödeme ağ geçidi sipariş iptaline yol açan bir hata bildirdiğinde ön provizyon için kullanılır.
  • ProcessPayment : PreProcessPayment ile aynıdır ancak biraz sonra, sipariş nesnesi oluşturulmadan hemen önce çağrılır. Sipariş verme işlemi yine de burada bir hata döndürülerek iptal edilebilir. Döndürülen nesne ProcessPaymentResult, geçerli ödeme durumuna ayarlanması gereken bir NewPaymentStatus özelliği içerir; örneğin , ödeme şu anda tamamlanmış olarak kabul edilebiliyorsa PaymentStatus.Paid . Aşağıdaki değerlere bakın.
  • PostProcessPayment : Bir sipariş verildikten sonra çağrılır. Genellikle, sipariş tanımlayıcısı gibi sipariş nesnesinin verileri gerektiğinde kullanılır. Ödeme yöntemi yeniden yönlendirme gerektiriyorsa ( Redirection veya StandardAndRedirection yazın ), bu yöntem yönlendirmek istediğiniz URL'yi sağlamalıdır.

PaymentStatus Değerleri

  • Authorized (beklemede) : Henüz başka durum bilgisi mevcut değilse, ilk ödeme durumu.
  • Authorized (yetkili) : Ödeme, ödeme ağ geçidi tarafından yetkilendirildi (ancak yürütülmedi).
  • Paid(ödendi) : Ödeme, ödeme ağ geçidinde gerçekleştirildi. Bu, ödenen tutarın mutlaka satıcının hesabına alacak kaydedildiği anlamına gelmez.
  • PartiallyRefunded (kısmen iade edildi): Ödenen miktar kısmen iade edildi.
  • Refunded (iade edildi) : Ödenen tutarın tamamı iade edildi.
  • Voided (iptal edildi) : Ödeme iptal edildi.

Bir ödeme denetleyicisi oluşturun (payment controller)

PaymentControllerBase öğesinden devralın . Ödeme ödeme listesinde görüntülenen ödeme yönteminizle ilgili bilgileri içeren kısmi bir görünüm döndüren bir eylem yöntemi PaymentInfo ekleyin. İsteğe bağlı (gerekirse): Ödeme yönteminizin ödeme ağ geçidi için uç noktalar ekleyin. Örneğin IPN (anlık ödeme bildirimi) burada ele alınmalıdır.

PaymentControllerBase Yöntemleri

  • ValidatePaymentForm : Müşteri tarafından ödeme sırasında girilen form verilerini, örneğin bir kredi kartı numarasını doğrulamak için kullanılır.
  • GetPaymentInfo : Ödeme sırasında müşteri tarafından girilen verileri geçici olarak depolamak için kullanımdan kaldırılan yöntem. Ödeme sırasında oturum tabanlı veri depolamaya ihtiyacınız varsa HttpContextBase.GetCheckoutState().CustomProperties kullanın .
  • GetPaymentSummary : İsteğe bağlı. Ödeme sırasında müşteri tarafından girilen verilerin kısa özeti olarak bir dize döndürür.
  • PaymentInfo : Ödeme ödeme listesinde görüntülenen ödeme yönteminizle ilgili bilgilerle kısmi bir görünüm döndüren eylem yöntemi.

İpuçları & Hileler

Ödeme ağ geçidiyle yaptığınız her veri alışverişi için sipariş notları ekleyin. Bu, satıcının ödeme sağlayıcısıyla hangi verilerin ne zaman değiş tokuş edildiğini izlemesine olanak tanır.

Ödeme ağ geçidi ile veri alışverişi yaparken oluşan tüm hataları (ayrıntılı olarak) günlüğe kaydedin. Bu bilgi, ödeme sağlayıcısının desteğinin bir ödeme sorununun nedenini belirlemesini kolaylaştırır.

İsteğe bağlı olarak ödeme tanımlayıcılarını sipariş düzeyinde saklayın ve kullanın:

  • AuthorizationTransactionId : Ödeme sağlayıcının yetkilendirme nesnesinin tanımlayıcısı.
  • AuthorizationTransactionCode : Yetkilendirme bağlamında ek bir alan, örneğin ödeme sağlayıcısının yetkilendirme sonuç kodu.
  • AuthorizationTransactionResult : Yetki bağlamında ek bir alan, örneğin Open gibi kısa bir durum mesajı .
  • CaptureTransactionId : Ödeme sağlayıcısının yakalama nesnesinin tanımlayıcısı.
  • CaptureTransactionResult : Yakalama bağlamında ek bir alan, örneğin Completed gibi kısa bir durum mesajı .

Bu tanımlayıcılar, arka uçtaki sipariş sayfasında görüntülenir, ancak SmartStore.NET tarafından daha fazla işlenmez veya başka bir şekilde kullanılmaz.

Ödeme ağ geçidinden aldığınız her IPN (anında ödeme bildirimi) için sipariş notları ekleyin. Yeni bir IPN alırsanız sipariş varlığının HasNewPaymentNotification değerini true olarak ayarlayın . Sipariş listesinde, bu sipariş için yeni bir IPN alındığını gösteren küçük bir bilgi rozeti görünür.

Gerekirse, bir sipariş için fazladan ödeme verilerini depolamak üzere GenericAttribute varlığını ( KeyGroup , Order olarak ayarlı olarak ) kullanın. Bu durumda ödeme verileri genellikle JSON serileştirilir

 


Yorumlar

Bu blogdaki popüler yayınlar

NopCommerce SQLite Backup and Restore

        /// <summary>         /// Creates a backup of the database          /// </summary>         public virtual Task BackupDatabaseAsync(string fileName)         {             try             {                 var backup = new SqliteConnection($"Data Source={fileName}");                 var dbConnection = new SqliteConnection(DataSettingsManager.LoadSettings().ConnectionString);                 dbConnection.Open();                 dbConnection.BackupDatabase(backup);                 //SqliteConnection.ClearPool(dbConnection);                 dbConnection.Close();   ...

ASP.NET Core Structure

 Elbette, FileCacheHelper ve ICacheFactory 'nin önbellek yöntemlerini kullanarak, bellek içi (memory cache) ve dosya tabanlı (file cache) önbellek yöntemleri arasında parametreye bağlı olarak dinamik geçiş yapabileceğiniz bir yapı oluşturabiliriz. Adımlar PageObjectSettings Sınıfı: Bu sınıf, hangi önbellek yönteminin kullanılacağını belirleyen bir parametre içerecek. CacheHelper: CacheHelper sınıfı, belirli bir önbellek yöntemine göre veriyi getiren bir metot içerecek. CacheFactory ve FileCacheHelper: İlgili önbellek yöneticileri. Örnek Kod 1. PageObjectSettings Sınıfı csharp Kodu kopyala public class PageObjectSettings { public bool UseMemoryCache { get ; set ; } } 2. CacheHelper Sınıfı csharp Kodu kopyala public class CacheHelper { private readonly ICacheFactory _cacheFactory; private readonly FileCacheHelper _fileCacheHelper; private readonly PageObjectSettings _settings; public CacheHelper ( ICacheFactory cacheFactory, FileCacheHelper fil...

SMARTSTORE NOTLARI

 UseSmallProductBoxOnHomePage -> Ana sayfada küçük ürün kutusu kullanın HideBuyButtonInLists DisableBuyButton cart kapatma: iki ayarı var  ShoppingCartSettings.MiniShoppingCartEnabled = true olması lazım ve acces shopping card false; ayrıca açmak için display prices true olmalı fiyat olmadan sepet çalışmaz.                                                                                          Ürünleri Karşılaştır hesabım alanındaki siparişleri gizleme altına indirilebilir ürünler  ve stok ürünler menüsü  ANASAYFADA GÖSTER PRODUCT VE CATEGORYLER GİZLEME ÜRÜNLER VE KATEGORİLER TEK TEK....  fiyattaki kazancınız göster ShowRetailPriceSaving Karşılaştır Kapatma UZUN METİNLER KISILIYOR SAYFALA...