PHP pazaryeri sitesi için iyzico pazaryeri entegrasyonu hatası

Fragger

Kilopat
Katılım
4 Kasım 2017
Mesajlar
655
Çözümler
4
Yer
İstanbul
Daha fazla  
Sistem Özellikleri
Ekran Kartı: Geforce RTX 4060 Ti
Anakart: Asus Prime B550M-K
İşlemci: Ryzen 5 5600
RAM: GSKILL 8GB RIPJAWS V 2x8
SSD: Samsung 980 Pro 2TB
SSD2 : GOODRAM 512GB
Monitör: Dell E2417H
Sıvı Soğutma: PowerBoost NOBLE 120 Rainbow
PSU: FSP 650W
Cinsiyet
Erkek
Meslek
Finans
Arkadaşlar selam, ıyzico'nun normal sanal pos entegrasyonu var ve sağlam çalışıyor fakat projeyi pazaryeri olarak değiştirdiğimiz için, iyzico ile pazaryeri anlaşması yaptık, API alındı fakat marketplace için submerchantkey hatası geldi.

Buradaki yönlendirmelere göre yaptım fakat bir türlü çözüme ulaşamadım.
iyzico.php içerisindeki çalışan sanal pos için kodlar aşağıdaki gibi;

PHP:
# create request class.
 $request = new \Iyzipay\Request\CreateCheckoutFormInitializeRequest();
 $request->setLocale(\Iyzipay\Model\Locale::TR);
 $request->setConversationId($conversation_id);
 $request->setPrice($item_basket_price);
 $request->setPaidPrice($item_basket_price);
 $request->setCurrency(\Iyzipay\Model\Currency::TL);
 $request->setPaymentGroup(\Iyzipay\Model\PaymentGroup::PRODUCT);
 $request->setCallbackUrl($callback_url);
 $request->setEnabledInstallments(array(2, 3, 6, 9));

 $buyer = new \Iyzipay\Model\Buyer();
 $buyer->setId($customer->id);
 $buyer->setName($customer->first_name);
 $buyer->setSurname($customer->last_name);
 $buyer->setGsmNumber($customer->phone_number);
 $buyer->setEmail($customer->email);
 $buyer->setIdentityNumber("11111111111");
 $buyer->setRegistrationAddress("not_set");
 $buyer->setIp($ip);
 $buyer->setCity("not_set");
 $buyer->setCountry("not_set");
 $buyer->setZipCode("not_set");
 $request->setBuyer($buyer);

 $shippingAddress = new \Iyzipay\Model\Address();
 $shippingAddress->setContactName("not_set");
 $shippingAddress->setCity("not_set");
 $shippingAddress->setCountry("not_set");
 $shippingAddress->setAddress("not_set");
 $shippingAddress->setZipCode("");
 $request->setShippingAddress($shippingAddress);

 $billingAddress = new \Iyzipay\Model\Address();
 $billingAddress->setContactName("not_set");
 $billingAddress->setCity("not_set");
 $billingAddress->setCountry("not_set");
 $billingAddress->setAddress("not_set");
 $billingAddress->setZipCode("");
 $request->setBillingAddress($billingAddress);

 $basketItems = array();
 $BasketItem = new \Iyzipay\Model\BasketItem();
 $BasketItem->setId("0");
 $BasketItem->setName($item_basket_name);
 $BasketItem->setCategory1($item_basket_category);
 $BasketItem->setItemType(\Iyzipay\Model\BasketItemType::PHYSICAL);
 $BasketItem->setPrice($item_basket_price);
 $basketItems[0] = $BasketItem;

Daha sonra Iyzico'nun submerchantkey için paylaştığı kodu $request kısımlarının tamamını yapıştırdım ve düzenledim.

PHP:
$request = new \Iyzipay\Request\CreateSubMerchantRequest();
 $request->setLocale(\Iyzipay\Model\Locale::TR);
 $request->setConversationId("$conversation_id");
 $request->setPrice($item_basket_price);
 $request->setPaidPrice($item_basket_price);
 $request->setSubMerchantExternalId("B49224");
 $request->setSubMerchantType(\Iyzipay\Model\SubMerchantType::PERSONAL);
 $request->setAddress("not_set");
 $request->setName("$customer->first_name");
 $request->setSurname("$customer->last_name");
 $request->setEmail("$customer->email");
 $request->setGsmNumber("$customer->phone_number");
 $request->setName("$customer->shop_name");
 $request->setIban("not_set");
 $request->setIdentityNumber("11111111111");
 $request->setCurrency(\Iyzipay\Model\Currency::TL);
 $request->setCallbackUrl($callback_url);
 $request->setEnabledInstallments(array(2, 3, 6, 9));

 # make request.
 $subMerchant = \Iyzipay\Model\SubMerchant::create($request, Config::options());

 # print result.
 print_r($subMerchant);

 $buyer = new \Iyzipay\Model\Buyer();
 $buyer->setId($customer->id);
 $buyer->setName($customer->first_name);
 $buyer->setSurname($customer->last_name);
 $buyer->setGsmNumber($customer->phone_number);
 $buyer->setEmail($customer->email);
 $buyer->setIdentityNumber("11111111111");
 $buyer->setRegistrationAddress("not_set");
 $buyer->setIp($ip);
 $buyer->setCity("not_set");
 $buyer->setCountry("not_set");
 $buyer->setZipCode("not_set");
 $request->setBuyer($buyer);

 $shippingAddress = new \Iyzipay\Model\Address();
 $shippingAddress->setContactName("not_set");
 $shippingAddress->setCity("not_set");
 $shippingAddress->setCountry("not_set");
 $shippingAddress->setAddress("not_set");
 $shippingAddress->setZipCode("");
 $request->setShippingAddress($shippingAddress);

 $billingAddress = new \Iyzipay\Model\Address();
 $billingAddress->setContactName("not_set");
 $billingAddress->setCity("not_set");
 $billingAddress->setCountry("not_set");
 $billingAddress->setAddress("not_set");
 $billingAddress->setZipCode("");
 $request->setBillingAddress($billingAddress);

 $basketItems = array();
 $BasketItem = new \Iyzipay\Model\BasketItem();
 $BasketItem->setId("0");
 $BasketItem->setName($item_basket_name);
 $BasketItem->setCategory1($item_basket_category);
 $BasketItem->setItemType(\Iyzipay\Model\BasketItemType::PHYSICAL);
 $BasketItem->setPrice($item_basket_price);
 $BasketItem->setSubMerchantKey("not_set");
 $BasketItem->setSubMerchantPrice("not_set");
 $basketItems[0] = $BasketItem;

