65 lines
2.1 KiB
PHP
65 lines
2.1 KiB
PHP
<?php
|
|
|
|
|
|
namespace App\Http\Controllers\Api\V2;
|
|
|
|
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 Paystack;
|
|
|
|
class PaystackController extends Controller
|
|
{
|
|
|
|
public function init(Request $request)
|
|
{
|
|
$amount = $request->amount;
|
|
if ($request->combined_order_id) {
|
|
$combined_order = CombinedOrder::find($request->combined_order_id);
|
|
$amount = $combined_order->grand_total;
|
|
}
|
|
$user_id = $request->user_id;
|
|
|
|
$user = User::find($user_id);
|
|
$request->email = $user->email;
|
|
$request->amount = round($amount * 100);
|
|
$request->currency = env('PAYSTACK_CURRENCY_CODE', 'NGN');
|
|
$request->reference = Paystack::genTranxRef();
|
|
return Paystack::getAuthorizationUrl()->redirectNow();
|
|
}
|
|
|
|
|
|
// the callback function is in the main controller of web | paystackcontroller
|
|
|
|
public function payment_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);
|
|
}
|
|
|
|
if ($payment_type == 'seller_package_payment') {
|
|
seller_purchase_payment_done($request->user_id, $request->package_id, $request->amount, 'Paystack', $request->payment_details);
|
|
}
|
|
|
|
if ($payment_type == 'customer_package_payment') {
|
|
customer_purchase_payment_done($request->user_id, $request->package_id);
|
|
}
|
|
|
|
return response()->json(['result' => true, 'message' => translate("Payment is successful")]);
|
|
} catch (\Exception $e) {
|
|
return response()->json(['result' => false, 'message' => $e->getMessage()]);
|
|
}
|
|
}
|
|
}
|