2012-07-11 70 views
0

我正在尝试让贝宝为我的网站工作。我使用Jade,所以下面的代码看起来不像HTML,但呈现相同。贝宝不按预期重定向

form(id="SubmitForm", action="https://api-3t.sandbox.paypal.com/nvp") 
    input(type="hidden", name="USER",value="USER") 
    input(type="hidden", name="PWD", value="PWD") 
    input(type="hidden", name="SIGNATURE", value="SIGNATURE") 
    input(type="hidden", name="VERSION", value="89.0") 
    input(type="hidden", name="PAYMENTREQUEST_0_PAYMENTACTION", 
        value="Sale") 
    input(name="PAYMENTREQUEST_0_AMT", value="19.95") 
    input(type="hidden", name="RETURNURL", 
        value="https://localhost:3001/confirm") 
    input(type="hidden", name="CANCELURL", 
        value="https://localhost:3001/end") 
    input(type="submit", name="METHOD", value="SetExpressCheckout") 

它确实给PayPal,并返回一个字符串与令牌,而不是做一个重定向回到我期待的确认页面。

我看到类似....

TOKEN = EC%2d33S38595GH5727152 & TIMESTAMP = 2012%2d07%2d11T20%3A00%3a02Z &的correlationID = 687adf3870d19 & ACK =成功& VERSION = 89%2E0 & BUILD = 3242673

用的网址...

https://api-3t.sandbox.paypal.com/nvp?USER=USER&PWD=PWD&SIGNATURE=SIG&VERSION=89.0&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_AMT=19.95&RETURNURL=https%3A%2F%2Flocalhost%3A3001%2Fconfirm&CANCELURL=https%3A%2F%2Flocalhost%3A3001%2Fend&METHOD=SetExpressCheckout

如果我剪切并粘贴令牌,它工作正常,但是,我当然试图避免这种情况。

回答

0

您确定您使用的是正确的网址吗?它以“api”开头的事实表明它打算通过服务器端进程或AJAX进行调用,并返回数据(因为它正在进行)而不是发出重定向。

+0

但我不能使用AJAX调用,因为它是一个跨域请求的权利?此外,为什么我会提供一个回调网址呢? – Jackie 2012-07-11 21:49:47

0

正如前面提到的那样,这是因为你得到的是用于通过服务器端进程的API调用。

如果您只想重定向到PayPal并立即付款,只需使用以下URL并将其替换为您自己的值;
https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=YOUR-EMAIL-HERE&amount=YOUR-AMOUNT-HERE&item_name=NAME-OF-YOUR-ITEM-HERE&return=YOUR-RETURN-URL&cancel_return=YOUR-CANCEL-URL

+0

所以这仍然不能告诉我为什么需要一个重定向的URL,如果它不会重定向....但感谢正常的web服务的网址,我有一种感觉,我将不得不使用它。 – Jackie 2012-07-11 21:51:13

+0

它会重定向。 *交易完成后*。 – Robert 2012-07-12 20:42:20