Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PayFlexV4Pos Kredi kartı bilgileri eksik #252

Closed
2 tasks done
lansas opened this issue Nov 23, 2024 · 4 comments
Closed
2 tasks done

PayFlexV4Pos Kredi kartı bilgileri eksik #252

lansas opened this issue Nov 23, 2024 · 4 comments
Labels
bug Something isn't working

Comments

@lansas
Copy link

lansas commented Nov 23, 2024

Hatanın özeti

Merhabalar, formun ilk açılacağı sayfada kredi kartı bilgilerinin eksik olduğu hatasını alıyorum. Daha değerleri gireceğim kredi kartı formu sayfası açılmadan bu hatayı almam normal mi?

Type: LogicException
Message: Kredi kartı bilgileri eksik!
File: /mews/pos/src/Gateways/PayFlexV4Pos.php
Line: 163

`
use \Mews\Pos\Factory\AccountFactory;

use \Mews\Pos\Factory\PosFactory;

use Mews\Pos\PosInterface;
$eventDispatcher = new Symfony\Component\EventDispatcher\EventDispatcher();
$s_model = PosInterface::MODEL_NON_SECURE;
$account = AccountFactory::createPayFlexAccount("ziraat-vpos", "XXXXXXXXXX", "XXXXXXXXXX", "XXXXXXXXXX", $s_model, 0);
$pos = PosFactory::createPosGateway($account, st_TurkBanks_pos::SANAL_POS_CONFIG_CUSTOM, $eventDispatcher);//SANAL_POS_CONFIG_CUSTOM: bir değişken olarak banka urllerini çektiği yer.
$pos->setTestMode(false);
$rand = microtime();
$f_amount = 1.0;
$order = [
'id' => DATE("YmdHis"),//$orderId
'email' => "customer@gmail.com", // optional
'name' => 'First Last', // optional
'amount' => floor($f_amount * 100) / 100,
'installment' => '0',
'currency' => 'TRY',
'ip' => "192.168.1.1",
'success_url' => "https://BLABLA.COM/set_payment/",
'fail_url' => "https://BLABLA.COM/set_payment/",
'transaction' => 'pay', // pay => Auth, pre PreAuth,
'lang' => PosInterface::LANG_TR,
'rand' => $rand,
'pos_option' => 7//sadeleşmiş kod attığımdan anlamsız gelebilir. Kendi kodumdaki fonksiyonlarda seçili posu anlamak için gönderdiğim bir değer.
];
$form_data = $pos->get3dFormData($order, PosInterface::MODEL_3D_SECURE, PosInterface::TX_TYPE_PAY_AUTH);//hatanın gerçekleştiği line
`

Banka ismi

ziraat

Gateway PHP sınıfı

PayFlexV4Pos

İşlem Tipi

MODEL_3D_SECURE ödeme

Kütüphane versiyonu

1.5

Checks

  • Bu konuda zaten bir hata bildirimi olmadığından eminim.
  • Hatayı yeniden oluşturmak için gereken detayları ekledim.
@lansas lansas added the bug Something isn't working label Nov 23, 2024
@nuryagdym
Copy link
Collaborator

Merhabalar,
dokumantasyonda (https://github.com/mewebstudio/pos/blob/master/docs/THREED-SECURE-AND-PAY-PAYMENT-IN-MODALBOX-EXAMPLE.md) berlitilen akisa gore 3D secure modeli icin get3dFormData cagrilmadan once kart bilgilier elinizde olmasi gerekiyor.

Cogu gatewaylerde kredi karti yerine NULL vererek de form verisi olusturabilirsiniz, ama bu durumda sonradan kendiniz manuel olarak form verisinin icine kredi kart bilgileri eklemeniz gerekiyor.

Fakat bazi gatewaylerde form verisini olusturmak icin kredi kart bilgileri zorunlu. PayFlexV4'de onlardan biri:

$data = $this->sendEnrollmentRequest($order, $creditCard, $txType, $paymentModel);

Payflex bu istekle 3d form verisi olusturmadan once kartta 3D ozellik aktif mi diye sorguluyor.

@nuryagdym
Copy link
Collaborator

Bir derand degerini sizin olusturmanize gerek yok, kutuphane artik kendisi olusuturuyor.

@lansas
Copy link
Author

lansas commented Nov 27, 2024

Payflex in oluşturduğu VerifyEnrollmentRequestId ile benim oluşturduğum order_id haliyle farklı. Birçok uygulamada benim oluşturduğum order_id ile işlem yapabiliyorken Payflex geri dönüşte sadece VerifyEnrollmentRequestId değerini dönüyor. Bu değeri bankaya göndermeden evvel elde edebiliyor muyuz ki anlayalım hangi sipariş için ödeme isteğini tekrar gönderelim?

`
$pos->payment(
$s_model,
$ORDER,
PosInterface::TX_TYPE_PAY_AUTH,
$o_card
);

`

//public function get3DFormData $data = $this->sendEnrollmentRequest($order, $creditCard, $txType, $paymentModel); return $data["VerifyEnrollmentRequestId"]

VerifyEnrollmentRequestId değerini get3DFormData yı çağırdığımız yerde elde edebilmeliyiz. Şu anda Return sadece form inputları oluşturuyor. Ekstra data olarak eklenebilir mi yoksa bunun başka bir yolu var mı?

@nuryagdym
Copy link
Collaborator

PayFlex kodu ve dokumentasyonu inceledim.
Kodda 3d form verisini olustururken, ve form verisi icin gonderilen API istekte de $order['id'] degeri kullanilmiyor, dokumantasyonda da order id gonderilmesi gerektigini belirtmemisler.

VerifyEnrollmentRequestId degerine ise random string ataniyor:

'VerifyEnrollmentRequestId' => $this->crypt->generateRandomString(),

Dokumentasyonda ise bu alan hakkinda soyle demis:
image

order id ise sadece $pos->payment() calisitiginda kullaniliyor:

'MpiTransactionId' => $responseData['VerifyEnrollmentRequestId'],
'OrderId' => (string) $order['id'],

Dokumantasyonlarina gore de VerifyEnrollmentRequestId ile order id ayni sey degil ve ayni olmasi sorun cikarabilir diye dusunuyorum.

Ornegin, ilk odeme basirisiz olursa, ayni siparis numarasi icin ikinci kere odemeye calisirsaniz VerifyEnrollmentRequestId'nin ayni olmasi sorun cikarir diye dusunuyorum.

Ekstra veri olarak neleri eklemek istiyorsunuz ve ne icin?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants