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);

   }
}

我将所有视图值(包括隐藏字段)传递给我的控制器(所有值都正确显示)并将其重定向到贝宝网站。在这里我发送多个值,但我收到这样的错误:

This recipient is currently unable to receive money.

如果我在 corephp 中编写相同的代码,那么值会到达贝宝并且一切正常,请告诉我哪里出错了。

4

1 回答 1

0

首先,您应该在 Controller 中准备代码:

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

...然后创建一个发布到 PayPal 网站的表单(在视图中):

//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 可能会以多种方式失败,因为您的值不是 url_encoded,可能会变得太长等。

第二:您的错误可能会弹出,因为您使用的是www.paypal.com而不是www.sandbox.paypal.com

第三:我复制了上面的 HTML 以方便查看,您应该在视图中使用 Form 帮助程序以确保正确的 HTML 格式。

第四:在控制器动作中回显是错误的。尤其如此,如果您在输出后进行重定向。如果将任何输出发送到浏览器,重定向将不起作用。

希望这能让你朝着正确的方向前进。

于 2013-06-29T18:54:28.573 回答