Ana içeriğe geç

GMU

Giriş

GMU Android Sdk ve GMU Backoffice kullanımları için yapılması gereken adımlar aşağıda anlatılmıştır. Herhangi bir sorunuz olması durumunda Protein ekibi ile iletişime geçebilirsiniz.

GMU sisteminin kullanılabilmesi için öncelikle GMU sisteminde işletmeye ait bir Tenant, Store ve Device tanımlarının yapılması gerekmektedir. Aşağıda bu tanımlamaların yapılması için kullanılması gereken metotları ve akışı bulabilirsiniz.

Servis API dökümanından detayları inceleyebilirsiniz.

Yararlı Linkler

Not

Her bir endpointte girilmesi gereken zorunlu alanları görmek için, Swagger dokümanında ilgili endpoint altında yer alan Schema kısmına bakılmalıdır.

Not

Eğer GMUPOS uygulaması kullanılıyorsa entegrasyon GMUPOS servisleri üzerinden yapılmalıdır!

Onboarding Adımları

  1. Onboarding adımlarını Integration API kullanarak gerçekleştirebilirsiniz.

    -> POST-/integrationapi/v2/Auth/AuthorizeIntegrationUser endpointi ile firmaya paylaşılan Entegrasyon kullanıcısı bilgileri kullanılarak Authorize olunur.

    • Request body içerisinde yer alan tenantId silinmelidir.
  2. Alınan JWT Token ile birlikte Tenant oluşturma adımı takip edilir.

    -> POST-/integrationapi/v2/User/CustomerByIntegration endpointi ile birlikte Tenant oluşturulur. Tenant ile beraber Store da aynı istekte oluşturulmak isteniyorsa request body içerisindeki "store" alanı doldurulur.

    - İstek atılırken eklenen request body içerisinde, yer alan email ve password parametreleri ile, oluşturulan bu tenant verisine ait bir kullanıcı oluşturularak Backoffice ortamına giriş sağlanabilir.

    - Response body içerisinde yer alan tenantId bilgisi bir sonraki adımdaki Authorize işleminde kullanılmak üzere saklanmalıdır.

    - Eğer store burada oluşturulmak istenmiyorsa request body içerisindeki store alanları silinip istek gönderilir. Store oluşturmak için bir sonraki adım takip edilir.
  3. Bir önceki adımda oluşturulan tenant'ın id bilgisi response body'den alınarak 1. adım tekrar edilir. Böylece, devam eden adımlarda yapılacak tüm işlemler ilgili tenant üzerinden ilerleyecektir.

    • İlk adımda silinen tenantId bu istekte doldurulmalıdır.
  4. Alınan JWT Token ile birlikte Store oluşturma adımı takip edilir.

    -> POST-/integrationapi/v2/Store/ByIntegration endpointi ile store oluşturulur.

    • deviceApiAccessUsername, deviceApiAccessPassword alanları android pos clientların authorize olması için gerekli kullanıcı adı ve şifreyi ifade etmektedir. Bir store'a bağlı tüm cihazlar bu bilgilerle authorize olur. Bu bilgiler, Android Sdk login metodunda kullanıcı bilgisi olarak 7. adımda kullanılacaktır.

    • Response body içerisinde yer alan id bilgisi 5. adımdaki cihaz oluşturma aşamasında kullanılmak üzere saklanmalıdır.

  5. -> POST-/integrationapi/v2/Device endpointi ile cihaz oluşturulur.

    • Bir önceki adımda alınan id request body içerisindeki storeId alanına girilmelidir.
    • Response body içerisinde dönen id bilgisi 7. adımda deviceId alanında kullanılacaktır.
  6. Android Sdk'yı kullanmaya başlamadan önceki son adım olarak, GMU backende App Version tanımlama işlemi yapılmalıdır. Bu işlemi, Backoffice API'yi kullanarak gerçekleştirebilirsiniz.

    -> POST /boapi/v2/Auth/Authorize endpointinden Protein ekibi tarafından iletilecek support kullanıcı bilgileri ile JWT token alınır.

    -> POST /boapi/v2/AppVersionInfo endpointine bir önceki adımda alınan token ile çağrı yapılır. Request body parametre açıklamaları:

    • appVersion = 1.0.0, appType = 2 verilmelidir. Bu değerler sabittir farklı değerler girilmemelidir.
    • appUniqueId ve appPublicKey parametrelerine, Android Sdk'yı kullanacağınız uygulamanın applicationId'si verilmelidir.
    • htmlContent parametresi ilgili sürümün html formatında notlarını içerir.

    Örnek request:

    {
    "appVersion": "1.0.0",
    "appPublicKey": "com.protein.poc.app",
    "appUniqueId": "com.protein.poc.app",
    "releaseDate": "2022-11-22T06:11:23.362Z",
    "approvedBy": "Fatih Çelik",
    "appType": 2,
    "htmlContent": "<html><body>Notlar</body></html>"
    }
  7. Yukarıdaki adımlar ile, Android Sdk metotlarından login ve setGmuParameters içinde verilmesi gereken önemli parametreler elde edildi.

    • login -> username ve password oluşturuldu.(deviceApiAccessUsername, deviceApiAccessPassword)
    • setGmuParameters -> deviceId ve applicationId oluşturuldu.

    Detaylı Sdk method açıklamaları için GMU Module Sample Dökümantasyonunu inceleyebilirsiniz.

