簡體   English   中英

PHP PayPal API 和沙盒問題

[英]PHP PayPal API and Sandbox Issue

愚蠢的問題也許..

我如何知道我與 PayPal API 的集成是否正常工作?

我的意思是代碼轉到 PayPal 很好,PayPal 上的付款似乎工作正常,然后用戶在付款后被重定向到我網站上的正確頁面。

所以我假設它工作正常。

但是 PayPal 表格上沒有顯示價格。

我的測試帳戶不收費

我的其他測試帳戶(賣家)沒有收款

我假設它只是因為用戶被重定向到我網站上的成功頁面而起作用!

但我怎么知道它真的有效?!

沒有什么能讓我完全確定它有效!!

請指教..

我正在使用快速結帳 API

我只是向客戶收取單個項目的費用,沒有 PayPal 授權等。只是簡單的 PayPal 銷售。

謝謝

<?php

require_once ("paypalfunctions.php");
// ==================================
// PayPal Express Checkout Module
// ==================================

//'------------------------------------
//' The paymentAmount is the total value of 
//' the shopping cart, that was set 
//' earlier in a session variable 
//' by the shopping cart page
//'------------------------------------
$creditsAmount = $_GET["creditsAmount"];
if ($creditsAmount <= 4) {
$price = 10;
}elseif($creditsAmount <= 19 && $creditsAmount >= 5) {
$price = 7.5;
}else{
$price = 5;
}
$paymentAmount = $price * $creditsAmount;
$SubmID = $_GET["SubmID"];
$memberID = (int)$_COOKIE["memberID"];
//'------------------------------------
//' The currencyCodeType and paymentType 
//' are set to the selections made on the Integration Assistant 
//'------------------------------------
$currencyCodeType = "USD";
$paymentType = "Sale";

//'------------------------------------
//' The returnURL is the location where buyers return to when a
//' payment has been succesfully authorized.
//'
//' This is set to the value entered on the Integration Assistant 
//'------------------------------------
$returnURL = "http://domain.co.uk/modules/yobilab/copyright/PAYPAL_process.php?creditsAmount=".$creditsAmount; // AGGIUNGERE ID SUBMISSION
//$returnURL = "http://domain.co.uk/modules/yobilab/copyright/PAYPAL_process.php"; // AGGIUNGERE ID SUBMISSION
//'------------------------------------
//' The cancelURL is the location buyers are sent to when they hit the
//' cancel button during authorization of payment during the PayPal flow
//'
//' This is set to the value entered on the Integration Assistant 
//'------------------------------------
$cancelURL = "http://domain.co.uk/m/copyright/overview/".$SubmID; // AGGIUNGERE ID SUBMISSION
//$cancelURL = "http://domain.co.uk/m/copyright/error/"; // AGGIUNGERE ID SUBMISSION

//'------------------------------------
//' Calls the SetExpressCheckout API call
//'
//' The CallShortcutExpressCheckout function is defined in the file PayPalFunctions.php,
//' it is included at the top of this file.
//'-------------------------------------------------
$resArray = CallShortcutExpressCheckout ($paymentAmount, $currencyCodeType, $paymentType, $returnURL, $cancelURL);
$ack = strtoupper($resArray["ACK"]);
if($ack=="SUCCESS" || $ack=="SUCCESSWITHWARNING")
{
    RedirectToPayPal ( $resArray["TOKEN"] );
} 
else  
{
    //Display a user friendly Error on the page using any of the following error information returned by PayPal
    $ErrorCode = urldecode($resArray["L_ERRORCODE0"]);
    $ErrorShortMsg = urldecode($resArray["L_SHORTMESSAGE0"]);
    $ErrorLongMsg = urldecode($resArray["L_LONGMESSAGE0"]);
    $ErrorSeverityCode = urldecode($resArray["L_SEVERITYCODE0"]);

    echo "SetExpressCheckout API call failed. ";
    echo "Detailed Error Message: " . $ErrorLongMsg;
    echo "Short Error Message: " . $ErrorShortMsg;
    echo "Error Code: " . $ErrorCode;
    echo "Error Severity Code: " . $ErrorSeverityCode;
}
?>

Paypal 在他們的開發者網站上有一個 IPN(即時支付通知)測試工具 - 您可以使用它在交易完成后執行回調。 然后你可以寫一個 php 腳本來檢查支付的狀態,驗證它是否成功,然后做任何你想做的事情......

檢查開發人員沙箱中的文檔以了解它是如何工作的,他們提供了一些很好的示例代碼用於測試......

Use Paypal IPN (instant payment notification) send that url via your html from and then on that page put this code you will get response in email

<?php 
error_reporting(E_ALL ^ E_NOTICE); 
$email = $_GET['ipn_email']; 
$header = ""; 
$emailtext = ""; 
// Read the post from PayPal and add 'cmd' 
$req = 'cmd=_notify-validate'; 
if(function_exists('get_magic_quotes_gpc')) 
{  
    $get_magic_quotes_exits = true; 
} 
foreach ($_POST as $key => $value) 
// Handle escape characters, which depends on setting of magic quotes 
{  
    if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1){  
        $value = urlencode(stripslashes($value)); 
    } else { 
        $value = urlencode($value); 
    } 
    $req .= "&$key=$value"; 
} 
// Post back to PayPal to validate 
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n"; 
$header .= "Content-Type: application/x-www-form-urlencoded\r\n"; 
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n"; 
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30); 


// Process validation from PayPal 
// TODO: This sample does not test the HTTP response code. All 
// HTTP response codes must be handles or you should use an HTTP 
// library, such as cUrl 

if (!$fp) { // HTTP ERROR 
} else { 
// NO HTTP ERROR 
fputs ($fp, $header . $req); 
while (!feof($fp)) { 
    $res = fgets ($fp, 1024); 
    if (strcmp ($res, "VERIFIED") == 0) { 
        // TODO: 
        // Check the payment_status is Completed 
        // Check that txn_id has not been previously processed 
        // Check that receiver_email is your Primary PayPal email 
        // Check that payment_amount/payment_currency are correct 
        // Process payment 
        // If 'VERIFIED', send an email of IPN variables and values to the 
        // specified email address 
        foreach ($_POST as $key => $value){ 
        $emailtext .= $key . " = " .$value ."\n\n"; 
        } 
        mail($email, "Live-VERIFIED IPN", $emailtext . "\n\n" . $req); 
    } else if (strcmp ($res, "INVALID") == 0) { 
        // If 'INVALID', send an email. TODO: Log for manual investigation. 
        foreach ($_POST as $key => $value){ 
        $emailtext .= $key . " = " .$value ."\n\n"; 
        } 
        mail($email, "Live-INVALID IPN", $emailtext . "\n\n" . $req); 
    }    
} 
fclose ($fp); 
?>

您可以使用 IPN 模擬結帳請求,但它只會將請求發送到您的 URL,以便您可以測試您的應用程序。 如果你想測試你是否收取了正確的金額或類似的東西,你必須改變你用來買東西的表格。 Instead of pointing to paypal.com, it should point to the sandbox url https://www.sandbox.paypal.com/cgi-bin/webscr

感覺就像您真的在購買,但實際上並非如此,因為您將使用測試帳戶。 購買后,您可以 go 進入沙箱,用測試賬戶登錄,看看如何一個人少錢(買家),另一人多錢(賣家)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM