2

皆さん、こんにちは。私はペイパルを初めて使用しますが、今は Cakephp の基本です。現在、ペイパルと CakePHP の統合を行っていますが、値をペイパルに渡すことができません。私のコードをお見せします。私が何か間違ったことをしている場合は教えてください。

function paypal()
{
  if($this->request->is('post'))
  {
      echo $item_name_1=$this->request->data['Choose']['item_name_1'];
      echo"<br>";
      echo $amount_1=$this->request->data['Choose']['amount_1'];echo"<br>";
      echo $item_name_2=$this->request->data['Choose']['item_name_2'];echo"<br>";
      echo $amount_2=$this->request->data['Choose']['amount_2'];echo"<br>";
      echo $cmd=$this->request->data['Choose']['cmd'];echo"<br>";
      echo $business=$this->request->data['Choose']['business'];echo"<br>";
      echo $upload=$this->request->data['Choose']['upload'];echo"<br>";
      echo $currency_code=$this->request->data['Choose']['currency_code'];echo"<br>";
      echo $item_number_1=$this->request->data['Choose']['item_number_1'];echo"<br>";
      echo $item_number_2=$this->request->data['Choose']['item_number_2'];echo"<br>";
      $this->redirect('https://www.paypal.com/cgi-bin/webscr?cmd='.$cmd.'&upload='.$upload.'&business='.$business.
                      '&currency_code='.$currency_code.'&item_number_1='.$item_number_1.'&item_name_1='.$item_name_1.
                      '&'.'amount_1='.$amount_1.'&item_number_2='.$item_number_2.'&item_name_2='.$item_name_2.'&'.'amount_2='.$amount_2);

   }
}

すべてのビュー値 (非表示フィールドを含む) をコントローラーに渡し (すべての値が正しく表示されます)、paypal サイトにリダイレクトしています。ここで複数の値を送信していますが、次のようなエラーが発生しています。

This recipient is currently unable to receive money.

私がcorephpで同じコードを書いた場合、値はpaypalに到達し、すべて正常に動作しています.どこが間違っているのか教えてください.

4

1 に答える 1

0

まず、コントローラーでコードを準備する必要があります。

function paypal(){
   $this->set('paypalData', $this->request->data['Choose']);
}

...そして、PayPal サイトに POST されるフォームを(ビューで) 作成します。

//file: Views/ControllerName/paypal.ctp
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="<?php echo $paypalData['business']; ?>">
<input type="hidden" name="amount" value="<?php echo $paypalData['business']; ?>">
<input type="hidden" name="item_name_1" value="<?php echo $paypalData['item_name_1']; ?>">
<input type="hidden" name="item_number_1" value="<?php echo $paypalData['item_number_1']; ?>">
<input type="hidden" name="amount_1" value="<?php echo $paypalData['amount_1']; ?>">
<input type="hidden" name="currency_code" value="<?php echo $paypalData['currency_code']; ?>">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

次に、ユーザーはボタンをクリックして、より信頼性の高い PayPal に移動します (そして正しい:D)。値が url_encoded ではない、長すぎるなどの理由で、リダイレクト先の URL は多くの点で失敗する可能性があります。

2 番目: www.sandbox.paypal.comの代わりにwww.paypal.comを使用しているため、エラーが表示される可能性があります。

3 番目: 見やすくするために上記の HTML をコピーしました。ビュー内で Form ヘルパーを使用して、適切な HTML フォーマットを確保する必要があります。

4 つ目: Controller アクション内で ECHO を実行するのは間違っています。特に、出力後にリダイレクトする場合はそうです。出力がブラウザに送信される場合、リダイレクトは機能しません。

これがあなたを正しい方向に導くことを願っています。

于 2013-06-29T18:54:28.573 に答える