嗨,我正在尝试将razorpay付款网关集成到codeigniter中。我正在使用的代码是
<?php
class Payment_Gateway extends CI_Controller {
public function __construct() {
parent::__construct ();
$this->load->library('payment_gateway/razorpay-php/Razorpay');
}
public function payment(){
$this->load->view('pay');
}
}
?>
我将razorpay-php文件夹复制到system/libraries/payment_gateway
文件夹
<?php
$CI =& get_instance();
$CI->load->library('payment_gateway/razorpay-php/libs/Requests-1.6.1/library/Requests');
Requests::register_autoloader();
spl_autoload_register(function ($class)
{
// project-specific namespace prefix
$prefix = 'Razorpay\Api';
// base directory for the namespace prefix
$base_dir = __DIR__ . '/src/';
// does the class use the namespace prefix?
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) !== 0)
{
// no, move to the next registered autoloader
return;
}
// get the relative class name
$relative_class = substr($class, $len);
$file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
// if the file exists, require it
if (file_exists($file))
{
require $file;
}
});
<?php
error_reporting(E_ALL);ini_set('display_error', 'on');
extract($pay_data);
session_start();
$keyId = $keyId;
$keySecret = $keySecret;
$displayCurrency = $displayCurrency;
// Create the Razorpay Order
use Razorpay\Api\Api;
$api = new Api($keyId, $keySecret);
$orderData = [
'receipt' => 3456,
'amount' => $amount * 100, // 2000 rupees in paise
'currency' => 'INR',
'payment_capture' => 1 // auto capture
];
$razorpayOrder = $api->order->create($orderData);
$razorpayOrderId = $razorpayOrder['id'];
$_SESSION['razorpay_order_id'] = $razorpayOrderId;
$displayAmount = $amount = $orderData['amount'];
if ($displayCurrency !== 'INR')
{
$url = "https://api.fixer.io/latest?symbols=$displayCurrency&base=INR";
$exchange = json_decode(file_get_contents($url), true);
$displayAmount = $exchange['rates'][$displayCurrency] * $amount / 100;
}
$checkout = 'automatic';
if (isset($_GET['checkout']) and in_array($_GET['checkout'], ['automatic', 'manual'], true))
{
$checkout = $_GET['checkout'];
}
$data = [
"key" => $keyId,
"amount" => $amount,
"name" => "DJ Tiesto",
"description" => "Tron Legacy",
"image" => "https://s29.postimg.org/r6dj1g85z/daft_punk.jpg",
"prefill" => [
"name" => "Daft Punk",
"email" => "customer@merchant.com",
"contact" => "9999999999",
],
"notes" => [
"address" => "Hello World",
"merchant_order_id" => "12312321",
],
"theme" => [
"color" => "#F37254"
],
"order_id" => $razorpayOrderId,
];
if ($displayCurrency !== 'INR')
{
$data['display_currency'] = $displayCurrency;
$data['display_amount'] = $displayAmount;
}
$json = json_encode($data);
?>
<form action="<?php echo base_url(); ?>index.php/payment_gateway/verify" method="POST">
<script
src="https://checkout.razorpay.com/v1/checkout.js"
data-key="<?php echo $data['key']?>"
data-amount="<?php echo $data['amount']?>"
data-currency="INR"
data-name="<?php echo $data['name']?>"
data-image="<?php echo $data['image']?>"
data-description="<?php echo $data['description']?>"
data-prefill.name="<?php echo $data['prefill']['name']?>"
data-prefill.email="<?php echo $data['prefill']['email']?>"
data-prefill.contact="<?php echo $data['prefill']['contact']?>"
data-notes.shopping_order_id="3456"
data-order_id="<?php echo $data['order_id']?>"
<?php if ($displayCurrency !== 'INR') { ?> data-display_amount="<?php echo $data['display_amount']?>" <?php } ?>
<?php if ($displayCurrency !== 'INR') { ?> data-display_currency="<?php echo $data['display_currency']?>" <?php } ?>
>
</script>
<!-- Any extra fields to be submitted with the form but not sent to Razorpay -->
<input type="hidden" name="shopping_order_id" value="3456">
</form>
在运行时,出现诸如"Non-existent class: Razorpay"
之类的错误。
$class
中的Razorpay.php
值就像"CI_Razorpay"
一样。
我没有使用过作曲家,所以如果有人可以告诉我如何在不使用作曲家的情况下整合这笔付款,我将不胜感激。