问题描述
在下的跨境电商网站接到Paypal通知说“Paypal Standard”支付方式即将停止官方维护,建议尽快安装“Paypal Express”。
我的网站使用的Opencart 2.0搭建,按照官方给出文档在后台进行了插件安装,然而安装后Paypal Express使用并不正常,具体表现为,再结算页面最后一步点击付款按钮时,直接跳转到第一步。
一个值得注意的地方是,线上网站会出现上述问题,而我本地的副本安装后则可以正常使用Paypal Express。
排查过程
- 通过分析代码,发现Opencart的Paypal Express插件php文件中有以下代码
- 进一步跟踪,发现具体的报错内容为:
error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
明显说的是和SSL有关的错误。
- 由于线上网站会出现上述问题,而我本地的副本安装后则可以正常使用。加之线上网站有SSL证书,本地的是普通http,所以我一开始误以为是https导致的某种错误。经过一系列的网上查询,发现应该不是SSL证书的问题。
- 于是进一步再各搜索引擎搜索以下错误代码:
error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
- 通过某篇机器翻译的文章,大概了解到有可能是使用的CURL函数的问题。
- 于是查了下服务器PHP环境,发现已经安装了CURL,本地副本也安装了CURL,唯一的区别是两个CURL的版本不同(服务器是php5.3,本地是php5.6,所以自带的CURL版本也不一样)。
- 抱着试试看的心态,我把服务器上的php升级为了php5.6,重启后发现问题解决。
解决方案及结论
CURL用于访问某个远程地址,当访问的地址是https地址的时候,低版本的CURL会出问题。
所以解决方案很简单,就是把php升级到5.6版本即可。
P.S.
如果想要修改Paypal Express的图标,请在Opencart语言包中修改。