Jump to content

Extension:DonationInterface

From mediawiki.org
This page is a translated version of the page Extension:DonationInterface and the translation is 100% complete.
MediaWiki manüel uzantıları
DonationInterface
Sürüm durumu: kararlı
Uygulama Özel sayfa
Açıklama Ödemeleri toplamak için para toplama mekanizmaları sağlar
Yazar(lar) Elliott Eggleston, Maggie Epps, Dylan Kozlowski. inactive: Casey Dentinger, Katie Horn, Adam Roses Wight, Matt Walker, Ryan Kaldari, Sherah Smith
En son sürüm 2.1.0
Uyumluluk politikası Master, geriye dönük uyumluluğu korur.
MediaWiki >= 1.39
Composer wikimedia/donation-interface
Lisans GNU Genel Kamu Lisansı 2.0 veya üstü
İndir
  • $wgDonationInterfaceMinFraudAlarmLimit
  • $wgDonationInterfaceEmployersListDataFileLocation
  • $wgDonationInterfaceEnableMinFraud
  • $wgDonationInterfaceEnableIPVelocityFilter
  • $wgDonationInterfaceDlocalStreetNumberLengthRequirements
  • $wgDonationInterfaceSessionVelocity_HitScore
  • $wgDonationInterfaceChooserProblemURL
  • $wgDonationInterfaceVariantConfigurationDirectory
  • $wgDonationInterfaceDefaultAppeal
  • $wgDonationInterfaceFallbackCurrencyByCountry
  • $wgDonationInterfaceCurlVerboseLog
  • $wgDonationInterfaceIPDenyFailScore
  • $wgDonationInterfaceDlocalPostalCodeLengthRequirements
  • $wgDonationInterfaceTest
  • $wgDonationInterfaceLogClientErrors
  • $wgDonationInterfaceTaxDedCountries
  • $wgDonationInterfaceSalt
  • $wgDonationInterfaceClientErrorLogIgnorePatterns
  • $wgDonationInterfaceMajorGiftsEmail
  • $wgPaypalExpressGatewayTestingSignatureURL
  • $wgDonationInterfaceIPVelocityFailScore
  • $wgDonationInterfaceEnableGatewayChooser
  • $wgDonationInterfaceMonthlyConvertCountries
  • $wgDonationInterfaceCustomFiltersRiskScore
  • $wgDonationInterfaceMinFraudLicenseKey
  • $wgDonationInterfaceEnableBannerHistoryLog
  • $wgDonationInterfaceSurnameFirstCountries
  • $wgAmazonGatewayLoginScript
  • $wgDonationInterfaceMinFraudWeight
  • $wgGravyGatewayEnabled
  • $wgDonationInterfaceMinFraudAccountId
  • $wgDonationInterfaceUseSyslog
  • $wgDonationInterfaceHeader
  • $wgDonationInterfaceEmailFormHelpEmail
  • $wgDonationInterfaceDisplayDebug
  • $wgDonationInterfaceRecurringUpgradeMaxUSD
  • $wgDonationInterfaceFundraiserMaintenance
  • $wgDonationInterfaceRecurringUpgradeOptions
  • $wgDonationInterfaceMonthlyConvertDefaultModule
  • $wgDonationInterfaceEmailPreferencesSnoozeDays
  • $wgDonationInterfaceEmailPreferencesLanguages
  • $wgDonationInterfaceCancelPage
  • $wgDonationInterfaceEnableFunctionsFilter
  • $wgDonationInterfaceNotifyOnConvert
  • $wgDonationInterfaceEmailPreferencesCountries
  • $wgDonationInterfaceAppealWikiTemplate
  • $wgIngenicoGatewayEnabled
  • $wgDonationInterfaceMonthlyConvertAmounts
  • $wgDonationInterfaceCiviproxyURLBase
  • $wgDonationInterfaceSaveCommStats
  • $wgDonationInterfaceGatewayAdapters
  • $wgDonationInterfaceGeoIpDbPath
  • $wgBraintreeGatewayEnabled
  • $wgDonationInterfaceLocalConfigurationDirectory
  • $wgDonationInterfaceCustomFiltersRefRules
  • $wgDonationInterfaceEnableSystemStatus
  • $wgDonationInterfaceEnableSessionVelocityFilter
  • $wgDonationInterfaceEnableSourceFilter
  • $wgDonationInterfaceEnableReferrerFilter
  • $wgDonationInterfaceSendOptInOnFailure
  • $wgDonationInterfaceEmailDomainMap
  • $wgDonationInterfaceForbiddenCountries
  • $wgDonationInterfaceIPVelocityThreshhold
  • $wgDonationInterfaceRecurringDonateURL
  • $wgDonationInterfaceEnableCustomFilters
  • $wgDonationInterfaceSessionVelocity_Multiplier
  • $wgDonationInterfaceFailPage
  • $wgAmazonGatewayEnabled
  • $wgDonationInterfaceIPVelocityTimeout
  • $wgDonationInterfaceTaxURL
  • $wgPaypalExpressGatewayEnabled
  • $wgDonationInterfaceProblemsURL
  • $wgAdyenCheckoutGatewayEnabled
  • $wgDonationInterfaceUtmMediumMap
  • $wgDonationInterfaceTimeout
  • $wgDonationInterfaceMinFraudErrorScore
  • $wgDonationInterfaceRetryLoopCount
  • $wgDonationInterface3DSRules
  • $wgDonationInterfaceNameFilterRules
  • $wgDonationInterfaceDefaultEmail
  • $wgDonationInterfaceUtmCampaignMap
  • $wgDonationInterfaceUtmSourceMap
  • $wgDonationInterfaceCountryMap
  • $wgDonationInterfaceSessionVelocity_Threshold
  • $wgDonationInterfaceLogoOverride
  • $wgDonationInterfaceSessionVelocity_DecayRate
  • $wgDonationInterfaceCustomFiltersInitialFunctions
  • $wgDonationInterfaceMessageSourceType
  • $wgDonationInterfaceCustomFiltersFunctions
  • $wgDonationInterfaceFallbackCurrency
  • $wgDonationInterfacePolicyURL
  • $wgPaypalExpressGatewaySignatureURL
  • $wgDonationInterfaceMinFraudExtraFields
  • $wgDonationInterfaceMinFraudClientOptions
  • $wgDonationInterfaceOtherWaysURL
  • $wgDonationInterfaceCustomFiltersActionRanges
  • $wgPaypalExpressGatewayTestingCertificateURL
  • $wgDonationInterfaceLogCompleted
  • $wgDonationInterfaceCustomFiltersSrcRules
  • $wgPaypalExpressGatewayCertificateURL
  • $wgDlocalGatewayEnabled
  • $wgDonationInterfaceDlocalStreetLengthRequirements
  • $wgDonationInterfaceGatewayPriorityRules
  • $wgDonationInterfaceEnableConversionLog
  • $wgDonationInterfaceThankYouPage
  • $wgDonationInterfaceProblemsEmail
  • $wgIngenicoGatewayHostedFormVariants
  • $wgDonationInterfaceNoScriptRedirect
  • $wgDonationInterfaceFaqURL
  • $wgDonationInterfaceDebugLog
Quarterly downloads 3 (Ranked 137th)
Translatewiki.net adresinde mevcutsa, DonationInterface uzantısını çevirin
Sorunlar Açık görevler · Hata bildir

DonationInterface ödeme formları sunar ve çeşitli ödeme ağ geçitleri üzerinden ödemeleri toplamak ve izlemek için para toplama mekanizmaları sağlar.

Genel bakış

DonationInterface uzantısı tarafından yapılan işin çoğu ödeme ağ geçitleriyle iletişim içindedir. Ayrıca, bağış kabul etmek için kullanıcıya dönük bir form katmanı sağlıyoruz.

Kurulum

Yapılandırma

LocalSettings.php ile aşağıdaki satırı ekleyin:

wfLoadExtension( "DonationInterface" );

Ardından, etkinleştirilmesini istediğiniz ağ geçitlerini tanımlayın.

Örneğin, aşağıdaki tüm mevcut ağ geçitlerini ve uzantıları etkinleştirir (YAPILACAKLAR: Belge varsayılanları ve güncelleme.):

$wgDonationInterfaceAdyenGatewayEnabled = true;
$wgDonationInterfaceAmazonGatewayEnabled = true;
$wgDonationInterfaceAstroPayGatewayEnabled = true;
$wgDonationInterfaceGlobalCollectGatewayEnabled = true;
$wgDonationInterfaceIngenicoGatewayEnabled = true;
$wgDonationInterfaceEnableMinFraud = true;
$wgDonationInterfaceEnableReferrerFilter = true;
$wgDonationInterfaceEnableSourceFilter = true;

