Ingenico POS entegrasyonu Hakkında

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Ingenico POS entegrasyonu Hakkında

Mesaj gönderen adelphiforumz »

Selamlar

Ingenico Pos ÖKC ile çalışan ve "GMPSmartDLL.dll" ile Delphi üzerinden direkt cihaza entegrasyon sağlayan varmıdır.
Ben bu Dll'i bir türlü delphi içerisinden Dinamik yada Statik olarak declere edip kullanamadım.

Teşekkürler
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Ingenico POS entegrasyonu Hakkında

Mesaj gönderen ertank »

DLL acaba .NET için hazırlanmış olabilir mi? Yoksa C# DLL'i mi? Ingenico size detaylı bilgiyi verecektir.
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: Ingenico POS entegrasyonu Hakkında

Mesaj gönderen adelphiforumz »

Ingenico ya sorduğumuzda kütüphanenin Visual Studio kullanarak C++ ile yazıldığını ilettiler

eğer sorun olursa "Visual C++ Redistributable for Visual Studio 2015" kütüphanesi kurun dendi fakat kursamda bir şey değişmedi.
Açaba benmi beceremedim yoksa gerçekten kütüphane delphide çalışmıyormu onun için forumda bilen yada kullanan varmı diye sordum

İngenico tarafında delphiyi bilen olmadığından yardımcı olamıyacaklarını ilettiler.
Teşekkürler
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
kimimben
Üye
Mesajlar: 129
Kayıt: 28 Oca 2016 04:41
Konum: İstanbul

Re: Ingenico POS entegrasyonu Hakkında

Mesaj gönderen kimimben »

GMPSmartDLL.dll dosyasını görmemiz mümkün müdür ? Yada indirebileceğimiz bir yer ?
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Ingenico POS entegrasyonu Hakkında

Mesaj gönderen ertank »

Merhaba,

Aşağıdaki örnekten yola çıkarak kullanmanız mümkün olabilir. Ancak normal DLL gibi tüm fonksiyonlarında string, integer vb parametreler kullanmıyor. Fonksiyon isimlerinden de tahmin edileceği üzere birçok fonksiyon JSON formatı üzerinden çalışmaktadır. Kullanacağınız DLL versiyonu önemlidir.

Benim verdiğim örnekler standart değişkenler üzerinden çalışan fonksiyonlara ait. JSON için kullanılacakları bende henüz çözemedim. Bununla beraber fikir vermesi için "Json_GMP_StartPairingInit" için kullanabileceğiniz iki tane record tanımını da aşağıda ekledim.

Bu DLL ile ilgili olarak numerik alanları BCD haline getiren fonksiyonları Delphi ile yazan arkadaş varsa paylaşır ise çok memnun olurum. Zira ben henüz çözemedim.

Kod: Tümünü seç

uses
.
.
.

  procedure GetErrorMessage(ErrorCode: UInt32; Buffer: array of Byte); cdecl; external 'GMPSmartDLL.dll';
  function Json_FiscalPrinter_Echo(szEcho_Out: array of Byte; EchoLen_Out, TimeoutInMiliseconds:integer): UInt32; cdecl; external 'GMPSmartDLL.dll';

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
.
.
.

  private
    { Private declarations }


    ST_GMP_PAIR : record
      In_ProcOrderNum : array [0..3] of Byte;
      In_ProcDate : array [0..3] of Byte;
      In_ProcTime : array [0..3] of Byte;
      In_DeviceBrand : array [0..16] of Byte;
      In_DeviceModel : array [0..16] of Byte;
      In_DeviceSerialNum : array [0..16] of Byte;
      In_DeviceEcrRegisterNo : array [0..17] of Byte;
    end;

    ST_GMP_PAIR_RESP: record
      Out_ProcOrderNum : array[0..6] of Byte;
      Out_ProcDate : array[0..6] of Byte;
      Out_ProcTime : array[0..6] of Byte;
      Out_DeviceBrand : array[0..16] of Byte;
      Out_DeviceModel : array[0..16] of Byte;
      Out_DeviceSerialNum : array[0..16] of Byte;
      Out_ErrorRespCode : array[0..2] of Byte;
      Out_StatusCode : array[0..2] of Byte;
      Out_VersionNumber : array[0..8] of Byte;
    end;
  public
    { Public declarations }
  end;


var
  Form5:TForm5;

implementation

{$R *.dfm}

