Closed monurakkaya closed 3 years ago
Merhabalar, kart nerede tanimliysa? ve neyi true
yapiyoruz. Bana verilen dokumantasyonu gore entegrasyonu yaptim, dediginiz true gonderme isini ilk defa duyuyorum.
@nuryagdym Merhaba,
bu fonksiyona baktiginizda $withCreditCard parametresi ile kart bilgilerini requeste dahil ediyor ya da etmiyor ama hicbir yerde bu parametre true gonderilmemis. Dolayisiyla kart bilgilerini elle tekrar requeste dahil etmemiz gerekiyor (examples/finansbank/3d) siz de oyle yapmissiniz.
dolayisiyla asagidaki kod parcasi kart bilgileri olmadan 3dform olusturuyor
$account = AccountFactory::createPayForAccount($provider, $values['merchantId'], $values['userCode'], $values['userPassword'], '3d_pay', $values['merchantPass']);
$card = new CreditCardPayFor($number, $year, $month, $cvc, $name);
$pos = PosFactory::createPosGateway($account, $this->settings);
$pos->setTestMode($values['mode'] === 'test');
$pos->prepare($order, AbstractGateway::TX_PAY, $card);
dd($pos->get3DFormData());
simdi anladim demek istediginizi. 6 ay once eklemistim bu kodu, neye gore koydum o parametreyi hatirlayamadim simdi :). PayFor testlerinin hepsi calisiyor diye hatirliyorum. yani examples'deki ornekler calisan ornekleri olmasi gerekiyor
3dhost ise muhtemelen kart bilgileri yollamayip, diger 3d ve 3dpay de true verip kart bilgileriyle gondermek icin olabilir:)
Bu arada yeni bir issue acmayayim vakif ile ilgili bir gelistirme plani var mi? Yoksa su an bana lazim oturup baslayacagim
simdi hatirladim, bu eskiden kalan bir kod. Payfor'i ornekleri yaparken basitlestirdim, ondan oyle kalmis.
Kisacasi eskinden (ornek olarak examples'daki akbank
ornegine bakabilirisniz), test orneklerinde
index.php
ve form.php
isini payment-form.php
yapiyor (js kullanmadan). o yuzden o parametreyi kullanmadim orneklerde.Eski yontem, ornegin kredi kart bilgisi direk bankaya gitmesin, once sunucuma gitsin gibi ihtiyac oldugunda kullanilabilir.
Vakifbankin kullandigi sistemi bilmiyorum. dokumantasyon ve test ortami verirseniz gelistirebilirim.
simdi hatirladim, bu eskiden kalan bir kod. Payfor'i ornekleri yaparken basitlestirdim, ondan oyle kalmis. Kisacasi eskinden (ornek olarak examples'daki
akbank
ornegine bakabilirisniz), test orneklerinde
- index.php'de kredi kart bilgilerini aliyor
- bu data form.php'ye gidiyor, form.php butun gelen datalari form'a basiyor, ve js code otomatik submit yaptiriyordu. bu tur ornekte lazimdi orasi. Payfor orneklerindeyse,
index.php
veform.php
isinipayment-form.php
yapiyor (js kullanmadan). o yuzden o parametreyi kullanmadim orneklerde.Eski yontem, ornegin kredi kart bilgisi direk bankaya gitmesin, once sunucuma gitsin gibi ihtiyac oldugunda kullanilabilir.
fakat su an
$pos->prepare($order, AbstractGateway::TX_PAY, $card);
$pos->get3DFormData();
bu kod, akbankta calistigi gibi calismiyor. Bu kodda kart bilgileri gelmiyor :
Array
(
[gateway] => https://vpostest.qnbfinansbank.com/Gateway/Default.aspx
[inputs] => Array
(
[MbrId] => 5
[MerchantID] => 085300000009704
[UserCode] => QNB_API_KULLANICI_3DPAY
[OrderId] => 202105100016
[Lang] => tr
[SecureType] => 3DPay
[TxnType] => Auth
[PurchAmount] => 40
[InstallmentCount] => 0
[Currency] => 949
[OkUrl] => https://www.base.test/index.php?route=extension/payment/pos/callback&token=l1IaPWqLwuWJy8Pn
[FailUrl] => https://www.base.test/index.php?route=extension/payment/pos/callback&token=l1IaPWqLwuWJy8Pn
[Rnd] => 0.41451700 1620658410
[Hash] => Mtjh0BrhFheUEKPahBt9N6ggmMM=
)
)
Fakat gerekli guncellemeyi yaptigimizda geliyor:
Array
(
[gateway] => https://vpostest.qnbfinansbank.com/Gateway/Default.aspx
[inputs] => Array
(
[MbrId] => 5
[MerchantID] => 085300000009704
[UserCode] => QNB_API_KULLANICI_3DPAY
[OrderId] => 202105100016
[Lang] => tr
[SecureType] => 3DPay
[TxnType] => Auth
[PurchAmount] => 40
[InstallmentCount] => 0
[Currency] => 949
[OkUrl] => https://www.base.test/index.php?route=extension/payment/pos/callback&token=l1IaPWqLwuWJy8Pn
[FailUrl] => https://www.base.test/index.php?route=extension/payment/pos/callback&token=l1IaPWqLwuWJy8Pn
[Rnd] => 0.41451700 1620658410
[Hash] => Mtjh0BrhFheUEKPahBt9N6ggmMM=
[CardHolderName] => MEHMET ONUR AKKAYA
[Pan] => 4155650100416111
[Expiry] => 1224
[Cvv2] => 123
)
)
)
olabilir, akbank
examples kodu calisiyor mu? yani akbank icin akbank ornegine, QNB icin payfor ornek koda gore yapilmasi gerekyor.
Akbank'taki ornek kodu da, Payfor ornek calistigi sekilde guncelleyebilirisniz. bunun icin kutuphanede guncelleme yapmaya gerek yok, sadece payfor'daki ornege bakarak yol alabilirisniz.
Tam anlatamadim olayi sanirim.
Bir sistem dusunun 20 bankanin sanal posu var. Hepsinde kart bilgilerini onden sunucuya post edip 3d formu olusturup on tarafa basiyorum. Hepsinin 3d_formu form viewi ayni ve calisiyor. fakat payfor icin ek olarak kart bilgilerini tekrar girmemiz gerekiyor.
Ben eger $pos->prepare() metoduna $card gondermissem kart bilgilerini otomatik inject etmesini bekliyorum forma. Tipki diger gatewaylerde oldugu gibi. Ama yapmiyor. dolayisiyla hic bir anlami olmuyor su asamada. Kutuphanenin butunlugu kaybolmus oluyor.
Examples a bakmiyorum. readme'de projenin tum gatewaylerde ortak olmasi gereken $pos-> get3DFormData()
metodunun bana; bankaya post edilecek tum parametreleri vermesi gerekiyorken payfor vermiyor. bunun icin kutuphanede guncelleme yapmak gerekiyor.
Ozetle:
Yanlis kullanmiyorsam durum bu. prepare metoduna gonderdigim cardin hicbir anlami yok. 3d form datayi aldiktan sonra card inputlarini forma tekrar elimle girmem gerekiyor ki dogru bir sekilde transaction baslasin.
Daha fazla uzatmayayim siz de contributor sunuz sonucta :) Emekleriniz icin tesekkurler. Forklar devam ederim ben.
Iyi calismalar.
simdi dediginizi anladim, haklsiniz, duzeltmeleri yaptim, testlerini de yapip merge request'i acma bu haftayi alabilir. Payfor standart kullanima uygun yapmistim, genelde o sekilde calisiyor odeme yontemler, yani kredi kart websitenin bulundugu sunucuya gonderilmiyor. Ama baktigimda bir tek Yapi Kredi (posNet) farkli calisiyormus. PosNet'te once websitenin bulundugu sunucuya gonderilmesi zorunluymus.
Benimki biraz spesifik bir senaryo olabilir elbette. Genelde herkes tek sanal pos kullaniyor. Tesekkur ederim
Vakif dokumantasyonu: https://gitlab.com/bdogru/vakifbanksanalpos/-/tree/master/vak%C4%B1fbankdangelen
Kolay gelsin
tmm, vakifbankada bakarim, tesekkurler
https://github.com/mewebstudio/pos/blob/49837084a75c83acf64117c0096fb689cb41ba9c/src/Gateways/PayForPos.php#L207
ilgili fonksiyona, kart tanimliysa parametre olarak true vermek isi cozuyor. Neden payfor boyle ozellikle mi yaptiniz bilemedigimden belirtmek istedim