Bundan sonra YAPILACAKLAR, kullanmayı düşündüğünüz her ağ geçidi için hesap bilgilerini tanımladığınızdan emin olun, örneğin:

    <?php
    # settings.d/wikis/paymentswiki/settings.d/01-DI-real.php

    $wgGlobalCollectGatewayAccountInfo = array(
        'default' => array(
            'MerchantID' => '1234',
        ),
    );

    $wgPaypalGatewayAccountInfo = array(
        'default' => array(
            'AccountEmail' => 'magoo@localhost.net',
        ),
    );

Önemli Not:

DonationInterface özel bir şekilde küreselleri arar.

Bir ağ geçidi tarafından kullanılan herhangi bir DonationInterface küresel, ya o ağ geçidine özgü bir değer ya da tüm uzantı için varsayılan değer atanabilir (her ikisinin de mevcut olduğu yerlerde özellikler varsayılanı geçersiz kılar).

Ağ geçidi küreselleri için uzantı çapında bir varsayılan atamak için, global değişken adındaki ağ geçidi önekini "wgDonationInterface" olarak değiştirin.

Örneğin: payflow pro ağ geçidi yerine tüm DonationInterface uzantısı için syslogging'i varsayılan olarak açmak için şunu değiştirin:

$wgIngenicoGatewayUseSyslog = true;

bunun için:

$wgDonationInterfaceUseSyslog = true;

Ağ geçidine özel küreseller ile kapatmadığınız sürece artık syslog tüm ağ geçitleri için etkinleştirilecektir.

Ek yapılandırma

Özel bağış filtreleme kuralları oluşturmak için LocalSettings.php dosyanızda $wgCustomFiltersRefRules ve $wgCustomFiltersSrcRules küresel değişkenlerini ayarlayın.

Bunlar, normal ifade kalıplarını risk puanı sayılarıyla eşleştiren ilişkilendirilebilir dizilere ayarlanmalıdır, örneğin:

// Filter for suspicious HTTP referrer URLs
$wgCustomFiltersRefRules = array(
    '/hackers\.com/' => 100
    '/wikipedia\.org/' => -50,
);
// Filter for suspicious utm_source values
$wgCustomFiltersSrcRules = array(
    '/TestNotice1/' => 50
    '/foobar/' => -100,
);

LocalSettings.php'de Küreselleri Tanımlayın

Geçersiz kılmak için daha birçok küresel mevcut olsa da, DonationInterface'in gerçekten çalışmasını istiyorsanız aşağıdakilerin LocalSettings'de tanımlanması gerekir.

Küresel değişkenler DonationInterface.php'de tanımlanmıştır.

TODO: update

Küresel Ad Amaç Tür
$wgGlobalCollectGatewayMerchantID GlobalCollect ile Satıcı Kimliğimiz dize
$wgDonationInterfaceAllowedHtmlForms RapidHtml üzerinden yüklenmesine izin verilen küresel bir form beyaz listesi. Herhangi bir ağ geçidi tarafından kullanılması amaçlanmıştır. NOT: Bu aslında doğrudan hiçbir yerde kullanılmaz. Bu değerleri, herhangi bir ağ geçidinde gerçekten kullanılabilmeleri için bir ağ geçidinin AllowedHtmlForms ile eklemeniz gerekir. Dizi. Her form için anahtar, formun adı ("ffname" olarak da bilinir) ve değer, dosyanın konumu olmalıdır.
$wgGlobalCollectGatewayAllowedHtmlForms GlobalCollect için RapidHtml üzerinden yüklenmesine izin verilen formların kesin beyaz listesi. Dizi. Her form için anahtar, formun adı ("ffname" olarak da bilinir) ve değer, dosyanın konumu olmalıdır. NOT: Genel form listesini de kullanmak isterseniz, formları yerel olarak eklemeden (veya kaldırmadan) önce $wgGlobalCollectGatewayAllowedHtmlForms = $wgDonationInterfaceAllowedHtmlForms manüel olarak ayarlamanız gerekecektir.
$wgDonationInterfaceDisplayDebug Ekstra hata ayıklama bilgilerinin ekrana dökülmesini sağlamak için true olarak ayarlayın. boole

Uygulama

Kod

