lyecs ecshop paypal

Lyecs 和 Ecshop 这两个名字放在一起,老站长应该不陌生。Ecshop 当年是国内最流行的开源商城系统之一,Lyecs 则是后来有人基于 Ecshop 二次开发或者整合出来的版本,具体叫法在不同圈子里有点混乱,有人拿它当 Ecshop 的增强分支,有人把它当成一套独立的建站方案。不管怎么叫,核心问题是一样的:这套系统要接 PayPal 收款,怎么搞。

PayPal 接入 Ecshop 其实不算复杂,但坑不少。Ecshop 原生的支付接口里没有 PayPal,官方早就停止维护了,后台支付方式里翻来翻去只有支付宝、财付通、银联这些国内渠道。要做外贸站,PayPal 是绕不过去的,欧美客户几乎只用这个。所以你得手动加接口。

常见做法是找现成的 Ecshop PayPal 插件。网上流传的版本很多,有免费的也有收费的,质量参差不齐。我试过几个,有的用的是 PayPal 老的 NVP API,有的走的是 Standard 按钮方式。Standard 那种最简单,就是在后台配置一个商家邮箱,付款时跳转到 PayPal 页面完成支付,回来再处理订单状态。但这种方式有个问题——IPN 回调经常收不到,订单状态卡在“待付款”,客户付了钱后台还是未支付,得手动去 PayPal 后台核对。烦。

稍微靠谱一点的是用 Express Checkout。流程是客户在结算页点 PayPal 按钮,跳转到 PayPal 登录确认,回来之后调用 DoExpressCheckoutPayment 完成扣款。这个需要申请 PayPal 的 API 签名,在开发者后台拿到 API Username、Password、Signature 三样东西,填到 Ecshop 的支付配置里。Lyecs 如果保留了 Ecshop 的 payment 目录结构,那就把 paypal 的文件夹丢进 includes/modules/payment/ 下面,再在语言包里加对应的配置项,后台就能看到 PayPal 选项了。

有个细节容易被忽略:Ecshop 的订单号格式。它默认生成的订单号是日期加随机数,比如 20240517123456,这种格式传给 PayPal 没问题,但 PayPal 回调的时候如果站点开启了 URL 重写或者 SSL,return_url 和 notify_url 必须用绝对地址,而且不能带 session id。我见过有人因为 return_url 写成了相对路径,客户付完款跳回来直接 404,以为被骗了,投诉到 PayPal 那边去。

另外就是货币。Ecshop 默认货币是人民币,PayPal 收款得用美元或者欧元。后台要先把货币单位切到 USD,汇率也得手动设,不然客户看到的价格是 CNY 但实际扣的是 USD,金额对不上。这个在 Lyecs 里如果没改模板,前台显示可能还是¥符号,客户看到 $ 和 ¥ 混着来,信任感直接掉一半。

测试的时候别用真实账号瞎搞。PayPal 有 sandbox 环境,注册个开发者账号,建两个测试用户,一个买家一个卖家,把 sandbox 的 API 凭据填到 Ecshop 后台,跑一遍完整流程。确认 IPN 能通、订单状态能自动更新、退款逻辑没问题,再切到 live。我见过有人直接上生产环境试,结果一笔测试订单扣了自己 200 美金,手续费还搭进去了。

Lyecs 本身如果做过二次开发,可能改过订单表结构或者支付流程。接 PayPal 之前最好把 includes/modules/payment/ 下面的代码翻一遍,看看有没有被改过。有的 Lyecs 版本把支付回调逻辑写死在 order.php 里了,你加新接口它不认,得手动改。这种时候别硬怼,先把原有逻辑理清楚,再决定是覆盖还是挂钩子。

最后说一句,PayPal 的风控对国内卖家不太友好。新账号收款多了容易被限制,提现也麻烦。Ecshop 这边能做的就是把订单信息传完整,比如客户地址、商品描述,别只传个总金额。PayPal 审核的时候看到详细交易记录,解限的概率会高一些。至于 Lyecs,它就是个壳,核心还是 Ecshop 那套东西,别指望它能帮你解决支付通道的问题。