我正在尝试构建一个非常简单的PayPal支持的购物车,以便用户可以购买多个项目.我希望paypal能够处理所有付款细节.我甚至不想要订单确认.我会手动检查paypal上的订单确认.
起初我想使用"网站付款标准",因为它似乎很容易创建一个表格,发布到贝宝,并让贝宝从那里处理它.但不,这不起作用,因为"网站付款标准"按钮/表单不支持提交多个项目.我在我的表单中尝试了各种键/值,但从未奏效.
然后我按照此处的说明尝试了Express Checkout .它在很大程度上有效,但据我了解,在发送SetExpressCheckout后,您必须收听来自paypal的请求并执行DoExpressCheckoutPayment来完成交易.所以参考.
我发现这有点麻烦,因为如果我的服务器无法收到来自paypal的请求并且我从未发送DoExpressCheckoutPayment怎么办?所以客户认为他们已完成提交订单,但订单从未收到过.
有没有人知道跳过这个"确认"步骤的方法?我觉得没必要,也不确定为什么paypal需要它.
我正在建立一个电子商务网站,而paypal集成似乎正在发挥作用.我有一个购物车,总计了里面的所有物品,添加了运费,然后用这些线将该号码发送到paypal.
string address = "https://api-3t.sandbox.paypal.com/nvp?USER=<username>&PWD=<password>&VERSION=71.0&SIGNATURE=<signature>&METHOD=SetExpressCheckout&PAYMENTREQUEST_0_AMT=" + lblTotal.Text + "&PAYMENTREQUEST_0_CURRENCYCODE=USD&RETURNURL=http://www.secretskeletonminiatures.com/checkout.aspx&CANCELURL=http://www.secretskeletonminiatures.com/cart.aspx&PAYMENTREQUEST_0_PAYMENTACTION=Sale";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);
Run Code Online (Sandbox Code Playgroud)
然后我使用HTTPWebResponse从paypal获取响应并解析令牌并将用户重定向到
Response.Redirect("https://www.sandbox.paypal.com/us/cgi-bin/webscr?cmd=_express-checkout&useraction=commit&token=" + token);
Run Code Online (Sandbox Code Playgroud)
当用户进入paypal然后登录并点击"立即付款"按钮并重定向到我的网站的结帐页面.
所以一切似乎都好.但是,当我检查沙箱帐户时,这些钱实际上都没有转移.
最常见的原因是重定向url中缺少useraction = commit参数,但它存在,所以这不是问题.