procedure TForm5.Button1Click(Sender: TObject);
var
  i:Integer;
  b:array [0..200] of Byte;
  pResp:array[0..200000] of Byte;
  s:string;
begin
  i := Json_FiscalPrinter_Echo(b, 200, 200);
  if i <> 0 then begin
    GetErrorMessage(i, b);
    SetString(s, PAnsiChar(@b[0]), SizeOf(b));
    Memo1.Lines.Add('HATA: ' + s);
    Exit;
  end else begin
    Memo1.Lines.Add('Echo başarılı: ' + IntToStr(i));
  end;
end;
ebaytar
Üye
Mesajlar: 10
Kayıt: 03 Eki 2008 10:02

Re: Ingenico POS entegrasyonu Hakkında

Mesaj gönderen ebaytar »

Merhabalar

Mesajın üzerinden biraz zaman geçmiş ama biz bu olaya yeni düştük :)

Ingenico Yazarkasa ile ilgili aramalarda hep sizin mesajlarınıza denk geldiğim için size de danışmak istedim. yazar kasa entegrasyonu süreciyle ilgili bir sorum olacak eğer cevaplama şansınız varsa memnun olurum.

Bir müşterimiz ide280 modelini temin etmiş. Bu yazar kasa için entegrasyon çalışmalarını yapıyoruz. Tüm fonksiyonlarını kullanmayacağız sadece basitçe otomasyon tarafında oluşturulan fiş kaydını cihaza gönderip çıktı vermesi şeklinde işlemi yapacağız. Fiş kesme işini yaptık bu kısımda bir sorun yok. Eğer problem varsa canlı kullanıma alınca daha net göreceğiz aksaklıkları. Ancak cihazın ping fonksiyonu ile ilgili bir anormallik var gibi.

Biz ethernet üzerinden bağlantıyı kullanıyoruz, bağlantı başlatmadan önce Ping komutu gönderip cihazın ulaşılabilir olup olmadığını kontrol etmek istiyoruz. Eğer cihaz ulaşılabilir durumdaysa ping cevabı hemen dönüyor. Test amaçlı cihazın güç kablosunu çıkarıp erişilemez hale getiriyorum ve ping komutunu tekrar veriyorum. Varsayılan parametrelerle ping fonksiyonundan hata mesajının dönmesi 1 dakikayı buluyor hatta 1 dakikadan 5-6 sn daha fazla sürüyor. Kullanıcıyı ekranda bu kadar zaman bekletmek çok mantıklı gelmiyor.

Ini deki timeout sürelerini 1000 ms yapıp retry değerlerini de 1 yaptığımda ise ancak 20-25 sn ye iniyor. cihaz desteği veren firma kredi kartı ödemelerindeki süre faktöründen dolayı bu değerlerin varsayılan değerlerde kalmasının daha sağlıklı olacağı yönünde bir duyuru maili atmış.

Siz ping fonksiyonunu kullanıyor musunuz ? Kullanıyorsanız ulaşılamaz durumdayken hata mesajının dönüş süresi sizde de böyle uzun mu ?

Yardımlarınız için şimdiden teşekkür ederim.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Ingenico POS entegrasyonu Hakkında

Mesaj gönderen ertank »

Merhaba,

Ingenico ile mümkünse USB kablo kullanın. PAVO kendisi de tavsiyesi bu şekilde. TCP/IP üzerinden bağlantı standart işletim sistemi üzerinden yapılıyor. Protokol zaman aşımı süreleri standart 1 dakika olarak ayarlanmıştır. Bunun dışında da başka sorunlarla karşılaşmanız yüksek ihtimal.

DLL içinden zaman aşımı değerini değiştirmek sadece 1 dakika + 1 saniye gibi olan sürenin 1 saniye kısmını değiştirir.

Bu arada, kağıt bitmesi durumunu da ciddi kontrollere tabi tutmanız gerekebilir. Cihaz yanlış bilmiyorsam kağıt bitti hata mesajı göndermiyor. Başka bir mesaj gönderiyor.
ebaytar
Üye
Mesajlar: 10
Kayıt: 03 Eki 2008 10:02

Re: Ingenico POS entegrasyonu Hakkında

Mesaj gönderen ebaytar »

Merhaba

