今天在集成PayPal贝宝在线支付功能时,遇到了一些小挫折,费了不少功夫才最终解决(贝宝的技术支持确实让我很想吐槽)。现在记录下来,供后来者参考。根据集成说明文档,我们写的测试demo如下:
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test paypal</title> </head> <body> <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> <div> <label>充值100美元</label> <input type="hidden" name="amount" value="100"/> <input type="hidden" name="cmd" value="_s-xclick"/> <input type="hidden" name="business" value="yourname@gmail.com"/> <input type="hidden" name="item_name" value="Charge" /> <input type="hidden" name="currency_code" value="USD" /> <input type="hidden" name="return" value="http://www.****.com/payReturn.aspx"/> <input type="hidden" name="notify_url" value="http://www.****.com/paypalNotify.aspx" /> <input type="image" src="https://www.paypalobjects.com/zh_XC/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal——最安全便捷的在线支付方式!"/> <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"/> </div> </form> </body> </html>
类似这样的代码测试很多次,当跳转到贝宝的页面时,金额100没有传递过去,截图如下所示:
后来,经过摸索,发现需要将cmd项的值修改一下,如下所示:
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Test paypal</title> </head> <body> <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> <div> <label>充值100美元</label> <input type="hidden" name="amount" value="100"/> <input type="hidden" name="cmd" value="_xclick"/> <input type="hidden" name="business" value="yourname@gmail.com"/> <input type="hidden" name="item_name" value="Charge" /> <input type="hidden" name="currency_code" value="USD" /> <input type="hidden" name="return" value="http://www.****.com/payReturn.aspx"/> <input type="hidden" name="notify_url" value="http://www.****.com/paypalNotify.aspx" /> <input type="image" src="https://www.paypalobjects.com/zh_XC/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal——最安全便捷的在线支付方式!"/> <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"/> </div> </form> </body> </html>
这样就可以将金额传递到贝宝的页面了。