Call to undefined method Unicodeveloper\Paystack\Paystack::createSubAccount()
I tried implementing the subaccount creation using the Laravel api method Paystack::createSubAccount(); but returned the error "Call to undefined method Unicodeveloper\Paystack\Paystack::createSubAccount()". I also noticed that all the other subaccount methods to fetchsubaccount or list subaccount have no implementation yet.
Hello good day . If you check the repo here on GitHub , you would see that the methods for subaccounts have been implemented . However for some reason , the package doesn't auto update on packagist ( where composer fetches the package from ) . Hence when you use " composer require unicodeveloper/laravel-paystack" , composer installs an older version of the package that existed before Paystack implemented the subaccounts feature
please i need your help. i want to integrate paystack payment getway in laravel 8 livewire component but am having this error Error Call to undefined method Unicodeveloper\Paystack\Paystack::make() http://localhost:8000/checkout take look at my settings For Checkout component
validateOnly($fields,[ 'firstname' =>'required', 'lastname' =>'required', 'mobile' =>'required|numeric', 'email' =>'required|email', 'line1' =>'required', 'city' =>'required', 'province' =>'required', 'country' =>'required', 'zipcode' =>'required', 'paymentmode' => 'required' ]); if($this->ship_to_different) { $this->validateOnly($fields,[ 's_firstname' =>'required', 's_lastname' =>'required', 's_mobile' =>'required|numeric', 's_email' =>'required|email', 's_line1' =>'required', 's_city' =>'required', 's_province' =>'required', 's_country' =>'required', 's_zipcode' =>'required' ]); } if($this->paymentmode == 'card') { $this->validateOnly($fields,[ 'card_no' => 'required|numeric', 'exp_month' => 'required|numeric', 'exp_year' => 'required|numeric', 'cvc' => 'required|numeric' ]); } } public function placeOrder() { $this->validate([ 'firstname' =>'required', 'lastname' =>'required', 'mobile' =>'required|numeric', 'email' =>'required|email', 'line1' =>'required', 'city' =>'required', 'province' =>'required', 'country' =>'required', 'zipcode' =>'required', 'paymentmode' => 'required' ]); if($this->paymentmode == 'card') { $this->validate([ 'card_no' => 'required|numeric', 'exp_month' => 'required|numeric', 'exp_year' => 'required|numeric', 'cvc' => 'required|numeric' ]); } $order = new Order(); $order->user_id = Auth::user()->id; $order->subtotal = session()->get('checkout')['subtotal']; $order->discount = session()->get('checkout')['discount']; $order->tax = session()->get('checkout')['tax']; $order->total = session()->get('checkout')['total']; $order-> firstname = $this->firstname; $order-> lastname = $this->lastname; $order-> mobile = $this->mobile; $order-> email = $this->email; $order-> line1 = $this->line1; $order-> line2 = $this->line2; $order-> city = $this->city; $order-> province = $this->province; $order-> country = $this->country; $order-> zipcode = $this->zipcode; $order->status = 'ordered'; $order->is_shipping_different = $this->ship_to_different ? 1:0; $order->save(); foreach(Cart::instance('cart')->content()as $item) { $orderItem = new OrderItem(); $orderItem->product_id = $item->id; $orderItem->order_id = $order->id; $orderItem->price = $item->price; $orderItem->quantity = $item->qty; $orderItem->save(); } if($this->ship_to_different) { $this->validate([ 's_firstname' =>'required', 's_lastname' =>'required', 's_mobile' =>'required|numeric', 's_email' =>'required|email', 's_line1' =>'required', 's_city' =>'required', 's_province' =>'required', 's_country' =>'required', 's_zipcode' =>'required' ]); $shipping = new Shipping(); $shipping->order_id = $order->id; $shipping-> firstname = $this->s_firstname; $shipping-> lastname = $this->s_lastname; $shipping-> mobile = $this->s_mobile; $shipping-> email = $this->s_email; $shipping-> line1 = $this->s_line1; $shipping-> line2 = $this->s_line2; $shipping-> city = $this->s_city; $shipping-> province = $this->s_province; $shipping-> country = $this->s_country; $shipping-> zipcode = $this->s_zipcode; $shipping->save(); } if($this->paymentmode == 'cod') { $this->makeTransaction($order->id,'pending'); $this->resetCart(); } else if($this->paymentmode == 'card') { $paystack = Paystack::make(env('sk_test_827a36210be0e3a737f323aecd3c2cd0dd6b2615')); try{ $token = $paystack->tokens()->create([ 'card' => [ 'number' => $this->card_no, 'exp_month' => $this->exp_month, 'exp_year' => $this->exp_year, 'cvc' => $this->cvc ] ]); if(!isset($token['id'])) { session()->flash('paystack_error','The Paystack token was not generated correctly!'); $this-> thankyou = 0; } $customer = $paystack-> customers()->create([ 'name' => $this->firstname . ' ' . $this->lastname, 'phone' =>$this->mobile, 'email' =>$this->email, 'address' =>[ 'line1' =>$this->line1, 'postal_code' =>$this->zipcode, 'state' => $this->state, 'country' => $this->country ], 'shipping' => [ 'name' => $this->firstname . '' . $this->lastname, 'address' =>[ 'line1' =>$this->line1, 'postal_code' =>$this->zipcode, 'state' => $this->state, 'country' => $this->country ], ], 'source' => $token['id'] ]); $charge = $paystack->charges()->create([ 'customer' => $customer['id'], 'currency' => 'NGN', 'amount' => session()->get('checkout')['total'], 'description' => 'payment for order no' . $order->id ]); if($charge['status'] == 'succeeded') { $this-> makeTransaction($order->id, 'approved'); $this->resetCart(); } else { session()->flash('paystack_error','Error in Transaction!'); $this->thankyou = 0; } }catch(Exception $e){ session()->flash('paystack_error',$e->getMessage()); $this->thankyou = 0; } } } public function resetCart() { $this->thankyou = 1; Cart::instance('cart')->destroy(); session()->forget('checkout'); } public function makeTransaction($order_id,$status) { $transaction = new Transaction(); $transaction->user_id = Auth::user()->id; $transaction->order_id = $order_id; $transaction->mode = $this->paymentmode; $transaction->status = $status; $transaction->save(); } public function verifyForCheckout() { if(!Auth::check()) { return redirect()->route('login'); } else if($this->thankyou) { return redirect()->route('thankyou'); } else if(!session()->get('checkout')) { return redirect()->route('product.cart'); } } public function render() { $this->verifyForCheckout(); return view('livewire.checkout-component')->layout("layouts.base"); } } For config/app/settings env('APP_NAME', 'Laravel'), /* |-------------------------------------------------------------------------- | Application Environment |-------------------------------------------------------------------------- | | This value determines the "environment" your application is currently | running in. This may determine how you prefer to configure various | services the application utilizes. Set this in your ".env" file. | */ 'env' => env('APP_ENV', 'production'), /* |-------------------------------------------------------------------------- | Application Debug Mode |-------------------------------------------------------------------------- | | When your application is in debug mode, detailed error messages with | stack traces will be shown on every error that occurs within your | application. If disabled, a simple generic error page is shown. | */ 'debug' => (bool) env('APP_DEBUG', false), /* |-------------------------------------------------------------------------- | Application URL |-------------------------------------------------------------------------- | | This URL is used by the console to properly generate URLs when using | the Artisan command line tool. You should set this to the root of | your application so that it is used when running Artisan tasks. | */ 'url' => env('APP_URL', 'http://localhost'), 'asset_url' => env('ASSET_URL', null), /* |-------------------------------------------------------------------------- | Application Timezone |-------------------------------------------------------------------------- | | Here you may specify the default timezone for your application, which | will be used by the PHP date and date-time functions. We have gone | ahead and set this to a sensible default for you out of the box. | */ 'timezone' => 'UTC', /* |-------------------------------------------------------------------------- | Application Locale Configuration |-------------------------------------------------------------------------- | | The application locale determines the default locale that will be used | by the translation service provider. You are free to set this value | to any of the locales which will be supported by the application. | */ 'locale' => 'en', /* |-------------------------------------------------------------------------- | Application Fallback Locale |-------------------------------------------------------------------------- | | The fallback locale determines the locale to use when the current one | is not available. You may change the value to correspond to any of | the language folders that are provided through your application. | */ 'fallback_locale' => 'en', /* |-------------------------------------------------------------------------- | Faker Locale |-------------------------------------------------------------------------- | | This locale will be used by the Faker PHP library when generating fake | data for your database seeds. For example, this will be used to get | localized telephone numbers, street address information and more. | */ 'faker_locale' => 'en_US', /* |-------------------------------------------------------------------------- | Encryption Key |-------------------------------------------------------------------------- | | This key is used by the Illuminate encrypter service and should be set | to a random, 32 character string, otherwise these encrypted strings | will not be safe. Please do this before deploying an application! | */ 'key' => env('APP_KEY'), 'cipher' => 'AES-256-CBC', /* |-------------------------------------------------------------------------- | Autoloaded Service Providers |-------------------------------------------------------------------------- | | The service providers listed here will be automatically loaded on the | request to your application. Feel free to add your own services to | this array to grant expanded functionality to your applications. | */ 'providers' => [ /* * Laravel Framework Service Providers... */ Illuminate\Auth\AuthServiceProvider::class, Illuminate\Broadcasting\BroadcastServiceProvider::class, Illuminate\Bus\BusServiceProvider::class, Illuminate\Cache\CacheServiceProvider::class, Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, Illuminate\Cookie\CookieServiceProvider::class, Illuminate\Database\DatabaseServiceProvider::class, Illuminate\Encryption\EncryptionServiceProvider::class, Illuminate\Filesystem\FilesystemServiceProvider::class, Illuminate\Foundation\Providers\FoundationServiceProvider::class, Illuminate\Hashing\HashServiceProvider::class, Illuminate\Mail\MailServiceProvider::class, Illuminate\Notifications\NotificationServiceProvider::class, Illuminate\Pagination\PaginationServiceProvider::class, Illuminate\Pipeline\PipelineServiceProvider::class, Illuminate\Queue\QueueServiceProvider::class, Illuminate\Redis\RedisServiceProvider::class, Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, Illuminate\Session\SessionServiceProvider::class, Illuminate\Translation\TranslationServiceProvider::class, Illuminate\Validation\ValidationServiceProvider::class, Illuminate\View\ViewServiceProvider::class, Gloudemans\Shoppingcart\ShoppingcartServiceProvider::class, Unicodeveloper\Paystack\PaystackServiceProvider::class, /* * Package Service Providers... */ /* * Application Service Providers... */ App\Providers\AppServiceProvider::class, App\Providers\AuthServiceProvider::class, // App\Providers\BroadcastServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, App\Providers\FortifyServiceProvider::class, App\Providers\JetstreamServiceProvider::class, ], /* |-------------------------------------------------------------------------- | Class Aliases |-------------------------------------------------------------------------- | | This array of class aliases will be registered when this application | is started. However, feel free to register as many as you wish as | the aliases are "lazy" loaded so they don't hinder performance. | */ 'aliases' => [ 'App' => Illuminate\Support\Facades\App::class, 'Arr' => Illuminate\Support\Arr::class, 'Artisan' => Illuminate\Support\Facades\Artisan::class, 'Auth' => Illuminate\Support\Facades\Auth::class, 'Blade' => Illuminate\Support\Facades\Blade::class, 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, 'Bus' => Illuminate\Support\Facades\Bus::class, 'Cache' => Illuminate\Support\Facades\Cache::class, 'Config' => Illuminate\Support\Facades\Config::class, 'Cookie' => Illuminate\Support\Facades\Cookie::class, 'Crypt' => Illuminate\Support\Facades\Crypt::class, 'Date' => Illuminate\Support\Facades\Date::class, 'DB' => Illuminate\Support\Facades\DB::class, 'Eloquent' => Illuminate\Database\Eloquent\Model::class, 'Event' => Illuminate\Support\Facades\Event::class, 'File' => Illuminate\Support\Facades\File::class, 'Gate' => Illuminate\Support\Facades\Gate::class, 'Hash' => Illuminate\Support\Facades\Hash::class, 'Http' => Illuminate\Support\Facades\Http::class, 'Lang' => Illuminate\Support\Facades\Lang::class, 'Log' => Illuminate\Support\Facades\Log::class, 'Mail' => Illuminate\Support\Facades\Mail::class, 'Notification' => Illuminate\Support\Facades\Notification::class, 'Password' => Illuminate\Support\Facades\Password::class, 'Queue' => Illuminate\Support\Facades\Queue::class, 'RateLimiter' => Illuminate\Support\Facades\RateLimiter::class, 'Redirect' => Illuminate\Support\Facades\Redirect::class, 'Redis' => Illuminate\Support\Facades\Redis::class, 'Request' => Illuminate\Support\Facades\Request::class, 'Response' => Illuminate\Support\Facades\Response::class, 'Route' => Illuminate\Support\Facades\Route::class, 'Schema' => Illuminate\Support\Facades\Schema::class, 'Session' => Illuminate\Support\Facades\Session::class, 'Storage' => Illuminate\Support\Facades\Storage::class, 'Str' => Illuminate\Support\Str::class, 'URL' => Illuminate\Support\Facades\URL::class, 'Validator' => Illuminate\Support\Facades\Validator::class, 'View' => Illuminate\Support\Facades\View::class, 'Cart'=> Gloudemans\Shoppingcart\Facades\Cart::class, 'Paystack' => Unicodeveloper\Paystack\Facades\Paystack::class, ], ]; For env. settings PAYSTACK_PUBLIC_KEY=pk_test_1694c701c73219fd261e3d324c2be6d9fd72acbd PAYSTACK_SECRET_KEY=sk_test_827a36210be0e3a737f323aecd3c2cd0dd6b2615 PAYSTACK_PAYMENT_URL=https://api.paystack.co [email protected] and For Checkout resources/ view/livewireReturning customer? Click here to login
Quisque gravida turpis sit amet nulla posuere lacinia. Cras sed est sit amet ipsum luctus.