[英]PayPal Express Checkout API
我的網站上有一個小型的單品購買商店,該商店使用PayPal Express Checkout API完成付款。 除了最終的API調用DoExpressCheckoutPayment()
之外,我都能正常工作。 我嘗試了幾種不同的方法來實現,但是似乎都沒有用。
這是我的success.php頁面,在頂部進行api調用GetExpressCheckoutDetails()
,然后在底部進行DoExpressCheckoutPayment()
:
<script language="Javascript">
function showFBWindow(s1, s2, s3, s4, s5)
{
url = "purchase-thankyou.php?name="+s1+"&email="+s2+"&code="+s3+"&id="+s4+"&token="+s5;
newwindow=window.open(url,'name');
if (window.focus) {newwindow.focus();}
}
</script>
<?php
require_once("PayPal_API.php");
$Token = $_GET["token"];
$PayerID = $_GET["PayerID"];
$nvps = array();
$nvps["VERSION"] = "65.1";
// get details of transaction
$nvps["METHOD"] = "GetExpressCheckoutDetails";
$nvps["TOKEN"] = $Token;
$response = RunAPICall($nvps); // Send the API call to PayPal.
?>
<html>
<head>
<title>Order Processed</title>
</head>
<body bgcolor="#ffffff">
<h1>THANK YOU!</h1>
<p>
<h1>Your order has been processed. Please follow the link below to complete your payment</h1>
</p>
<p>
<?php
//outputArrayValues($response);
$id = $_GET['PayerID'];
$token = $response['TOKEN'];
$checkoutstatus = $response['CHECKOUTSTATUS'];
$timestamp = $response['TIMESTAMP'];
$correlation_id = $response['CORRELATIONID'];
$acknowledgement = $response['ACK'];
$version = $response['VERSION'];
$build = $response['BUILD'];
$e_mail_id = $response['EMAIL'];
$payer_id = $response['PAYERID'];
$payer_status = $response['PAYERSTATUS'];
$first_name = $response['FIRSTNAME'];
$last_name = $response['LASTNAME'];
$cust_name = $first_name." ".$last_name;
$country_code = $response['COUNTRYCODE'];
$currency_code = $response['CURRENCYCODE'];
$amount = $response['AMT'];
$item_amt = $response['ITEMAMT'];
$shipping_amt = $response['SHIPPINGAMT'];
$handling_amt = $response['HANDLINGAMT'];
$tax_amt = $response['TAXAMT'];
// complete purchase by sending DoExpressCheckoutPayment
$nvps["METHOD"] = "DoExpressCheckoutPayment";
$nvps["TOKEN"] = $token;
$nvps["PAYMENTACTION"] = "Sale";
$nvps["PAYERID"] = $payer_id;
// Send the API call to PayPal.
$response = RunAPICall($nvps);
?>
<a href="#"
onclick="showFBWindow('<?php echo $cust_name;?>','<?php echo $e_mail_id;?>','<?php echo $currency_code; ?>','<?php echo $id;?>', '<?php echo $token;?>')">
Click to Continue</a>
</body>
</html>
我正在通過URL將客戶名稱和電子郵件傳遞給“謝謝”頁面,以將信息保存到我的數據庫中。 我應該在“謝謝”頁面上調用DoExpressCheckoutPayment()
嗎?
編輯:我已經在SetExpressCheckout()
URL調用的末尾添加了“&useraction = commit”,這應該使“繼續”按鈕更改為“立即付款”,但這確實沒有完成付款?
使用“ useraction = commmit”並不會消除調用DoExpressCheckoutPayment()調用的需要。 如您所知-它只會改變體驗,而不會縮短API調用。 此處提供更多信息: https : //cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_EC
回到您的原始問題-否-在您顯示“謝謝頁面”之前,您應該先致電DoExpresscheckout,直到致電DoExpresscheckout為止-您的資金無法保證。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.