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
Merhaba,
elinize sağlık çok teşekkür ederim bende bunu arıyordum bir deneme yapacağım ve daha sonra tekrar yazacağım.
Hocam tam kodları varsa mail atabilir misiniz?
Emeğinize sağlık üstat.
Paraşüt fatura görünümünü nasıl çektin acaba bilgi verir misin bu konuda?