Pliki cookie pomagają nam udostępniać nasze usługi. Korzystając z tych usług, zgadzasz się na użycie plików cookie. Więcej informacji
WebApi + Sz@rk Api - poczuj siłę mocy, czyli Shoper.pl jakiego nie znacie.

2012-01-16

Shoper.pl udostępnia zasoby sklepu internetowego za pomocą WebApi. Interfejs umożliwia sterowanie sklepem bez potrzeby logowania poprzez Panel Administracyjny ze strony internetowej.

Sz@rk korzysta z tego mechanizmu do importu i przetwarzania Zamówień, co zostało opisane w poprzednich dokumentach. Tym razem przedstawimy sposób na dostęp do sklepu z poziomu kodu dostępnego dla użytkowników Sz@rk.

W przykładzie zademonstrujemy dynamiczny dostęp do wybranego zamówienia i wydruk wg własnego projektu, który użytkownik może dowolnie przygotować za pomocą wbudowanego generatora raportów.

Szczegółowe informacje na temat Sz@rk API znajdziesz na naszym blogu , tutaj opiszemy klasy opracowane na potrzeby sterowania sklepem internetowym.

Na tle kodu zarejestrowanego przy użyciu Sz@rk Designer widać uruchomioną aplikację, która pobiera Zamówienie nr 26 ze Sklepu Internetowego i jest gotowa do wydruku.

Podgląd wydruku Zamówienia

Projektowanie wyglądu formularza Zamówienia. Generator dostępny jest w systemie Sz@rk bez dodatkowych opłat!

Poniżej przedstawiamy pełny kod programu wykorzystujący Sz@rk API do wykonania tego zadania:

namespace Szark
{
    using System;
    using System.Windows.Forms;
 
    public partial class Form1 : System.Windows.Forms.Form
    {
        private TGSoft.Data.Shoper.WebApi api;
        private TGSoft.Data.ApiDataTable order;
        private TGSoft.Data.ApiDataTable products;
        private TGSoft.Data.ApiDataTable payments;
        private TGSoft.Data.ApiDataTable shipping;
        private int order_id;
 
        public Form1(object sender)
        {
            this.InitializeComponent();
            button3.Click += button3_click;
            button1.Click += button1_click;
            this.FormClosing += Form1_FormClosing;
           
            api = new TGSoft.Data.Shoper.WebApi(9);
            button1.Enabled = api.Login();
            if (button1.Enabled)
            {
                payments = new TGSoft.Data.Shoper.Payment();
                payments.Engine = api;
 
                shipping = new TGSoft.Data.Shoper.Shipping();
                shipping.Engine = api;
            }
        }
 
        public void Main()
        {
            this.ShowDialog();
        }
       
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (api != null && api.Logged)
            {
                api.Logout();
            }
        }
 
        private void button1_click(object sender, EventArgs e)
        {
            order_id = Convert.ToInt32(numericUpDown1.Value);
            order = new TGSoft.Data.Shoper.Order();
            order.Engine = api;
            order.Open(order_id);
            dataGridView1.DataSource = order.DataSource;
            button3.Enabled = order.RecordCount > 0;
        }
 
        private void button3_click(object sender, EventArgs e)
        {
            products = new TGSoft.Data.Shoper.OrderProducts(order_id);
            products.Engine = api;
            products.Open();          
           
            TGSoft.Data.FastReportDlg fr = new TGSoft.Data.FastReportDlg("shoper", "order");
            fr.RegisterData(order.Table, "Order");
            fr.RegisterData(products.Table, "Products");
           
            payments.Open(order.FieldByName("payment_id"));
            if (payments.RecordCount == 1)
                fr.SetParameter("opis1", payments.FieldByName("name"));
           
            shipping.Open(order.FieldByName("shipping_id"));
            if (shipping.RecordCount == 1 )
                fr.SetParameter("opis2", shipping.FieldByName("name"));
           
            fr.ShowDialog();
            fr.Dispose();
        }
    }
}

Kilka słów komentarza do powyższego kodu.

TGSoft.Data.Shoper.WebApi api = new TGSoft.Data.Shoper.WebApi(9);
api.Login();
  • Tworzymy instancję klasy interfejsu WebApi, parametrem konstruktora jest Id sklepu internetowego. Program pobiera dane logowania z definicji Sklepu.
  • Logujemy się do Sklepu.
TGSoft.Data.ApiDataTable order = new TGSoft.Data.Shoper.Order();
rder.Engine = api;
rder.Open(order_id);
  • Tworzymy instancję klasy Zamówienia
  • Ładujemy żądane Zamówienie
  • order.OpenNew(order_id); - ładuje nowe zamówienia od podanego numeru
  • order.Open(); - ładuje wszystkie zamówienia