Ö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:
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
Yorum Gönder