0

BusinessID と Token を使用して、フォーム経由で PayPal に支払いを送信するスクリプトがあります。どうやら米国の PayPal ではまだ機能しているようですが、オーストラリアの私のクライアントは、PayPal からこの方法はもはや機能しないと言われました. ドキュメントを読むと、BusinessID、パスワード、および署名が必要になる場合があることがわかりました。IPN プロセスを使用して API で何が変更されたか、クライアントがこれを機能させるためにアカウントで設定する必要がある手順は何ですか。私のコードを新しい標準に適応させるための助けをいただければ幸いです。


私の古いフォーム:

     <? if ($test == "1"){ ?>
    <form name="_xclick" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
    <?} else {?>
    <form action="https://www.paypal.com/us/cgi-bin/webscr" method="post" name="_xclick" id="_xclick">                                          
    <? } ?>
   <input type="hidden" name="cmd" value="_xclick">
   <input type="hidden" name="business" value="<?=$businessid;?>">
   <input type="hidden" name="notify_url" value="<?=$SITE_URL;?>/notify_payment.php?tx=   <?=$test;?>">
   <input type="hidden" name="return" value="<?=$SITE_URL;?>/thankyou.php?px=<?=base64_encode($bid);?>">
   <input type="hidden" name="cancel_return" value="<?=$SITE_URL;?>/buybidsunsuccess.php">
   <input type="hidden" name="currency_code" value="AUD" />
   <input type="hidden" name="item_name" value="<?=$bidpackname;?>">
   <input type="hidden" name="amount" value="<?=$amt;?>">
   <input type="hidden" name="custom" value="<?=$bid."_".$uid;?>" >


そして私のIPNページ:

    $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";

if ($test =="1") {
    $fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);
                      } 
    else 
                     {    
     $fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);
                      }
    // assign posted variables to local variables
    $item_name = $_POST['item_name'];
    $item_number = $_POST['item_number'];
    $payment_status = $_POST['payment_status'];
    $payment_amount = $_POST['mc_gross'];
    $payment_currency = $_POST['mc_currency'];
    $txn_id = $_POST['txn_id'];
    $receiver_email = $_POST['receiver_email'];
    $payer_email = $_POST['payer_email'];
    // custom varible
    $invoice_id = $_POST['invoice_id'];
    //retrieve payment status
    $payment_status = $_POST['payment_status'];
    $customvar = $_POST["custom"];

    if (!$fp) {
    // HTTP ERROR
    } else {
    fputs ($fp, $header . $req);
    while (!feof($fp)) {
    $res = fgets ($fp, 1024);
    if (strcmp ($res, "VERIFIED") == 0) {
4

1 に答える 1

0

どのトークンについて話しますか? あなたの古いフォームには、PayPal が気にしないあなた自身の BID 以外のトークンはありません。このような統合に関してオーストラリアについて何か違いがあることは知りません。支払いを受け取ることができる (暗号化されていない支払いをブロックするように設定されていない) PayPal ビジネス アカウントで機能するはずです。

エクスプレス チェックアウトは、実装に関してはかなり異なるものですが、最終的な結果は非常に似たカスタマー エクスペリエンスになります。これは優れた統合であり、API 呼び出し (ビジネス アカウントの API ユーザー名、API パスワード、および API 署名を使用して認証する) を記述する知識がある場合は、EC をお勧めします。EC を使用するもう 1 つの利点は、サーバーが PayPal と同期的に通信するため、支払いが行われたことをプログラムで確認するための非同期 IPN メッセージが必要ないことです。

于 2013-06-06T05:11:59.340 に答える