123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- <?php
- namespace App\Http\Controllers\Api\V2;
- use App\Models\BusinessSetting;
- use App\Http\Controllers\CheckoutController;
- use App\Http\Controllers\CustomerPackageController;
- use App\Http\Controllers\WalletController;
- use App\Models\CombinedOrder;
- use App\Models\User;
- use Illuminate\Http\Request;
- use Redirect;
- class IyzicoController extends Controller
- {
- public function init(Request $request)
- {
- $payment_type = $request->payment_type;
- $combined_order_id = $request->combined_order_id;
- $amount = $request->amount;
- $user_id = $request->user_id;
- $options = new \Iyzipay\Options();
- $options->setApiKey(env('IYZICO_API_KEY'));
- $options->setSecretKey(env('IYZICO_SECRET_KEY'));
- if (get_setting('iyzico_sandbox') == 1) {
- $options->setBaseUrl("https://sandbox-api.iyzipay.com");
- } else {
- $options->setBaseUrl("https://api.iyzipay.com");
- }
- $iyzicoRequest = new \Iyzipay\Request\CreatePayWithIyzicoInitializeRequest();
- $iyzicoRequest->setLocale(\Iyzipay\Model\Locale::TR);
- $iyzicoRequest->setConversationId('123456789');
- $buyer = new \Iyzipay\Model\Buyer();
- $buyer->setId("BY789");
- $buyer->setName("John");
- $buyer->setSurname("Doe");
- $buyer->setEmail("email@email.com");
- $buyer->setIdentityNumber("74300864791");
- $buyer->setRegistrationAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
- $buyer->setCity("Istanbul");
- $buyer->setCountry("Turkey");
- $iyzicoRequest->setBuyer($buyer);
- $shippingAddress = new \Iyzipay\Model\Address();
- $shippingAddress->setContactName("Jane Doe");
- $shippingAddress->setCity("Istanbul");
- $shippingAddress->setCountry("Turkey");
- $shippingAddress->setAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
- $iyzicoRequest->setShippingAddress($shippingAddress);
- $billingAddress = new \Iyzipay\Model\Address();
- $billingAddress->setContactName("Jane Doe");
- $billingAddress->setCity("Istanbul");
- $billingAddress->setCountry("Turkey");
- $billingAddress->setAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
- $iyzicoRequest->setBillingAddress($billingAddress);
- if ($payment_type == 'cart_payment') {
- $combined_order = CombinedOrder::find($combined_order_id);
- $iyzicoRequest->setPrice(round($combined_order->grand_total));
- $iyzicoRequest->setPaidPrice(round($combined_order->grand_total));
- $iyzicoRequest->setCurrency(\Iyzipay\Model\Currency::TL);
- $iyzicoRequest->setBasketId(rand(000000, 999999));
- $iyzicoRequest->setPaymentGroup(\Iyzipay\Model\PaymentGroup::SUBSCRIPTION);
- $iyzicoRequest->setCallbackUrl(route('api.iyzico.callback'));
- $basketItems = array();
- $firstBasketItem = new \Iyzipay\Model\BasketItem();
- $firstBasketItem->setId(rand(1000, 9999));
- $firstBasketItem->setName("Cart Payment");
- $firstBasketItem->setCategory1("Accessories");
- $firstBasketItem->setItemType(\Iyzipay\Model\BasketItemType::VIRTUAL);
- $firstBasketItem->setPrice(round($combined_order->grand_total));
- $basketItems[0] = $firstBasketItem;
- $iyzicoRequest->setBasketItems($basketItems);
- } elseif ($payment_type == 'wallet_payment') {
- $iyzicoRequest->setPrice(round($amount));
- $iyzicoRequest->setPaidPrice(round($amount));
- $iyzicoRequest->setCurrency(\Iyzipay\Model\Currency::TL);
- $iyzicoRequest->setBasketId(rand(000000, 999999));
- $iyzicoRequest->setPaymentGroup(\Iyzipay\Model\PaymentGroup::SUBSCRIPTION);
- $iyzicoRequest->setCallbackUrl(route('api.iyzico.callback'));
- $basketItems = array();
- $firstBasketItem = new \Iyzipay\Model\BasketItem();
- $firstBasketItem->setId(rand(1000, 9999));
- $firstBasketItem->setName("Wallet Payment");
- $firstBasketItem->setCategory1("Wallet");
- $firstBasketItem->setItemType(\Iyzipay\Model\BasketItemType::VIRTUAL);
- $firstBasketItem->setPrice(round($amount));
- $basketItems[0] = $firstBasketItem;
- $iyzicoRequest->setBasketItems($basketItems);
- }
- $payWithIyzicoInitialize = \Iyzipay\Model\PayWithIyzicoInitialize::create($iyzicoRequest, $options);
- # print result
- return Redirect::to($payWithIyzicoInitialize->getPayWithIyzicoPageUrl());
- }
- public function callback(Request $request)
- {
- $options = new \Iyzipay\Options();
- $options->setApiKey(env('IYZICO_API_KEY'));
- $options->setSecretKey(env('IYZICO_SECRET_KEY'));
- if (BusinessSetting::where('type', 'iyzico_sandbox')->first()->value == 1) {
- $options->setBaseUrl("https://sandbox-api.iyzipay.com");
- } else {
- $options->setBaseUrl("https://api.iyzipay.com");
- }
- $iyzicoRequest = new \Iyzipay\Request\RetrievePayWithIyzicoRequest();
- $iyzicoRequest->setLocale(\Iyzipay\Model\Locale::TR);
- $iyzicoRequest->setConversationId('123456789');
- $iyzicoRequest->setToken($request->token);
- # make request
- $payWithIyzico = \Iyzipay\Model\PayWithIyzico::retrieve($iyzicoRequest, $options);
- $payment = $payWithIyzico->getRawResult();
- if ($payWithIyzico->getStatus() == 'success') {
- return response()->json(['result' => true, 'message' => translate("Payment is successful"), 'payment_details' => $payment]);
- } else {
- return response()->json(['result' => false, 'message' => translate("Payment unsuccessful"), 'payment_details' => $payment]);
- }
- }
- // the callback function is in the main controller of web | paystackcontroller
- public function success(Request $request)
- {
- try {
- $payment_type = $request->payment_type;
- if ($payment_type == 'cart_payment') {
- checkout_done($request->combined_order_id, $request->payment_details);
- }
- if ($payment_type == 'wallet_payment') {
- wallet_payment_done($request->user_id, $request->amount, 'Paystack', $request->payment_details);
- }
- return response()->json(['result' => true, 'message' => translate("Payment is successful")]);
- } catch (\Exception $e) {
- return response()->json(['result' => false, 'message' => $e->getMessage()]);
- }
- }
- }
|