Çok genel konuşursak, bir bağışı tamamlama süreci şu şekildedir:

  • Bağışçı, belirli bir ödeme ağ geçidine zaten bağlı olan bir bağış formuna gönderilir. Bu form, GatewayForm sınıfından gelen bir sınıfın ağ geçidine özgü listelenmemiş özel sayfası tarafından kontrol edilecektir.
  • Genişletilmiş GatewayForm sınıfı, ağ geçidi bağdaştırıcısını başlatacaktır. Yapım aşamasında, ağ geçidi bağdaştırıcısı, $wgRequest içindeki tüm ilgili verileri toplar, normalleştirir ve doğrular. Tüm ağ geçitleri, bu görevi gerçekleştirmek için aynı sınıf olan DonationData'yı kullanır. Bunu yapmak, kimin istediği veya nereden geldiğine bakılmaksızın tüm verilerin aynı normalleştirme ve doğrulama süreçlerine tabi olduğu anlamına gelir.
  • Denetleyici GatewayForm alt sınıfı, daha sonra kullanıcının bağış sürecinde nerede olduğunu belirlemek için ağ geçidi bağdaştırıcısını kullanacaktır ve uygunsa (doğrulama hatası yok, tüm veriler mevcut, düzenleme anahtarı veya oturumda tuhaflık yok, bu tür şeyler) bağış sürecindeki bir sonraki adımı atmak için uzak ödeme sunucularıyla etkileşimde bulunmak için aynı ağ geçidi adaptörünü kullanın. Her ödeme ağ geçidinin kendi kuralları olduğundan (ve bazı durumlarda, diğer ağ geçitlerinin herhangi birindeki başka hiçbir şeye doğrudan benzemeyen tamamen farklı işlem türleri), bunların tümünü dahili olarak sıralamak adaptöre bağlıdır ve işlevselliği yalnızca kontrol nesnesine, tüm olası bağdaştırıcı nesnelerinde aşağı yukarı evrensel görünecek şekilde maruz bırakır.
  • Ağ geçidi adaptörünün uzaktan ödeme ağ geçidi ile bir veya daha fazla işlem gerçekleştirmesini sağladıktan sonra, kontrol eden nesne ne olduğunu belirlemek için ağ geçidini kullanır ve olası bağışçıya uygun sonuçları görüntüler. Bu "Teşekkür ederiz" sayfası, gönderilen formda görüntülenen ve kullanıcıdan anlamlı bir şekilde tekrar denemesini isteyen bir hata veya daha ölümcül bir hata sayfası olabilir.

GatewayAdapter sınıfı

(DonationInterface/gateway_common/gateway.adapter.php) - Bu, genel bir ağ geçidinin yapması gereken her şeyle ilgilenen soyut bir sınıftır. Ayrıca, bir ağ geçidinin ihtiyaç duyduğu herhangi bir özelliği tanımlayamazsanız, değerli bir şey yapabilmek için size oldukça yüksek sesle bağırması gerekiyordu.

GatewayForm

(DonationInterface/gateway_common/GatewayForm.php) - UnlistedSpecialPage genişleten bir sınıf. Bu, kullanıcıya bağış formu sunmak ve sonuçları almak için gerekli olan ağ geçidine özgü olmayan tüm işlevselliği sağlayacaktır. Özellikle ilgi çekici olan, istenen formu (veya göstermeme) görüntüleme, form doğrulamasının daha evrensel yönlerinden bazılarını ele alma ve belirtilen formlar tarafından kullanılabilecek verileri getirme mekanizmalarıdır (ülke listesi ve kodları için bir ülke açılır menüsü olduğu gibi).

Bunlardan devralan sınıflar, belirli bir ödeme ağ geçidine özgü olacaktır. Bu nedenle, DonationInterface/[name]_gateway/gibi bir adda bir klasörde yer alacaklardır.

Çoğu bağdaştırıcı, GatewayForm iki yol için uygular: ilk ödeme formu ve sonuç değiştirme sayfası.

İlk ödeme formu, toplanacak zorunlu veriler için girişler içeren bir form oluşturmaktan sorumludur. Alternatif olarak, GlobalCollect gibi bazı ağ geçitleri, ödeme işlemcisi tarafından barındırılan iç çerçeveli bir form sunacaktır ve PayPal ve Amazon gibi diğerleri, bağış bilgileri (para birimi ve miktar) geçersiz olmadığı ve düzeltilmesi gerekmediği sürece işlemciye şeffaf bir şekilde yeniden yönlendirecektir.

