PHP 贝宝付款请求中的错误
errors in PHP Paypal pay request
我编写了一个图书馆程序,用户可以在其中搜索书籍。我现在进入用户可以 select 项目的 ID 和他们自己的用户名的部分。然后,这会在 PayPal 上设置付款以供用户批准。现在我已经开始了,但我很迷茫。我通过 ID 获取图书,并使用存储在数据库中的详细信息 - 价格和标题来设置付款。
我遇到的第一个问题是出现以下错误:
Undefined index: book_id
对于价格、用户和标题,我也遇到了这个错误。
这是付款代码:
try {
$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_USERNAME, DB_USERNAME, DB_PASSWORD);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
$book =$_POST["book_id"];
$user =$_POST["user"];
$price =$_GET["price"];
$title =$_GET["title"];
$sth = $dbh->prepare("SELECT title, price FROM books2 WHERE b_id=$book");
$sth->execute();
$payer = new Payer();
$payer->setPaymentMethod("paypal");
$item1 = new Item();
$item1->setName($title)
->setCurrency('USD')
->setQuantity(1)
->setPrice($price);
$details = new Details();
$details->setShipping(1.5)
->setTax(1.7);
$transaction = new Transaction();
$transaction->setAmount($price)
->setItemList($item1)
->setDescription("Payment description")
->setInvoiceNumber(uniqid());
$baseUrl = getBaseUrl();
$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl("$baseUrl/review.php?success=true")
->setCancelUrl("$baseUrl/payment.php?success=false");
$payment = new Payment();
$payment->setIntent("sale")
->setPayer($user)
->setRedirectUrls($redirectUrls)
->setTransactions(array($transaction));
$execution = new PaymentExecution();
$result = $payment->execute($execution, $apiContext);
$request = clone $payment;
try {
$payment->create($apiContext);
} catch (Exception $ex) {
ResultPrinter::printError("Created Payment Using PayPal. Please visit the URL to Approve.", "Payment", null, $request, $ex);
exit(1);
}
$approvalUrl = $payment->getApprovalLink();
ResultPrinter::printResult("Setting up payment using Paypal. Please visit the URL to Approve.", "Payment", "<a href='$approvalUrl' >$approvalUrl</a>", $request, $payment);
return $payment;
谁能告诉我为什么会出现这些错误,以便让这段代码正常工作?
未定义的索引意味着您期望的参数不可用。所以显然你的表格不包括 book_id 字段。
为了帮助解决问题,您可以将以下内容添加到接收 POST 数据的页面,以准确查看接收到的内容。
echo '<pre />';
print_r($_POST);
我编写了一个图书馆程序,用户可以在其中搜索书籍。我现在进入用户可以 select 项目的 ID 和他们自己的用户名的部分。然后,这会在 PayPal 上设置付款以供用户批准。现在我已经开始了,但我很迷茫。我通过 ID 获取图书,并使用存储在数据库中的详细信息 - 价格和标题来设置付款。
我遇到的第一个问题是出现以下错误:
Undefined index: book_id
对于价格、用户和标题,我也遇到了这个错误。
这是付款代码:
try {
$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_USERNAME, DB_USERNAME, DB_PASSWORD);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
$book =$_POST["book_id"];
$user =$_POST["user"];
$price =$_GET["price"];
$title =$_GET["title"];
$sth = $dbh->prepare("SELECT title, price FROM books2 WHERE b_id=$book");
$sth->execute();
$payer = new Payer();
$payer->setPaymentMethod("paypal");
$item1 = new Item();
$item1->setName($title)
->setCurrency('USD')
->setQuantity(1)
->setPrice($price);
$details = new Details();
$details->setShipping(1.5)
->setTax(1.7);
$transaction = new Transaction();
$transaction->setAmount($price)
->setItemList($item1)
->setDescription("Payment description")
->setInvoiceNumber(uniqid());
$baseUrl = getBaseUrl();
$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl("$baseUrl/review.php?success=true")
->setCancelUrl("$baseUrl/payment.php?success=false");
$payment = new Payment();
$payment->setIntent("sale")
->setPayer($user)
->setRedirectUrls($redirectUrls)
->setTransactions(array($transaction));
$execution = new PaymentExecution();
$result = $payment->execute($execution, $apiContext);
$request = clone $payment;
try {
$payment->create($apiContext);
} catch (Exception $ex) {
ResultPrinter::printError("Created Payment Using PayPal. Please visit the URL to Approve.", "Payment", null, $request, $ex);
exit(1);
}
$approvalUrl = $payment->getApprovalLink();
ResultPrinter::printResult("Setting up payment using Paypal. Please visit the URL to Approve.", "Payment", "<a href='$approvalUrl' >$approvalUrl</a>", $request, $payment);
return $payment;
谁能告诉我为什么会出现这些错误,以便让这段代码正常工作?
未定义的索引意味着您期望的参数不可用。所以显然你的表格不包括 book_id 字段。
为了帮助解决问题,您可以将以下内容添加到接收 POST 数据的页面,以准确查看接收到的内容。
echo '<pre />';
print_r($_POST);