Php 在'上处理哪些数据;返回';Paypal中的URL?

Php 在'上处理哪些数据;返回';Paypal中的URL?,php,paypal,Php,Paypal,我正在尝试整合贝宝支付系统。目前,用户在点击“结帐”按钮后被重定向到Paypal支付网页。当触发Pay Now按钮时(由于在Paypal网站上找到了测试信用卡账号,我已经能够测试付款),它会将用户重定向到我在沙箱中设置的URL。除了处理返回页上的数据外,其他一切都可以完美地工作 以下是我表格的代码: form = '<form id="paypalCheckout" style="display: none;" action="https://securepayments.sandbox.

我正在尝试整合贝宝支付系统。目前,用户在点击“结帐”按钮后被重定向到Paypal支付网页。当触发
Pay Now
按钮时(由于在Paypal网站上找到了测试信用卡账号,我已经能够测试付款),它会将用户重定向到我在沙箱中设置的URL。除了处理返回页上的数据外,其他一切都可以完美地工作

以下是我表格的代码:

form = '<form id="paypalCheckout" style="display: none;" action="https://securepayments.sandbox.paypal.com/acquiringweb" method="post">\
            <input type="hidden" name="cmd" value="_hosted-payment">\
            <input type="hidden" name="subtotal" value="<MyTotal>">\
            <input type="hidden" name="business" value="<MyMerchantID>">\
            <input type="hidden" name="currency_code" value="EUR">\
            <input type="hidden" name="paymentaction" value="sale">\
            <input type="hidden" name="return" value="<MyReturnURL>">\
        </form>';
我是否应该获得更多信息,如付款状态和其他信息?什么是IPN?设置返回URL有什么区别

非常感谢您的帮助

编辑
答案中的链接已断开

贝宝将向您提供有关付款的所有详细信息。您可以通过以下方式查看返回的数据:-

echo '<pre>'; print_r($_REQUEST); exit;
echo';打印请求($);出口


结果将是
整个数组
的细节,即。付款状态、银行详细信息、订单详细信息等,您可以使用这些数据进行查看,也可以将其存储在数据库中

tx变量是交易ID。您需要使用此变量通过调用其API来验证您的支付状态。最简单的方法是执行调用

我建议您使用Paypal提供的官方信息来获取TransactionID详细信息

    $payId = $_POST['tx'];

    $data = array(
        'USER' => urlencode('<MyLogin>'),
        'PWD' => urlencode('<MyPassword>'),
        'SIGNATURE' => urlencode('<MyApiSignature>'),
        'VERSION' => urlencode('62.0'),
        'METHOD' => urlencode('GetTransactionDetails'),
        'TRANSACTIONID' => urlencode($payId),
    );

    $url = 'https://api-3t.sandbox.paypal.com/nvp?'.http_build_query($data);
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($curl);
    parse_str($result, $return);

我最后做了以下几件事:


你好,谢谢回复!我根据你的要求编辑了我的帖子,但我得到的信息与我之前发布的
print\r($\u请求)相同谢谢回复!我会按照你给我的方式调查并回复你:)我在互联网上看到很多教程建议使用
$fp=fsockopen('ssl://www.sandbox.paypal.com“,443,$errno,$errstr,30)
,这是另一种方式吗?感谢您的帮助,我最终使用了
curl
而不是Paypal SDK。
<?php
// # GetPaymentSample
// This sample code demonstrate how you can
// retrieve a list of all Payment resources
// you've created using the Payments API.
// Note various query parameters that you can
// use to filter, and paginate through the
// payments list.
// API used: GET /v1/payments/payments

require __DIR__ . '/../bootstrap.php';
use PayPal\Api\Payment;

$paymentId = "PAY-0XL713371A312273YKE2GCNI";

// ### Retrieve payment
// Retrieve the payment object by calling the
// static `get` method
// on the Payment class by passing a valid
// Payment ID
// (See bootstrap.php for more on `ApiContext`)
try {
    $payment = Payment::get($paymentId, $apiContext);
} catch (PayPal\Exception\PPConnectionException $ex) {
    echo "Exception:" . $ex->getMessage() . PHP_EOL;
    var_dump($ex->getData());
    exit(1);
}
?>
<html>
<head>
    <title>Lookup a payment</title>
</head>
<body>
    <div>Retrieving Payment ID: <?php echo $paymentId;?></div>
    <pre><?php var_dump($payment->toArray());?></pre>
    <a href='../index.html'>Back</a>
</body>
</html>
    $payId = $_POST['tx'];

    $data = array(
        'USER' => urlencode('<MyLogin>'),
        'PWD' => urlencode('<MyPassword>'),
        'SIGNATURE' => urlencode('<MyApiSignature>'),
        'VERSION' => urlencode('62.0'),
        'METHOD' => urlencode('GetTransactionDetails'),
        'TRANSACTIONID' => urlencode($payId),
    );

    $url = 'https://api-3t.sandbox.paypal.com/nvp?'.http_build_query($data);
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec($curl);
    parse_str($result, $return);
array (size=32)
  'RECEIVERBUSINESS' => string '<EmailAdress>' (length=22)
  'RECEIVEREMAIL' => string '<EmailAdress>' (length=22)
  'RECEIVERID' => string '<RECEIVERID>' (length=13)
  'PAYERID' => string '<PAYERID>' (length=13)
  'PAYERSTATUS' => string 'verified' (length=8)
  'COUNTRYCODE' => string 'US' (length=2)
  'ADDRESSOWNER' => string 'PayPal' (length=6)
  'ADDRESSSTATUS' => string 'None' (length=4)
  'SALESTAX' => string '0.00' (length=4)
  'SHIPAMOUNT' => string '0.00' (length=4)
  'SHIPHANDLEAMOUNT' => string '0.00' (length=4)
  'TIMESTAMP' => string '2014-04-17T18:15:52Z' (length=20)
  'CORRELATIONID' => string 'c5b81c633c4b4' (length=13)
  'ACK' => string 'Success' (length=7) // Payment status
  'VERSION' => string '62.0' (length=4)
  'BUILD' => string '10277387' (length=8)
  'TRANSACTIONID' => string '<TRANSACTIONID>' (length=17)
  'RECEIPTID' => string '<RECEIPTID>' (length=19)
  'TRANSACTIONTYPE' => string 'integralEvolution' (length=17)
  'PAYMENTTYPE' => string 'instant' (length=7)
  'ORDERTIME' => string '2014-04-17T14:35:58Z' (length=20)
  'AMT' => string '<AMT>' (length=6)
  'FEEAMT' => string '<FEEAMT>' (length=4)
  'TAXAMT' => string '0.00' (length=4)
  'CURRENCYCODE' => string 'EUR' (length=3)
  'PAYMENTSTATUS' => string 'Completed' (length=9)
  'PENDINGREASON' => string 'None' (length=4)
  'REASONCODE' => string 'None' (length=4)
  'PROTECTIONELIGIBILITY' => string 'Ineligible' (length=10)
  'L_QTY0' => string '1' (length=1)
  'L_TAXAMT0' => string '0.00' (length=4)
  'L_CURRENCYCODE0' => string 'EUR' (length=3)