如今paypal变复杂了,支付解决方案至关多,并且一些国家只能用特定的解决方案。以香港为例,不能使用payflow pro了,只能使用Website Payments Pro Hosted Solution,这在magento 1.x上使用还须要安装组件才能支持,如今2.x与paypal高度集成,已经存在Website Payments Pro Hosted Solution这个payment。但在新安装的magento2后台上很难发现这个payment,最初觉得不存在,查过源代码才知道须要先选择Merchant Country为HK以后才会显示这个payment,这是挺人性化的设计,并不会搞错国家使用了不能使用的payment。git
Payment Action须要设置为Sale,这样能够自动收款。github
因为paypal已经使用了TLSv1.2了,若是环境中不支持这个协议,过程就没法顺利。访问如下连接获得解决方案:
TLSv1.2 Requirementweb
paypal提供了很完善的测试方案,只要有正式paypal账号,均可以创建多个paypal sandbox账号。
https://developer.paypal.com/...
在以上地址建立sandbox商家账号,若是是香港的务必在Country一栏选择Hong Kong,这一点很重要,使用什么支付解决方案彻底取决于账号所属地,须要跟magento2后台的Merchant Country一致。建立账号后须要手动把账号升级为prodom
把Classic TEST API Credentials里面的Username, Password, Signature都贴到magento2后台去,Website Payments Pro Hosted Solution就能使用。测试
How do I create an additional credit card number for a Sandbox account?ui
Website Payments Pro Hosted Solution支付完成以后,后台的订单状态应该是processing,这说明订单已经确认收款了,但却出现payment review,这时须要到登陆paypal商家账号,在收到的订单中点确认收款,而后magento2的订单才会转为processing。spa
在个人案例中有两个缘由:debug
Website Payments Pro Hosted Solution默认没有cancel按钮,而商家账号里能够设置cancel按钮,但设置后也不会出现。这是由于magento2使用的是iframe模式,在这个模式下cancel是不会出来的。要解决这个问题,恐怕须要修改程序了,我估计难度也很多。设计
若是paypal支付成功后order status仍然是pending payment,即有可能 Paypal IPN受阻,能够用如下方式排查:code
https://domain.com/paypal/ipn/index/
并设置Receive IPN messagesvar/log/exception.log
是否出现相关异常http://www.webcreatorbox.com/...
使用Website Payments Pro Hosted Solution的经过中出现不少问题,不少都是我没法解决的,但paypal support可让我咨询技术上的问题,我是经过paypal support沟通屡次后才能解决问题。通常一个工做天就会获得答复,有时候快的半天就有答复了。
不用担忧英文很差难以沟通,我是用中文的。
以上的内容是我在实际项目中获得的经验之谈,不必定都适合于全部状况,若是没法解决问题,最好直接咨询paypal support。若是内容有错,请留言提醒。