mewebstudio / pos

Türk bankaları için sanal pos paketi (PHP)
Other
260 stars 101 forks source link

Payfor Kredi karti degerlerini gondermiyor. #27

Closed monurakkaya closed 3 years ago

monurakkaya commented 3 years ago

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

nuryagdym commented 3 years ago

Merhabalar, kart nerede tanimliysa? ve neyi true yapiyoruz. Bana verilen dokumantasyonu gore entegrasyonu yaptim, dediginiz true gonderme isini ilk defa duyuyorum.

monurakkaya commented 3 years ago

@nuryagdym Merhaba,

https://github.com/mewebstudio/pos/blob/49837084a75c83acf64117c0096fb689cb41ba9c/src/Gateways/PayForPos.php#L669

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());
nuryagdym commented 3 years ago

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

monurakkaya commented 3 years ago

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

nuryagdym commented 3 years ago

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

  1. index.php'de kredi kart bilgilerini aliyor
  2. 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 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.

nuryagdym commented 3 years ago

Vakifbankin kullandigi sistemi bilmiyorum. dokumantasyon ve test ortami verirseniz gelistirebilirim.

monurakkaya commented 3 years ago

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

  1. index.php'de kredi kart bilgilerini aliyor
  2. 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 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.

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
                )

        )

)
nuryagdym commented 3 years ago

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.

monurakkaya commented 3 years ago

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.

nuryagdym commented 3 years ago

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.

monurakkaya commented 3 years ago

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

nuryagdym commented 3 years ago

tmm, vakifbankada bakarim, tesekkurler