Aşağıdaki gibi hata geldi:

1645470580681.png


Konuyla ilgili çözüm konusunda yardımcı olabilecek arkadaşlar PHP'de çok iyi olmadığım için cevap verirken biraz detaylı cevap verirlerse sevinirim.
 
Api ile ilgili hiçbir bilgim yok fakat aldığınız hata method bulunamadı hatası. İlgili sınıfı include ettiğinizden emin misiniz?

\Iyzipay\Request\CreateSubMerchantRequest()

Bunu bulamıyor. Kullandığınız ide'de de bunu bulamadığına dair hata göstermesi lazım. Muhtemelen bunu elle include etmeniz gerekiyor ya da api composer ile vs. geliyorsa autoloader include edilmemiş olabilir.
 
API ile ilgili hiçbir bilgim yok fakat aldığınız hata method bulunamadı hatası. İlgili sınıfı include ettiğinizden emin misiniz?

\Iyzipay\Request\CreateSubMerchantRequest()

Bunu bulamıyor. Kullandığınız IDE'de de bunu bulamadığına dair hata göstermesi lazım. Muhtemelen bunu elle include etmeniz gerekiyor ya da API composer ile vs. geliyorsa autoloader include edilmemiş olabilir.

iyzico.php üst kodlarında aslında include edildi ama.

Kod:
\Iyzipay\Request\CreateSubMerchantRequest()

Bunun da include mi edilmesi lazım onu şu anda bilemedim.

PHP:
<?php defined('BASEPATH') or exit('No direct script access allowed');
if (!empty($payment_gateway) && $payment_gateway->name_key == "iyzico"):
 require_once(APPPATH . 'third_party/iyzipay/vendor/autoload.php');
 require_once(APPPATH . 'third_party/iyzipay/vendor/iyzico/iyzipay-php/IyzipayBootstrap.php');
 IyzipayBootstrap::init();
 $options = new \Iyzipay\Options();
 $options->setApiKey($payment_gateway->public_key);
 $options->setSecretKey($payment_gateway->secret_key);
 if ($payment_gateway->environment == "sandbox") {
 $options->setBaseUrl("https://sandbox-api.iyzipay.com");
 } else {
 $options->setBaseUrl("https://api.iyzipay.com");
 }

 $conversation_id = generate_short_unique_id();
 $customer = get_cart_customer_data();
@Berkay Davas hocam bir bilginiz var mı acaba?
Bu arada SubMerchantkey'leri DB'de tutmuyoruz. Söylemeyi unutmuşum.
Mevcut $request yerine, Iyzico'nun aşağıdaki paylaştığı kodları yapıştırdığımda ve test etmeye çalıştığımda ise.

PHP:
# create request class.
 $request = new \Iyzipay\Request\CreateSubMerchantRequest();
 $request->setLocale(\Iyzipay\Model\Locale::TR);
 $request->setConversationId("123456789");
 $request->setSubMerchantExternalId("B49224");
 $request->setSubMerchantType(\Iyzipay\Model\SubMerchantType::PERSONAL);
 $request->setAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
 $request->setContactName("John");
 $request->setContactSurname("Doe");
 $request->setEmail("[email protected]");
 $request->setGsmNumber("+905350000000");
 $request->setName("John's market");
 $request->setIban("TR180006200119000006672315");
 $request->setIdentityNumber("31300864726");
 $request->setCurrency(\Iyzipay\Model\Currency::TL);

 # make request.
 $subMerchant = \Iyzipay\Model\SubMerchant::create($request, Config::options());

 # print result.
 print_r($subMerchant);

Aşağıdaki hatayı alıyorum.

1645473729687.png


74. satırda ise.

Kod:
 $subMerchant = \Iyzipay\Model\SubMerchant::create($request, Config::options());

Bu kod var.
Bilgisi olan yok mu?
 
Son düzenleme:

Yeni konular

Geri
Yukarı