sequenceDiagram Admin ->> GMU: Authentication (Admin Username Password) GMU ->> Admin: Admin Token Admin ->> GMU: Create Customer GMU ->> Admin: Tenant Id ve Tenant Token(Sadece ilgili Tenant için kullanılabilir) Admin ->> GMU: Customer Autentication (Admin Username ve Password(Tenant Id)) GMU ->> Admin: Customer Token Admin ->> GMU: Create Store GMU ->> Admin: StoreID ve Device User Id Admin ->> GMU: Register Device (Store Id ve Serial Number) GMU ->> Admin: Device Id Device ->> GMU: Autorize (GMU device username ve password) GMU ->> Device: Token ve Refresh Token

Onboarding Servislerinde Kullanılan Parametreler ve Açıklamaları

Onboarding akışını yürütürken ihtiyaç duyulan ilgili servisler içindeki parametreler ve açıklamaları aşağıda belirtilmiştir.

ServisDeğişkenTürAçıklamaMinMaxZorunluluk
TenantemailstringYönetici e-posta adresi1320Zorunlu
passwordstringYönetici şifresi660Zorunlu
firstNamestringYönetici adı250Zorunlu
lastNamestringYönetici soyadı250Zorunlu
phoneNumberstringYönetici telefon numarası1013Opsiyonel
languageIdintegerKullanıcının dili--Zorunlu
companyNamestringİşletme adı2200Zorunlu
companyPhoneNumberstringİşletme telefon numarası1013Opsiyonel
companyAddressstringİşletme adresi2250Opsiyonel
ownerProductIdintegerMüşteri ThirdParty bir uygulama ile kaydolduysa bu uygulamayı göstermektedir--Opsiyonel
tenantIntegrationIdstringEğer tenant bir entegrasyon vasıtası ile açılmışsa tenantı açan taraftaki Id'si-100Opsiyonel
alternateIdstringIntegrationId'ye alternatif-100Opsiyonel
tenantOwnerstringTenant Owner (Bayi)'nin ismi--Opsiyonel
StorenamestringŞube adı2200Zorunlu
taxOfficestringVergi dairesi2100Zorunlu
websitestringWebsitesi2150Opsiyonel
emailstringE-posta adresi-320Opsiyonel
phoneNumberstringTelefon numarası1013Opsiyonel
faxstringFax numarası1013Opsiyonel
roomstringDaire numarası15Opsiyonel
streetNamestringSokak adı2250Opsiyonel
buildingNamestringApartman250Opsiyonel
buildingNumberstringBina numarası15Opsiyonel
citySubdivisionNamestringİlçe250Opsiyonel
cityNamestringŞehir330Zorunlu
postalCodestringPosta kodu55Opsiyonel
countryNamestringÜlke330Zorunlu
postalCodestringPosta kodu55Opsiyonel
tradeRegisterNostringTicaret sicil numarası012Opsiyonel (Ticaret Sicil Numarası veya MERSIS alanlarından birinin doldurulması zorunludur
mersisNostringMERSIS numarası016Opsiyonel (Ticaret Sicil Numarası veya MERSIS alanlarından birinin doldurulması zorunludur
emailServiceProductIdintegerE-Posta gönderim servisi plugin Id--Opsiyonel
accommodationTaxEnabledbooleanKonaklama vergisinin aktif olup olmadığı bilgisi (Varsayılan false)--Opsiyonel
accommodationTaxEnabledbooleanTicari Fatura desteğinin aktif olup olmadığı bilgisi (Varsayılan false)--Opsiyonel
sendEDocumentEmailCopyTostringMüşteriye gidecek fatura e-postalarının bir kopyasının da üye işyerine gitmesi isteniyorsa burada e-posta adresi verilir--Opsiyonel
docTypeintegerBelge tipi (1= EInvoice 2= EArchive 4= Paper 5= EDespatch 7= Esmm 8= ECheck 9= NonFinancialSlip)--Zorunlu
gbAliasstringGönderici birim etiketi-128Opsiyonel
integratorProductIdintegerEntegratör plugin Id--Zorunlu
integratorUidstringEntegratör kullanıcı adı-256Opsiyonel
integratorPwdstringEntegratör şifresi-512Opsiyonel
integratorOptionsstringEntegratör ek bilgi (KASA, SUBE vb.)--Opsiyonel
xsltFileBase64stringE-belgeler için dükkana özel fatura xslt şablonu. Verilmezse varsayılan şablon kullanılır--Opsiyonel
xsltLogoFileBase64stringE-belgeler için varsa dükkana özel fatura logosu--Opsiyonel
xsltFooterFileBase64stringE-belgeler için varsa dükkana özel fatura altında yer alacak html şablon--Opsiyonel
xsltSignatureFileBase64stringE-Belgeler için varsa firmaya özel ıslak imza (resim olarak)--Opsiyonel
languageIdintegerBu ayarların hangi dil için yapıldığı--Opsiyonel
emailTemplateKeystringDoküman e-posta şablon Id'si--Opsiyonel
cancelEmailTemplateKeystringİptal belgesi e-posta şablon Id'si--Opsiyonel
emailSubjectstringE-posta konusu metni--Opsiyonel
emailingInvoiceAttachmentTypeintegerPdf= 1, Html= 2 (E-posta gönderimini GMU yapacaksa fatura e-postaya html olarak mı pdf olarak mı eklenecek bilgisi)--Opsiyonel
taxNostringVKN/TCKN bilgisi1011Zorunlu
integrationIdstringEğer dükkan bir entegrasyon vasıtası ile açılmışsa tenantı açan taraftaki Id'si-100Opsiyonel
alternateIdstringIntegrationId'ye alternatif-100Opsiyonel
deviceApiAccessUsernamestringDükkana ait cihazlara giriş yapacak kullanıcının adı3254Zorunlu
deviceApiAccessPasswordstringDükkana ait cihazlara giriş yapacak kullanıcının şifresi660Zorunlu
DeviceserialNumberstringBenzersiz cihaz numarası (Sistemde aynı seri noya sahip birden fazla aktif cihaz olamaz), tebliğ kapsamında zorunludur5128Zorunlu
storeIdstringKaydın bağlı olduğu dükkanı gösteren Id1-Zorunlu
brandstringCihaz markası250Opsiyonel
modelstringCihaz modeli150Opsiyonel
certificationTypeintegerCihazın sertifikalı olup olmadığı bilgisi (Unknown=0, 1=DeviceCertified, 2=DeviceNotCertified)--Zorunlu
descriptionstringCihaz adı-500Opsiyonel
integrationIdstringEğer cihaz bir entegrasyon vasıtası ile açılmışsa cihaz açan taraftaki Id'si-100Opsiyonel
alternateIdstringIntegrationId'ye alternatif-100Opsiyonel