0

私のウェブサイトには、PayPal ExpressCheckoutAPIを使用して支払いを完了する小さな1つのアイテムの購入ストアがあります。最後の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()ありがとうページで電話する必要がありますか?

編集: 「続行」ボタンを「今すぐ支払う」に変更することになっているURL呼び出しの最後に「&useraction = commit」を追加しましたSetExpressCheckout()が、それでも支払いは完了しませんか?

4

1 に答える 1

0

「useraction=commmit」を使用しても、DoExpressCheckoutPayment() 呼び出しを呼び出す必要がなくなるわけではありません。お気付きのように、エクスペリエンスが変わるだけで、API 呼び出しが短絡するわけではありません。詳細はこちら: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECCustomizing

元の質問に戻ります - いいえ - DoExpresscheckout を呼び出すまでは、「ありがとうページ」を表示する前であっても、DoExpresscheckout を呼び出す必要があります。資金は保証されません。

于 2012-10-26T06:49:28.227 に答える