Привет, вот мой код, который я хочу интегрировать в систему, которую собираюсь разработать.
<?php
session_start();
$paypalID = '[email protected]'; //Business Email
$paypalURL = 'https://www.sandbox.paypal.com/cgi-bin/webscr'; //Test PayPal API URL
?>
<h1>Choose your Plan</h1>
<h3>Month-to-month : $20.00 USD - monthly</h3>
<form action="<?php echo $paypalURL; ?>" method="post">
<!-- Identify your business so that you can collect the payments. -->
<input type="hidden" name="business" value="<?php echo $paypalID; ?>">
<!-- Specify a Buy Now button. -->
<input type="hidden" name="cmd" value="_xclick">
<!-- Specify details about the item that buyers will purchase. -->
<input type="hidden" name="item_number" value="month-to-month">
<input type="hidden" name="amount" value="20">
<input type="hidden" name="currency_code" value="USD">
<!-- Specify URLs -->
<input type='hidden' name='cancel_return' value='http://xxxxxxxx/payment.php'>
<input type='hidden' name='return' value='http://xxxxxxxx/insertpayment.php'>
<input type='hidden' name='notify_url' value='http://xxxxxxxx/payment.php'>
<!-- Display the payment button. -->
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
<h3>Yearly : $50.00 USD - yearly</h3>
<form action="<?php echo $paypalURL; ?>" method="post">
<!-- Identify your business so that you can collect the payments. -->
<input type="hidden" name="business" value="<?php echo $paypalID; ?>">
<!-- Specify a Buy Now button. -->
<input type="hidden" name="cmd" value="_xclick">
<!-- Specify details about the item that buyers will purchase. -->
<input type="hidden" name="item_number" value="yearly">
<input type="hidden" name="amount" value="50">
<input type="hidden" name="currency_code" value="USD">
<!-- Specify URLs -->
<input type='hidden' name='cancel_return' value='http://xxxxxxxx/payment.php'>
<input type='hidden' name='return' value='http://xxxxxxxx/insertpayment.php'>
<input type='hidden' name='notify_url' value='http://xxxxxxxx/payment.php'>
<!-- Display the payment button. -->
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_subscribeCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
Как только я разрабатываю решение, несмотря на то, что я интегрировал его с моей существующей учетной записью PayPal, оно не выдает никаких параметров get, которые мне действительно необходимы для их добавления в базу данных.
Однако один из моих друзей попробовал, чтобы он работал правильно (localhost) с 10-секундным автоматическим перенаправлением в своем перенаправлении платежного шлюза на insertpayment.php, который также генерирует параметры получения (упоминается в insertpayment.php). То же самое сработало, когда я добавил его тестовое письмо в качестве идентификатора PayPal.
Может ли кто-нибудь помочь мне разобраться в этом и указать причину, по которой я не получаю ожидаемые данные о передаче платежных данных.
Я хотел бы также предпочесть любые другие возможные решения.
Это код для insertpayment.php
<?php
session_start();
$payment_plan = $_GET['item_number'];
$txn_id = $_GET['tx'];
$payment_gross = $_GET['amt'];
$currency_code = $_GET['cc'];
$payment_status = $_GET['st'];
$payment_description = $_GET['item_name'];
require_once("./Connection/dbCon.php");
include("./Connection/keys.php");
$PaymentPlan = "";
if($payment_plan=="month-to-month"){
$PaymentPlan = "1";
}
elseif($payment_plan=="yearly")
{
$PaymentPlan = "12";
}else{
$PaymentPlan = "Unknown";
}
$currentDate = date("m/d/Y");
$uname = $_SESSION['uname'];
if(!empty($txn_id)){
//Check if payment data exists with the same TXN ID.
$prevPaymentResult = mysqli_query($conn,"SELECT id FROM payment WHERE txn_id = '".$txn_id."'");
if($prevPaymentResult->num_rows > 0){
$paymentRow = $prevPaymentResult->fetch_assoc();
$last_insert_id = $paymentRow['id'];
}else{
//Insert tansaction data into the database
if (!$insert = mysqli_query($conn,"INSERT INTO payment(paymentDescription,paymentPlan,txn_id,payment_gross,currency_code,payment_status) VALUES('".$payment_description."','".$payment_plan."','".$txn_id."','".$payment_gross."','".$currency_code."','".$payment_status."')"))
{
echo("Error description: " . mysqli_error($conn));
}
if (!$update = mysqli_query($conn,"update userlogin set IsSubscribed='{$IsSubscribed}' , PackageSubscribed='{$PaymentPlan}' where Username='{$uname}' ")){
echo("Error description: " . mysqli_error($conn));
}
}
?>
<h5><span class="alert alert-success"> Your payment has been successful.</span></h5>
<a href="http://localhost/XX/bids.php" class="btn btn-primary">Return To Dashboard</a>
<?php
}else{
?>
<br><br><br>
<h5><span class="alert alert-danger">Your payment has failed.Your Membership has not been upgraded.</span> </h5>
<a href="http://localhost/XX/payment.php" class="btn btn-primary">Return To Dashboard</a>
<br><br><br><br><br><br><br><br><br><br><br>
<?php } ?>
Нашел проблему. Это было с учетной записью посредника песочницы. Перенаправления URL должны быть настроены в каждой учетной записи фасилитатора и реальной учетной записи отдельно, и после этого PDT должен быть включен.
Других решений пока нет …