bilgilendirmeniz için teşekkürler, 4-5 farklı şube var. Merkeze uzak masaüstü ile bağlanıp yazılımı kullanıyorlar. Sadece merkez şubede lokal kullanım söz konusu. Bu yüzden ethernet olayını tercih etmek durumundayız biraz. Uygulama uzak sunucu da çalışırken yazarkasalar lokalde bulunacak. Uzak masaüstünden lokaldeki seri portu , paralel portu, yazıcıları kullanıyoruz ama bu cihazın bu tür bir desteği var mı bilmiyorum açıkçası, şimdiye kadar hep ethernet üzerinden çalıştık geliştirme sürecinde. En azından merkez şubede usb kullanırız daha hızlı olacaksa.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Ingenico POS entegrasyonu Hakkında

Mesaj gönderen ertank »

Hız anlamında aynı olacaktır. Yani fiş yazma süresi daha hızlı olmayacaktır. Sadece TCP/IP ile bağlantı olmadığı zaman "bağlantı var mı?" kontrolü bekleme süresi 1 dakika civarında iken USB ile daha kısa sürede olacaktır.
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: Ingenico POS entegrasyonu Hakkında

Mesaj gönderen varyemez »

Bende de var bir ingenico ide280 . Bu DLL dosyasını nasıl elde edebilirim. Biraz uğraşayım bakalım
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Ingenico POS entegrasyonu Hakkında

Mesaj gönderen ertank »

PAVO firması bayi sözleşmesi yapan firmalara temin ediyor SDK kodlarını (ve DLL dosyasını) bildiğim kadarıyla.
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: Ingenico POS entegrasyonu Hakkında

Mesaj gönderen adelphiforumz »

Selamlar
Ingenico'nun verdiği DLL'leri forumun başladığındada yazdığım gibi direkt delphi ile kullanamıyorsun.
Alt yapısı CSharp .net kütüphaneleri kullanılarak yazılmış. Bunun için bayağı uğraşman gerekiyor.
ben 5 günümü harcadım çeviri yaptım fakat iletişim sırasında sürekli adresleme hataları aldım
eğer başaran olursa nasıl yapıldığı konusunda bilgi paylaşırsanız memnun olurum.
İyi Çalışmalar
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Ingenico POS entegrasyonu Hakkında

Mesaj gönderen ertank »

adelphiforumz yazdı:Selamlar
Ingenico'nun verdiği DLL'leri forumun başladığındada yazdığım gibi direkt delphi ile kullanamıyorsun.
Alt yapısı CSharp .net kütüphaneleri kullanılarak yazılmış. Bunun için bayağı uğraşman gerekiyor.
ben 5 günümü harcadım çeviri yaptım fakat iletişim sırasında sürekli adresleme hataları aldım
eğer başaran olursa nasıl yapıldığı konusunda bilgi paylaşırsanız memnun olurum.
İyi Çalışmalar
Merhaba,

Sanırım bir noktada yanlış anlama var. Ingenico DLL dosyası olarak Delphi ile kullanılabilir C# DLL dosyası temin ediyor. Yukarıda, aynı konu başlığı altında bir iki fonksiyon tanımı ve kullanımı ile ilgili örnek vermiştim. Bu kodlar çalışan kodlardır.

Ancak sorun genelde JSON formatlarında çıkıyor. Simülatör dedikleri C#.NET örnek uygulama DLL içindeki fonksiyonlara parametrelerinin çoğunu (muhtemelen C# diline özgü format içeren) JSON formatında olmasını bekliyor. Büyük oranda JSON formatları aynı olsa da bazı noktalarda değişik olabiliyor. Örneğin C# dilinde kullanılabilen ancak Delphi dilinde özel kelime olarak nitelendirilen ve değişken adı olarak kullanılamayan durumlar ile karşılaşabiliyorsunuz.

Ayrıca, geliştirme yapmak için kullanılan cihaz PAVO firması tarafından geliştirme amacıyla temin edilen cihazlardan değil ise ve resmi kullanım için tanımlanmış bir cihaz ise yüksek ihtimalle çalışmayacaktır. PAVO resmi anlamda DLL ile cihazı kullanacak uygulamaların HASH değerlerini alıp kendi sisteminde yetkilendiriyor. Cihazlar kendi GPRS internet bağlantısı üzerinden iletişim kurmaya çalışan EXE dosyanın hash değerini (DLL dosyası PAIR edildiği sırada arka planda bu değeri üretip cihaza bildiriyor) kontrol ediyor. İzin verilmeyen bir EXE dosya ise istek yerine getirilmiyor. Yani cihazı kullanamıyorsunuz. Geliştirme amacı ile temin edilen cihazlar bu kontrolü yapmıyor. Özel olarak tüm EXE dosyalar ile çalışabilecek şekilde ayarlanıyor.
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: Ingenico POS entegrasyonu Hakkında

