[GH-ISSUE #27] Payfor Kredi karti degerlerini gondermiyor. #18

Closed
opened 2026-03-03 15:42:09 +03:00 by kerem · 12 comments
Owner

Originally created by @monurakkaya on GitHub (May 10, 2021).
Original GitHub issue: https://github.com/mewebstudio/pos/issues/27

github.com/mewebstudio/pos@49837084a7/src/Gateways/PayForPos.php (L207)

ilgili fonksiyona, kart tanimliysa parametre olarak true vermek isi cozuyor. Neden payfor boyle ozellikle mi yaptiniz bilemedigimden belirtmek istedim

Originally created by @monurakkaya on GitHub (May 10, 2021). Original GitHub issue: https://github.com/mewebstudio/pos/issues/27 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
kerem closed this issue 2026-03-03 15:42:09 +03:00
Author
Owner

@nuryagdym commented on GitHub (May 10, 2021):

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

<!-- gh-comment-id:836708459 --> @nuryagdym commented on GitHub (May 10, 2021): Merhabalar, kart nerede tanimliysa? ve neyi `true` yapiyoruz. Bana verilen dokumantasyonu gore entegrasyonu yaptim, dediginiz true gonderme isini ilk defa duyuyorum.
Author
Owner

@monurakkaya commented on GitHub (May 10, 2021):

@nuryagdym Merhaba,

github.com/mewebstudio/pos@49837084a7/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());

<!-- gh-comment-id:836715519 --> @monurakkaya commented on GitHub (May 10, 2021): @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 ```php $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()); ```
Author
Owner

@nuryagdym commented on GitHub (May 10, 2021):

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

<!-- gh-comment-id:836754331 --> @nuryagdym commented on GitHub (May 10, 2021): 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
Author
Owner

@monurakkaya commented on GitHub (May 10, 2021):

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

<!-- gh-comment-id:836757818 --> @monurakkaya commented on GitHub (May 10, 2021): 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
Author
Owner

@nuryagdym commented on GitHub (May 10, 2021):

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.

<!-- gh-comment-id:836764144 --> @nuryagdym commented on GitHub (May 10, 2021): 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.
Author
Owner

@nuryagdym commented on GitHub (May 10, 2021):

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

<!-- gh-comment-id:836771302 --> @nuryagdym commented on GitHub (May 10, 2021): Vakifbankin kullandigi sistemi bilmiyorum. dokumantasyon ve test ortami verirseniz gelistirebilirim.
Author
Owner

@monurakkaya commented on GitHub (May 10, 2021):

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
                )

        )

)
<!-- gh-comment-id:836800701 --> @monurakkaya commented on GitHub (May 10, 2021): > 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 ) ) ) ```
Author
Owner

@nuryagdym commented on GitHub (May 10, 2021):

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.

<!-- gh-comment-id:836849025 --> @nuryagdym commented on GitHub (May 10, 2021): 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.
Author
Owner

@monurakkaya commented on GitHub (May 10, 2021):

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.

<!-- gh-comment-id:836875869 --> @monurakkaya commented on GitHub (May 10, 2021): 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.
Author
Owner

@nuryagdym commented on GitHub (May 10, 2021):

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.

<!-- gh-comment-id:837182735 --> @nuryagdym commented on GitHub (May 10, 2021): 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.
Author
Owner

@monurakkaya commented on GitHub (May 10, 2021):

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

<!-- gh-comment-id:837191738 --> @monurakkaya commented on GitHub (May 10, 2021): 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
Author
Owner

@nuryagdym commented on GitHub (May 10, 2021):

tmm, vakifbankada bakarim, tesekkurler

<!-- gh-comment-id:837218969 --> @nuryagdym commented on GitHub (May 10, 2021): tmm, vakifbankada bakarim, tesekkurler
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/pos#18
No description provided.