Php ile Paraşüt Api Entegre

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

1 Yorum

  1. Merhaba,
    elinize sağlık çok teşekkür ederim bende bunu arıyordum bir deneme yapacağım ve daha sonra tekrar yazacağım.

    Yanıt

Yorum Bırak.