我试图建立一个非常简单的贝宝支持的购物车,让用户可以购买多个项目。我想贝宝来处理所有的付款细节。我甚至不想要订单确认。我将手动检查贝宝上的订单确认。
起初,我想使用“网站支付标准”,因为它似乎很容易创建一个表单,将发布到paypal,并让paypal处理从那里。但是,这不起作用,因为“网站支付标准”按钮/表单不支持提交多个项目。我在我的表单中尝试了所有类型的键/值,但从来都不起作用。
然后,我尝试使用here中的说明快速结账。它在很大程度上起到了作用,但据我所知,在发送SetExpressCheckout之后,你必须监听来自贝宝的请求,并执行DoExpressCheckoutPayment来完成交易。SO reference。
我发现这有点麻烦,因为如果我的服务器接收不到来自贝宝的请求,而我从来没有发送过DoExpressCheckoutPayment怎么办?因此,客户认为他们已经完成了提交订单,但从未收到订单。
有没有人知道跳过这个“确认”步骤的方法?我发现它没有必要,也不确定为什么paypal需要它。
发布于 2011-11-02 19:26:44
这是因为Express Checkout和Website Payments Standard是根本不同的产品。
要使用Express Checkout,您需要调用SetExpressCheckout应用编程接口。在API调用中,指定产品、金额和RETURNURL的详细信息。
一旦您将此数据发布到PayPal的API端点,您就会收到一个令牌作为回报。然后,您将重定向买方,并将令牌附加到以下网址:https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-XXXXXXX
一旦买方同意您的购买,他将被重定向回您在RETURNURL中指定的URL。
您现在应该显示订单确认,并调用GetExpressCheckoutDetails接口**。
调用GetExpressCheckoutDetails时,提供令牌。在GetExpressCheckoutDetails应用程序接口响应中,您将找到一个PayerID。
现在您可以调用DoExpressCheckoutPayment并向购买者收费了。请记住在调用DoExpressCheckoutPayment时同时包含令牌和payerID。
注意:如果您想通过立即调用GetExpressCheckoutDetails和DoExpressCheckoutPayment来立即向买家收费,请将买家重定向到https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-XXXXXXX&useraction=commit。useraction=commit
将把PayPal‘查看您的付款’页面上的‘Continue’按钮改为‘Pay now’按钮。
--
之所以在快速结账和网站支付标准之间存在如此显著的差异,是因为网站支付标准旨在成为PayPal处理整个交易流程的即插即用工作解决方案。Express Checkout是一种更灵活的解决方案,它允许您将其与网站/购物车的现有结帐流程深度集成。
对于您的用例,请使用PayPal 'cart upload‘按钮查看。有关https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_cart_upload示例,请参见
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="seller@designerfotos.com">
<input type="hidden" name="item_name_1" value="Item Name 1">
<input type="hidden" name="amount_1" value="1.00">
<input type="hidden" name="item_name_2" value="Item Name 2">
<input type="hidden" name="amount_2" value="2.00">
<input type="submit" value="PayPal">
</form>
但是请注意,这在默认情况下是不安全的,因为您要收取的金额将在HTML中清晰可见。
** PayerID也会被附加到你的RETURNURL的GET中。因此,如果您愿意,可以跳过调用GetExpressCheckoutDetails。
发布于 2012-07-19 16:13:00
出于本站点的目的,PayPal Express Checkout API只需要DoExpressCheckoutPayment
操作。
您说得对,PayPal不需要处理付款,但有些场景需要第二次操作。这类场景的一个示例是用户(您站点的客户)在PayPal付款确认期间选择一个送货地址。根据您的发货提供商,您可能需要在用户在PayPal确认页面上选择发货地址后计算实际发货金额。
https://stackoverflow.com/questions/7984864
复制相似问题