cakephp 2.0 与 Paypal 整合

标签 cakephp paypal

大家好, 我是 paypal 的新手,但现在是 cakephp 的基础知识,现在我正在与 cakephp 进行 paypal 集成,但无法将值传递给 paypal。我正在向您展示我的代码。如果我做错了什么,请告诉我。

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

   }
}

我将所有 View 值(包括隐藏字段)传递到我的 Controller (所有值都正确显示)并将其重定向到 paypal 站点。在这里,我发送了多个值,但出现了这样的错误:

This recipient is currently unable to receive money.

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

最佳答案

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

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

...然后创建一个表单(在 View 中),然后发布到 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 以方便查看,您应该在 View 中使用表单助手以确保正确的 HTML 格式。

第四: Controller 操作中的 ECHOing 是错误的。特别是,如果您在输出后进行重定向。如果将任何输出发送到浏览器,重定向将不起作用。

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

关于cakephp 2.0 与 Paypal 整合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13190395/

相关文章:

ruby-on-rails - 使用 Rails 3 的 PayPal 自适应支付

Paypal API 调用以获取所有经常性付款配置文件 "paying"我的帐户

php - PayPal Express Checkout,成功付款后更新数据库

ubuntu上的cakephp配置

php - Linux 上的 CakePHP 3 和 MSSQL 连接失败

javascript - 无法调用jquery函数在cakephp 3中工作

cakephp - 无法在 cakePHP 中重新声明 config() 错误

php - 如何设置取消 url paypal 快速结帐?

php - 需要设置Braintree\Configuration::merchantId(或者需要将accessToken传给Braintree\Gateway)

authentication - CakePHP 错误 : Class App\Controller\AuthComponent not found