2012-04-04 206 views
0

我正在尝试将用户重定向到PayPal进行付款,而是通常的HTML表单我写了此代码(我需要将表单提交数据到我的网站,然后我重定向到PayPal)贝宝网址无法正常工作

($sandbox) ? $url = "https://www.sandbox.paypal.com/cgi-bin/webscr" : $url = "https://www.paypal.com/cgi-bin/webscr"; 
    ($sandbox) ? $button = "XXXXX" : $button = "YYYYY"; 

    $notify_url = urlencode($site_url . "index.php?act=member-pn&mid=" . $ld['member_id']); 
    $return_url = urlencode($site_url . "index.php?act=member-ps"); 
    $cancel_url = urlencode($site_url . "index.php?act=member-pc&mid=" . $ld['member_id']); 

    $url .= "/?notify_url=$notify_url&return=$return_url&cancel_return=$cancel_url&cmd=_s-xclick&hosted_button_id=$button"; 

    header("Location: $url"); 

为什么只有取消网址在工作?退货和通知似乎不起作用。

+0

你在哪里测试这些?它在你的本地主机上吗? – mahadeb 2012-04-04 14:18:03

+0

没有,活的网站。 – slash197 2012-04-04 14:23:27

+0

您是否尝试过回显网址?这些值是否正确? – 2012-04-04 15:40:21

回答

0

所以...我的问题的答案很简单:请记住,如果您正在使用的网站具有htaccess身份验证。贝宝的IPN从来没有机会访问我的脚本:)

而且,是的,你可以做一个简单的按钮,而不是POST的GET请求。

1

我认为你需要发送值作为POST请求。看起来你正在做代码中的GET请求。

至于notify_url和return_url,我假设这些功能已经在您的Paypal帐户中启用。

一个可能的解决方案是,您可以使用jQuery Validate捕获表单提交(例如),然后将初始数据发送到您的服务器以注册您的用户,然后一旦完成,您可以将表单提交给paypal。

+0

这些功能在我的PayPal帐户中被禁用。如果它需要是POST请求,为什么取消网址工作? – slash197 2012-04-04 15:31:15

+0

认为Gohn是正确的,你没有发布的PayPal网站,得到可能部分工作,但我会尝试发布数据第一 – 2012-04-04 15:42:30

+0

我不能张贴到PayPal,我需要表单张贴到我的服务器注册用户首先然后重定向到PayPal – slash197 2012-04-04 15:57:36

0

几天前我们做了一些非常类似的事情。我们想到了ajax和jquery .... 但现在我们使用2种形式,这是最简单的方法。 用户在商店结账时弹出(1. form) - >发布到我们的服务器 - >我们保存在db - >用户点击“pay with paypal”(2. form) - >获取重定向到paypal - >支付 - >我们的服务器得到确认 - >我们的服务器向商店发送确认

这种方式呢?

+0

是的,但这是一个两步过程 – slash197 2012-04-05 11:16:27