yabacon / paystack-php

A PHP Wrapper for Paystack API - https://www.paystack.com
MIT License
109 stars 70 forks source link

'Please waith' Loading never goes away #33

Open marshallunduemi opened 3 years ago

marshallunduemi commented 3 years ago

Actual Results:

There were no error messages

http://prntscr.com/usngk8


<?php
require_once 'vendor/autoload.php';

// documented at https://github.com/yabacon/paystack-php
use Yabacon\Paystack;
use Yabacon\Paystack\MetadataBuilder;

define('PAYSTACK', '1');

define('PAYSTACK_SECRET', 'sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
$path = filter_input(INPUT_GET, 'path');

// sample code to start a transaction
// more about thr transaction/initialize enpoint
// here: https://developers.paystack.co/v1.0/reference#initialize-a-transaction
if($path === 'new-access-code'){
    if(!(($email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL)) 
        && ($amount = filter_input(INPUT_POST, 'amount', FILTER_VALIDATE_FLOAT)))){
        http_response_code(400);
        die('Invalid Email or amount sent');
    }

    $amountinkobo = 100 * $amount;
    $builder = new MetadataBuilder();
    $builder->withCustomField('MyStudio', 'Premium Plan Charge');
    time()%2 && $builder->withCustomFilters(['recurring'=>true]);
    $metadata = $builder->build();

    try{
        $paystack = new Paystack(PAYSTACK_SECRET);
        $paystack->disableFileGetContentsFallback();
        $trx = $paystack->transaction->initialize([
            'amount'=>$amountinkobo,
            'email'=>$email,
            'metadata'=>$metadata,
        ]);
    } catch(Exception $e){
        http_response_code(400);
        die($e->getMessage());
    }

    die($trx->data->access_code);
}

// sample code to verify a transaction reference
// more about the transaction/verify enpoint
// here: https://developers.paystack.co/v1.0/reference#verifying-transactions
if(strpos($path, 'verify/') === 0){
    // whatever is after verify is our refernce
    $reference = substr($path, 7);

    try{
        $paystack = new Paystack(PAYSTACK_SECRET);
        $paystack->disableFileGetContentsFallback();
        $trx = $paystack->transaction->verify([
            'reference'=>$reference,
        ]);
    } catch(Exception $e){
        http_response_code(400);
        die($e->getMessage());
    }

    if($trx->data->status === 'success'){
        // give value
        require '../config.php';
        //require '../logged_user_info.php';

        //genereate a unique token for each transaction secure system
        //$token = bin2hex(openssl_random_pseudo_bytes(6));
        $dated=time();
        $timeDated=date('D, M m, Y ');
        $SubscribePlan=$db->query("INSERT INTO service_sub (user_id_fk, tr_id_fk, sub_type, timeDated, sub_dated)
            VALUES ('$user_uid', '$reference', 'premium', '$timeDated', '$dated' )");

        $SubscribePlan=$db->query("UPDATE users SET service_status='on', tr_id='$reference' WHERE uid='$user_uid' ");

                # code...
          echo '<div class="notice success"><p>Your account is now activated to Premium.</p>
           <a href="../subscription.php" class="btn btn-azure" data-paystack="submit">Finished</a></div>';

    }

    // dump gateway response for display to user
    die($trx->data->gateway_response);
}

// our payment form
if($path === 'payment'){
    include_once 'pay.php';
    die();
}

// our payment form
if(($path === '/') || ($path === '')){
    include_once 'pay.php';
    die();
}

// log a client-side error
if($path === 'report'){
    file_put_contents('client-errors.log', "\n".json_encode($_POST), FILE_APPEND);
    die();
}

// if it got here, it was neither of the recognized paths
// show the welcome message
http_response_code(404);
?><p>Your server is set up.
    <br>/<?php echo $path; ?> does not exist<br>
    Open <i>/payment</i> to test the form.
    </p>