大家好, 我是 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.
'¤cy_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/