Mesaj gönderen adelphiforumz »

ertank yazdı:
adelphiforumz yazdı:Selamlar
Ingenico'nun verdiği DLL'leri forumun başladığındada yazdığım gibi direkt delphi ile kullanamıyorsun.
Alt yapısı CSharp .net kütüphaneleri kullanılarak yazılmış. Bunun için bayağı uğraşman gerekiyor.
ben 5 günümü harcadım çeviri yaptım fakat iletişim sırasında sürekli adresleme hataları aldım
eğer başaran olursa nasıl yapıldığı konusunda bilgi paylaşırsanız memnun olurum.
İyi Çalışmalar
Merhaba,

Sanırım bir noktada yanlış anlama var. Ingenico DLL dosyası olarak Delphi ile kullanılabilir C# DLL dosyası temin ediyor. Yukarıda, aynı konu başlığı altında bir iki fonksiyon tanımı ve kullanımı ile ilgili örnek vermiştim. Bu kodlar çalışan kodlardır.

Ancak sorun genelde JSON formatlarında çıkıyor. Simülatör dedikleri C#.NET örnek uygulama DLL içindeki fonksiyonlara parametrelerinin çoğunu (muhtemelen C# diline özgü format içeren) JSON formatında olmasını bekliyor. Büyük oranda JSON formatları aynı olsa da bazı noktalarda değişik olabiliyor. Örneğin C# dilinde kullanılabilen ancak Delphi dilinde özel kelime olarak nitelendirilen ve değişken adı olarak kullanılamayan durumlar ile karşılaşabiliyorsunuz.

Ayrıca, geliştirme yapmak için kullanılan cihaz PAVO firması tarafından geliştirme amacıyla temin edilen cihazlardan değil ise ve resmi kullanım için tanımlanmış bir cihaz ise yüksek ihtimalle çalışmayacaktır. PAVO resmi anlamda DLL ile cihazı kullanacak uygulamaların HASH değerlerini alıp kendi sisteminde yetkilendiriyor. Cihazlar kendi GPRS internet bağlantısı üzerinden iletişim kurmaya çalışan EXE dosyanın hash değerini (DLL dosyası PAIR edildiği sırada arka planda bu değeri üretip cihaza bildiriyor) kontrol ediyor. İzin verilmeyen bir EXE dosya ise istek yerine getirilmiyor. Yani cihazı kullanamıyorsunuz. Geliştirme amacı ile temin edilen cihazlar bu kontrolü yapmıyor. Özel olarak tüm EXE dosyalar ile çalışabilecek şekilde ayarlanıyor.
Merhaba

Cihaz PAVO tarafında geliştirilme sağlanması için verilen cihaz fakat daha cihaza erişim sağlamadan bile
sadece eldeki dll içindeki bazı fonksiyonları çağırmaya kalktığınızda bile bir çok yerde "access violation at address" hatası ile karşılaştım.
Bu durum belki benim bilgi eksikliğimde kaynaklı olabilir fakat PAVO ya bu konuda yardımcı olmalarını rica ettiğimizde ise
aldığım cevap bizde delphi bilen yok siz internetten araştırın, bizim cihazımız C# kullanılarak sorunsuz çalışıyor dendi.
Bende bunun üzerine farklı bir cihaz arayışına girdim ve Pidion diye bir cihaz buldum ve bana verdikleri
DLL dosyasını import ettim. sonuç olarak toplam 1 günde bütün sistemi sorunsuz şekilde entegre edebildim.

Eğer Ingenico cihaz ile delphi üzerinden sorunsuz uygulama geliştirmiş bir kişi varsa bura somut olarak paylaşabilirse ve nasıl bir yol izlediğinide anlatabilirse çok teşekkür ederim.

İyi Çalışmalar
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Ingenico POS entegrasyonu Hakkında

Mesaj gönderen ertank »

Access violation veren ve çalışmayan kod örneği gönderebilir misiniz? En basitinden PAIR (eşleşme) yapan kodu paylaşabilir misiniz?
Cevapla