2016-11-13 11 views
0

で提出この私のコードです:PayPalにデータを送信する。 PHP

<form action="" method="post"> 
<input class="payment_input" type="text" name="name" placeholder="Name"> 
<input class="payment_input" type="text" name="address" placeholder="Address"> 
<input class="payment_input" type="text" name="email" placeholder="E-mail"><br> 
<input class="payment_input" type="submit" name="submit_paypal" value="Go to PayPal"> 
</form> 

<?php 
$order_token = md5(uniqid($_POST['name'], true)); 

if (isset($_POST["submit_paypal"])) { 

$statement = $pdo->prepare("INSERT INTO customers (name, address, email, order_token) VALUES (:name, :address, :email, :order_token)"); 
$statement->execute(array(':name' => $_POST['name'], ':address' => $_POST['address'], ':email' => $_POST['email'], ':order_token' => $order_token)); 

echo " 
<form action=\"https://www.paypal.com/cgi-bin/webscr\" method=\"post\"> 
<input type=\"hidden\" name=\"cmd\" value=\"_xclick\"> 
<input type=\"hidden\" name=\"business\" value=\"[email protected]\"> 

<input type=\"hidden\" name=\"item_name\" value=\"eBook\"> 
<input type=\"hidden\" name=\"amount\" value=\"10\"> 
<input type=\"hidden\" name=\"return\" value=\"http://www.example.com/book.php?payment=success&orderToken=".$order_token."\"> 
<input type=\"hidden\" name=\"cancel_return\" value=\"http://example.com/book.php?payment=canceled\"> 
<input type=\"submit\"> 
</form> 
"; 
} 
?> 

次のようにそれは中華鍋:ユーザーが自分のデータ(名前、住所、電子メール)を挿入するためのフォームを取得します。ユーザーがフォームを送信すると、次の2つのことが起こります。ユーザーデータはランダムなorder_tokenでデータベースに格納されます。このorder_tokenは、支払いが完了したときにユーザーデータを識別するために必要です。 (order_tokenが「5dcb567fb34805d45d55218995df12f5」の場合、PayPalの返品リンク(お支払いが成功した場合)は「http://www.example.com/book.php?payment=success&orderToken=5dcb567fb34805d45d55218995df12f5」です)。

しかし、私は二つの問題があります。

  1. 方法とすぐにユーザーが別のユーザーがクリックする必要があります送信ボタンを作成する必要なく、私のウェブサイト上の注文フォームを送信したとしてPayPalのフォームを送信するためには?

  2. どのようにそのユーザーがPayPalフォームを操作できないようにするには?現在、ユーザは、例えば、 10〜1

私はすでに夜からそれに取り組んでいるので、誰かが私を助けるエネルギーを持っていることを望みます。

+0

ユーザーから情報を取得してから画面の後ろにPP要求をまとめて送信するだけです。フォームには情報はありません。フォームは操作でき、誰もがそれを知っています。 – RST

+0

@RSTお返事ありがとうございます。それはどういう意味ですか?あなたは小さな事例をあなたが意味するものに見せてもらえますか? – David

答えて

0

JavaScriptを利用すると、PayPalフォームを自動的に送信することができます。

コード:

<script type="text/javascript"> 
    document.myform.submit(); 
</script> 

がそれを使用するには、あなたはあなたのPayPalフォームにname="myform"を追加する必要があります。

また、PayPal IPNシステムは表示されませんので、お支払いゲートウェイを正しく設定していることを確認することをおすすめします。

ユーザーがPayPalフォームコードを変更できないようにすることに加えて、IPNを使用するとこれが中止されます。支払いが受け取られた後、PayPalはあなたのPHPスクリプト(IPN)に連絡し、アイテムの名前、支払った金額を確認することができます。

0

送信時にフォームを再度表示したくない場合は、PHPとHTMLコードを逆転する方がよいです。

(1)1つのアプローチは、クエリ文字列を使用してPaypalにデータを送信することです。

<?php 
$order_token = md5(uniqid($_POST['name'], true)); 

if (isset($_POST["submit_paypal"])) { 
    $statement = $pdo->prepare("INSERT INTO customers (name, address, email, order_token) VALUES (?, ?, ?, ?)"); 
    $statement->execute(array($_POST['name'], $_POST['address'], $_POST['email'], $order_token)); 

    if ($statement->rowCount()) { 
     $query = array(); 
     $query['cmd'] = '_xclick'; 
     $query['business'] = '[email protected]'; 
     $query['item_name'] = 'eBook'; 
     $query['amount'] = 10; 
     $query['return'] = 'http://www.example.com/book.php?payment=success&orderToken=' . $order_token; 
     $query['cancel_return'] = 'http://example.com/book.php?payment=canceled'; 

     header('Location: https://www.paypal.com/cgi-bin/webscr?' . http_build_query($query)); 
     exit(0); 
    } 
} 
?> 

<form action="" method="post"> 
    <input class="payment_input" type="text" name="name" placeholder="Name"> 
    <input class="payment_input" type="text" name="address" placeholder="Address"> 
    <input class="payment_input" type="text" name="email" placeholder="E-mail"><br> 
    <input class="payment_input" type="submit" name="submit_paypal" value="Go to PayPal"> 
</form> 

(2)この方法を使用すると、誰かが情報を変更しないようにする方法はないと思います。あなたが提出する前にバリデーションを追加するだけです。また、お支払いの際にPaypal IPNを使用して通知することもできます。購入時の情報を受け取るスクリプトを作成します。そこで、さらに検証を加えることができます。

関連する問題