Sonuç değiştirici genellikle ödemeyi onaylamaktan veya daha fazla yetkilendirme yapmaktan sorumlu değildir; işlemciden gelen yaklaşık yanıtlara bağlı olarak bağışçıya Teşekkür Ederiz veya Başarısızlık sayfalarına yönlendirir.

DonationData sınıfı

(DonationInterface/gateway_common/DonationData.php) - Bu sınıf, Bağış Verileri ile yapmak isteyebileceğimiz her şeyi ele almaya yöneliktir. Verileri herhangi bir uygun kaynaktan (bir test dahil) tutarlı bir şekilde yüklemeli, ilgili Katkı İzleme verilerini kaydetmeli, her zaman üretmemiz gereken verileri (sipariş kimlikleri gibi) oluşturmalı, her şeyi normalleştirmeli ve ağ geçidine geri göndermelidir. GatewayAdapter üzerinden devralan sınıflar, oluşturma sırasında bir DonationData sınıfını başlatacaktır. GatewayAdapter alt sınıfları her zaman yalnızca DonationData sınıfından gelen verileri kullanmalıdır. Ayrıca düzenleme anahtarları da işler.

DataValidator

Tüm veriler ilk olarak DonationData tarafından normalleştirilir ve ardından doğrulanır. Veri doğrulamayı geçemezse, tüm işlemler durdurulur ve bağışçı, hataları düzeltebilecekleri forma geri yönlendirilir. Kullanıcıyı düzeltmelerde yönlendirmek için mesajlar görüntülenir. YAPILACAKLAR: iletileri insan tarafından okunabilir hale getirin, açılır pencereler yerine alanlara ekleyin, vb.

Ağ geçidi adaptörüne, bu doğrulamalardan bazıları için, örneğin geçerli bağış miktarları için alt ve üst eşik ve kabul edilen para birimleri için danışılır.

Bir Ağ Geçidi Adaptörü Oluşturma

Bir Ağ Geçidi Bağdaştırıcısı ilk kurulduğunda ne olduğuna dair hızlı resim

Yeni Bir Ağ Geçidi Bağdaştırıcısı Tanımlama

GatewayAdapter, GatewayType arabirimini genişletir. YAPILACAKLAR: Burada, GatewayType içindeki işlevleri tanımlamak için hızlı bir kılavuz bulunmaktadır.

Deneme

Birim testleri, DonationInterface uzantısının testler dizininde bulunabilir.

Birim testlerini çalıştırmak için mediawiki-core dizinine, ardından tests/phpunit altına gidin:

cd /srv/org.wikimedia.payments
composer phpuninit:entrypoint -- --group DonationInterface

Geliştirme

Composer

composer.json her değiştiğinde, vendor/ içeriğini yenilemek için composer update --no-dev çalıştırmalısınız.

WMF üretimi için, satıcı "dağıtım" dalında Git alt modülü olarak konuşlandırılır. Yeni paketleri işlerken paket ".git" dizinlerini rm -rf yapmalısınız, aksi takdirde bunlar şekilsiz, iç içe alt modüller olarak değerlendirilir ve oraya gitmek istemezsiniz.

Yol haritası

Yapmak istediğimiz bazı şeyler:

  • Sunum katmanını denetleyicilerden ve ödeme arka ucundan ayırın (Yes Yapıldı)
    • RapidHTML kapatın ve ana hat şablon oluşturma motoru kullanın (Yes Yapıldı)
    • Blok görünürlüğünü ve mevcut özellikleri kontrol eden mantıksal parametrelerle formları tek bir evrensel formda birleştirin: (Yes Yapıldı)
  • Ödeme işlemini MediaWiki çerçevesinden ayırın, böylece bağımsız bir kitaplık olarak kullanılabilir (Devam etmekte Devam etmekte)
    • CiviCRM'den para iadesi, iptal ve statü alımını etkinleştirmek için Drupal içindeki ödeme kitaplığına erişim sağlayın (Devam etmekte Devam etmekte)
Bu uzantı, ana viki kümesi yerine Wikimedia Vakfı'nın ödeme kümesine yerleştirilmiştir, bu nedenle operation/mediawiki-config içinde görünmez.