Laravel - Преобразование моего простого PHP-кода в Laravel (Controller и View) - PullRequest
0 голосов
/ 18 июня 2019

Я работаю над интеграцией платежей.

Payment

Это моя модель класса

Модель: PayData:

{
    protected $fillable = [
        'key',
        'email',
        'amount',
        'ref',
        'mobileNumber'
        ];
}

У меня есть простой PHP-код, который я хочу преобразовать в Laravel. Я хочу создать контроллер и просматривать с простым кодом PHP:

Простой код PHP ниже:

The form is shown below:

<form>
  <script src="https://js.stack.co/v1/inline.js"></script>
  <button type="button" onclick="payWithStack()"> Pay </button> 
</form>

функция payWithStack

<!-- place below the html form -->
<script>
  function payWithStack(){
    var handler = PaystackPop.setup({
      key: 'paste your key here',
      email: 'customer@email.com',
      amount: 10000,
      ref: ''+Math.floor((Math.random() * 1000000000) + 1), // generates a pseudo-unique reference. Please replace with a reference you generated. Or remove the line entirely so our API will generate one for you
      metadata: {
         custom_fields: [
            {
                display_name: "Mobile Number",
                variable_name: "mobile_number",
                value: "+2348012345678"
            }
         ]
      },
      callback: function(response){
          alert('success. transaction ref is ' + response.reference);
      },
      onClose: function(){
          alert('window closed');
      }
    });
    handler.openIframe();
  }
</script>

initialize.php

<?php
$curl = curl_init();

$email = "your@email.com";
$amount = 30000;  //the amount in kobo. This value is actually NGN 300

// url to go to after payment
$callback_url = 'myapp.com/pay/callback.php';  

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.paystack.co/transaction/initialize",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode([
 'amount'=>$amount,
 'email'=>$email,
 'callback_url' => $callback_url
  ]),
  CURLOPT_HTTPHEADER => [
  "authorization: Bearer sk_test_36658e3260b1d1668b563e6d8268e46ad6da3273", 
//replace this with your own test key
"content-type: application/json",
"cache-control: no-cache"
],
));

$response = curl_exec($curl);
$err = curl_error($curl);

if($err){
// there was an error contacting the Paystack API
die('Curl returned error: ' . $err);
}

$tranx = json_decode($response, true);

if(!$tranx->status){
 // there was an error from the API
  print_r('API returned error: ' . $tranx['message']);
}

// comment out this line if you want to redirect the user to the payment page
print_r($tranx);
  // redirect to page so User can pay
  // uncomment this line to allow the user redirect to the payment page
  header('Location: ' . $tranx['data']['authorization_url']);

callback.php

<?php

$curl = curl_init();
$reference = isset($_GET['reference']) ? $_GET['reference'] : '';
if(!$reference){
  die('No reference supplied');
}

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.paystack.co/transaction/verify/" . rawurlencode($reference),
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    "accept: application/json",
    "authorization: Bearer sk_test_36658e3260b1d1668b563e6d8268e46ad6da3273",
    "cache-control: no-cache"
  ],
));

$response = curl_exec($curl);
$err = curl_error($curl);

if($err){
    // there was an error contacting the Paystack API
  die('Curl returned error: ' . $err);
}

$tranx = json_decode($response);

if(!$tranx->status){
  // there was an error from the API
  die('API returned error: ' . $tranx->message);
}

if('success' == $tranx->data->status){
  // transaction was successful...
  // please check other things like whether you already gave value for this ref
  // if the email matches the customer who owns the product etc
  // Give value
  echo "<h2>Thank you for making a purchase. Your file has bee sent your email.</h2>"
}

Как мне получить этот простой PHP-код в Laravel

1 Ответ

0 голосов
/ 18 июня 2019

Оке первый: не торопитесь, чтобы изучить и понять структуру Laravel.

Laravel - это фреймворк PHP, это означает, что вы на самом деле не конвертируете простой PHP в Laravel PHP. Любой простой PHP будет работать в Laravel, но иногда вещи должны быть в определенной структуре или порядке.

Я предлагаю начать с создания проекта laravel, следовать некоторым учебникам по Laracast и посмотреть несколько видео на YouTube о структуре laravel.

Тогда:

  1. Создайте новое представление для формы и javascript в папке ресурсов (или создайте ссылку на файл js внутри представления)
  2. Создайте контроллер в папке app / http / controllers. Весь ваш код из initialize.php может входить в функцию, которую вы можете назвать initalize (), а код из callback.php - в функцию, которую вы можете назвать callback ().
  3. Создайте как минимум 2 маршрута в файле route / web.php 1 для функции инициализации и один для функции обратного вызова.
  4. Не уверен, как работает стек, но я думаю, что вы можете добавить 2 маршрута или хотя бы маршрут обратного вызова в конфигурацию стека (или другого поставщика платежей).

Надеюсь, это поможет начать.

Веселого обучения / кодирования / создания!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...