mewebstudio / pos

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

para iadesi veya iptal servislerine erişim #20

Closed sekizlipenguen closed 3 years ago

sekizlipenguen commented 3 years ago

Merhaba, Öncelikle elinize sağlık iade ve iptal işlemleri için izlememiz gereken adımlar nelerdir nasıl yapabiliyoruz bunların örneklerini göremedim maalesef?

nuryagdym commented 3 years ago

Merhabalar, hangi POS sistemi icin soruyorsunuz? En son Finansbank Payfor icin yapilmisti, examples klasorunde ornekleri var. Garanti ayri bir kullanici bilgileri istiyor iptal/iade islemleri icin, kod orneklerde olabilir, ama calisip calismadigindan emin degilim. Yapikredide user'e iptal yetkisi ayrica veriliyor diye biliyorum

sekizlipenguen commented 3 years ago

Cevap için teşekkür ederim ancak örnekler içerisinde iade, iptal örneklerini göremedim tekrar bakmama rağmen bunlar yok gibi.

Şu şekilde kodlara ulaştım ve sonuç buldum kullanımım doğru ise bu da yeter bana. Bu arada akbank testini yaptım ve çalışıyor.

  if ($type == 1) {
      $in = $posMain->bank->refund($meta);
  } else {
      $in = $posMain->bank->cancel($meta);
  }
sekizlipenguen commented 3 years ago

Bu arada iade işlemlerinde akbank tarafında canlı denemede aldığım hata aşağıdaki gibidir iptaller gerçekleşiyor iadeler problemli duruyor;

response: Error proc_return_code: 99 trans_id: ------ error_code: CORE-2504 error_message: Sifir miktarli iade yapilamaz. status: declined status_detail: general_error

nuryagdym commented 3 years ago

Akbank'ta testleri localhost'ta yapabiliyor muyuz? yapabiliyorsak bana kullanici bilgilerini gonderseniz bakabilirim

nuryagdym commented 3 years ago

Akbank iade kodu orneklerde su sekilde:

$pos->prepare([
    'id'  => '201810297E8B',
    'amount'    => '100',
], \Mews\Pos\Gateways\AbstractGateway::TX_REFUND);
// Refund Order
$pos->refund();

$response = $pos->getResponse();

    /**
     * @inheritDoc
     */
    public function createRefundXML()
    {
        $requestData = [
            'Name' => $this->account->getUsername(),
            'Password' => $this->account->getPassword(),
            'ClientId' => $this->account->getClientId(),
            'OrderId' => $this->order->id,
            'Type' => $this->types[self::TX_REFUND],
        ];

        if (isset($this->order->amount)) {
            $requestData['Total'] = $this->order->amount;
        }

        return $this->createXML($requestData);
    }

iade icin amount alanini gonderiyor musunuz?

sekizlipenguen commented 3 years ago

Screen Shot 2021-02-14 at 17 55 42 Aynen gönderiyorum ekteki alan estpost.php'den 4.0 versiyonu kullanıyorum şu an.

Kullanımı ise şöyle yapıyorum; senin gönderdiğin ise benim kullanım şeklimden farklı sanırım yeni versiyonda mı öyle?

Screen Shot 2021-02-14 at 17 58 56

sekizlipenguen commented 3 years ago

@nuryagdym problem şu gibi görünmekte xml yapısında var olan kod; if ($meta['amount']) $nodes['Total'] = $meta['amount'];

bunu şu şekilde değiştirdiğimde çalışıyor; if ($meta['amount']) $nodes['CC5Request']['Total'] = $meta['amount'];

en azından artık sıfır uyarı vermiyor ve doğru olan gün sonu mesajını alıyorum;

Screen Shot 2021-02-14 at 18 17 55

Öyle sanıyorum ki bu diğer versiyonlarda da hatalı kodlanmış. createXML fonksiyonu zaten 0 key alnmış ve bunun üstündekilere zaten xml çeviride bir şey katmıyor.

Screen Shot 2021-02-14 at 18 19 19

**array_keys($nodes)[0];** estpos.php kullanan entegrasyonların tümü böyleydi diğer bankalarınkine baktım onlar da bu problem bulunmamakta.

nuryagdym commented 3 years ago

XML encoder kutuphane versiyonu sonraki versiyonlarda degisti, olusan sonuc XML'e bakilmasi gerekiyor, son versiyonda zaten baya code refactoring yapildi, o yuzden biraz farkli kodlar.

sekizlipenguen commented 3 years ago

xml versiyonuna baktığımda sonuç olarak Total eklenmiyordu dediğim gibi rootNodeName zaten sıfırıncı keyi alıp işlem yapıyor buda xml encoder alakalı olmadığını gösteriyor ancak dediğin gibi demek ki sadece bir root node yapısını destekliyor olabilir. Şu an bu versiyonu kullanmam gerektiği için 0.4.5 versiyonuna ilerletemiyorum en kısa sürede laraveli geçiricem bu versiyonu desteklemeye ancak sana son olarak sormak istediğim bir şey var bu versiyonda biryerlerde session ile satışın başarılı olup olmadığını kontrol ediyor olabilir misin? Redisi yeni versiyonlarda kullandığını gördüm session oturum bazlı ödemelerde problem mi oluşturuyor şu an kullandığım versiyonda teşekkürler tüm cevaplar için.

nuryagdym commented 3 years ago

bende 1 sene once once sorun cikardi session. 3D odemede, kullanici 3d onaylama sayfasindan geri geldiginden session tektrardan baslatiliyordu. En basta musteriye yaptigimda boyle bir sorun yoktu, sonradan cikti bu. Ondan sonra local ortam testleri yaparken de ayni seyle karsilastim. o yuzden redis'e donusturdum test kodlari da