【问题标题】:paypal payment gateway integration贝宝支付网关集成
【发布时间】:2016-12-28 02:21:42
【问题描述】:

我正在将贝宝支付网关集成到其中一个站点中。成功支付后,我将其重定向到success.php 文件。在success.php 文件中,我包含了所有插入参数和成功消息。付款后正确重定向到success.php 文件,但显示付款失败消息并且没有数据插入数据库。以下是我的success.php 页面代码

<?php
 include 'dbConfig.php';


//Get payment information from PayPal
$item_number = $_GET['item_number']; 
$txn_id = $_GET['tx'];
$payment_gross = $_GET['amt'];
$currency_code = $_GET['cc'];
$payment_status = $_GET['st'];

//Get product price from database
 $productResult = $db->query("SELECT price FROM products WHERE id = = '".$item_number."'"); 
$productRow = $productResult->fetch_assoc();
$productPrice = $productRow['price'];

if(!empty($txn_id) && $payment_gross == $productPrice){
//Check if payment data exists with the same TXN ID.
$prevPaymentResult = $db->query("SELECT payment_id FROM payments WHERE txn_id = '".$txn_id."'");

if($prevPaymentResult->num_rows > 0){
    $paymentRow = $prevPaymentResult->fetch_assoc();
    $last_insert_id = $paymentRow['payment_id'];
}else{
    //Insert tansaction data into the database
    $insert = $db->query("INSERT INTO   payments(item_number,txn_id,payment_gross,currency_code,payment_status) VALUES('".$item_number."','".$txn_id."','".$payment_gross."','".$currency_code."','".$payment_status."')");
    $last_insert_id = $db->insert_id;
}
 ?>
<h1>Your payment has been successful.</h1>
<h1>Your Payment ID - <?php echo $last_insert_id; ?></h1>
<?php }else{ ?>
<h1>Your payment has failed.</h1>
<?php } ?>

我做错了什么?

【问题讨论】:

标签: php paypal


【解决方案1】:

正如 Van Hoa 所建议的,当您将用户重定向到您的成功页面时,paypal 不会将付款信息作为参数发送。 PayPal 只会发回一个令牌和一个付款人 ID。

当将买家从 paypal.com 重定向回您的网站时, PayPal 附加 Express Checkout 交易令牌和唯一的 PayPal 买家 ID 作为返回 URL 的 GET 参数; 这些 GET 参数被命名为 tokenPayerID

PayPal docs(强调)

您可以使用返回的令牌通过GetExpressCheckoutDetails 获取付款详细信息,并将您从贝宝返回的令牌传递给它。

【讨论】:

    猜你喜欢
    • 2012-01-04
    • 2021-07-10
    • 2018-05-04
    • 1970-01-01
    • 2019-09-28
    • 2012-07-23
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    相关资源
    最近更新 更多