Php ile paraşütü entegre etmeyi denedim.Üye kaydı, ürün eklemek ve fatura oluşturmayı ve 3 db’de 3 tablo ele aldım.Gerekli kodları paylaştım siz kendinize göre düzenleyebilirsiniz.
include 'setting.php'; include 'parasut/Client.php'; include 'parasut/Base.php'; include 'parasut/Account.php'; include 'parasut/Product.php'; include 'parasut/Invoice.php'; $client = new parasut\Client([ "client_id" => "client id", "username" => "username", "password" => "şifre", "grant_type" => "password", "redirect_uri" => "urn:ietf:wg:oauth:2.0:oob", 'company_id' => "company id" ]);
Burada setting.php db ayarları ve bağlantısı var.Diğerler netinternetin hazırlamış olduğu classları kullandım.Paraşüt bilgilerini belirledim
$siparisbul = $conn -> query("select * from siparisler where Id = 1 ")->fetch(); if(!$siparisbul) exit; $uyebul = $conn -> query("select * from uyeler where id = ".intval($siparisbul['uyeid'])." ")->fetch(); if(!$uyebul) exit;
Yukarıda bir siparişi ve siparişden gelen uyeid’yi uyeler tablousundan bilgileri çektim.Eğer uyeler tablosundaki parasutuyeid alanı 0 ise kayıt oluşturup ardından ürün ekleyip ve faturayı oluşturdum.Fatura oluştururken sizden ürün bilgileri dizi şeklinde istiyor ben ben sadece [0] 1 ürün şeklinde gönderdim.Normal birden çok ürün varsa sipariş dizi olarak yollamak gerekiyor.
if($uyebul['parasutuyeid'] == 0){ ## Üye bilgileri $m_mail = $uyebul['mail']; $m_username = $uyebul['kulladi']; $m_nickname = $uyebul['kulladi']; $m_city = $uyebul['sehir']; $m_adres = $uyebul['adres']; $m_district = $uyebul['ilce']; $m_phone = $uyebul['telefon']; $m_taxnumber = $uyebul['tcno']; $m_taxoffice = $uyebul['ilce']; ## Kayıt Dizi $customer = array ( 'data' => array ( 'type' => 'contacts', 'attributes' => array ( 'email' => $m_mail, 'name' => $m_username, // gerekli 'short_name' => $m_nickname, 'contact_type' => 'person', // bireysel yada kurumsal 'district' => $m_district, 'city' => $m_city, 'address' => $m_adres, 'phone' => $m_phone, 'account_type' => 'customer', // gerekli 'tax_number' => $m_taxnumber, 'tax_office' => $m_taxoffice ) ), ); $uye = $client->call(Parasut\Account::class)->create($customer); // Kayıt Oluştur $uyeid = $uye['data']['id']; // paraşütün verdiği uye id $sql = $conn -> prepare("update uyeler SET parasutuyeid = :parasutuyeid where id = :id"); $ekle = $sql-> execute(array( "parasutuyeid" => $uyeid ,"id"=> $uyebul['id'])); // burada uyeler tablosuna parasutden gelen id'yi güncelledim $sql = $conn -> prepare("update siparisler SET parasutuyeid = :parasutuyeid where Id = :Id"); // Aynı şekilde siparisler tablosunada yazdırdım kurgu size bağlı $ekle = $sql-> execute(array( "parasutuyeid" => $uyeid,"Id"=> $siparisbul['Id'])); if(!$ekle){ var_dump($sql -> errorInfo() ); // hata } ## Urun Cek $urunCek = $conn->query("select * from urunler where Id = ".$siparisbul['urunid']." ")->fetch(); // ürünü çekip urun bilgieri ### Ürün Ekleme $productArr = array( 'data' => array ( 'type' => 'products', 'attributes' => array ( 'name' => $urunCek['urunadi'], ) ) ); $urunekle = $client->call(parasut\Product::class)->create($productArr); // parasute ürün ekleme $parasuturunid = $urunekle['data']['id']; ## Fatura $invoice = array ( 'data' => array ( 'type' => 'sales_invoices', // gerekli 'attributes' => array ( 'item_type' => 'invoice', // gerekli 'description' => 'Description', 'issue_date' => '2019-03-19', // fatura tarih 'due_date' => '2019-03-19', 'invoice_series' => 'test', 'invoice_id' => 1, 'currency' => 'TRL' ), 'relationships' => array ( 'details' => array ( 'data' =>array ( 0 => array ( 'type' => 'sales_invoice_details', 'attributes' => array ( 'quantity' => 1, 'unit_price' => $urunCek['yfiyat'], 'vat_rate' => 18, 'description' => $urunCek['urunadi'] ), "relationships" => array ( "product" => array ( "data" => array ( "id" => $parasuturunid, "type" => "products" ) ) ) ) ), ), 'contact' => array ( 'data' => array ( 'id' => $uyeid, 'type' => 'contacts' ) ) ), ) ); ## Fatura Oluştur $fatura = $client->call( parasut\Invoice::class ) ->create($invoice); // fatura oluştur $faturaid = $fatura['data']['id']; // parasutun verdiği fatura id $sql = $conn -> prepare("update siparisler SET parasutfaturaid = :parasutfaturaid where Id = :Id"); // siparişler tablosunda fatura id 'yi güncelledim $ekle = $sql-> execute(array( "parasutfaturaid" => $faturaid,"Id"=> $siparisbul['Id'])); if(!$ekle){ var_dump($sql -> errorInfo() ); } }else{ echo 'Fatura Oluşturuldu'; // bir daha işlem yapma }
Anlatım bozuklukları olabilir bunun için kusura bakmayın.Burda sipariş tablosuna sorgu yapıp gelen parasurfatuta id si aşağıdaki sorguya vererek fatura ayrıntılarını alabilirsiniz.
// $id = '11667674'; // dbden gelen id $faturagoster = $client -> call(Parasut\Invoice::class)->show($id); echo '<pre>'; var_dump($faturagoster['data']); echo '</pre>';
Kaynaklar
Github Netinternet
Paraşüt Api