Magento客户模型重写导致看似无关的JSON解析错误

Magento Customer model rewrite causing seemingly unrelated JSON parse error

本文关键字:JSON 错误 模型 客户 重写 Magento      更新时间:2023-09-26

警告,这不是为胆小的人准备的(抱歉太长了)。。。。我们已经实现了PayPal透明重定向作为一种自定义的支付方式。总之,我们有一种自定义的支付方式,可以使用信用卡并将其提交给PayPal,而信用卡号永远不会出现在我们的服务器上。它从客户端获取数字,撒上一些Ajax、JSON和js,瞧(!),你会得到信用卡批准,订单会在Magento中提交。问题是,除了重写Mage_Customer的另一个自定义模块处于活动状态之外,这种方法效果很好。我已经将它缩小到一个我已经覆盖的模型。如果我只为该模型注释掉配置中的rewrite节点,那么透明重定向就可以正常工作。我已经确定它不是那些模型中的代码,因为我已经删除了100%。只剩下声明:

 <?php

 class Mycompany_Customer_Model_Customer extends Mage_Customer_Model_Customer
 {
 }

当请求发送到PayPal时,仅此一点就导致了JSON解析错误。在这个过程中有一个子类会破坏javascript吗?我对JavaScript或JSON没有太多经验,但我知道响应正在返回,它看起来与成功响应完全相同,但不知何故,"OnException"被触发了。这是消息:SyntaxError:JSON.parse:意外字符。

我甚至不知道这两者之间有什么联系。尽管我们在过去也遇到过与模型重写相关的其他奇怪问题。例如,我对Customer Create API进行了重写,添加了一个额外的属性,当传入的XML到达我的自定义方法时,它是一个对象(而不是数组),因此解决方法是强制将其转换为数组,然而,当它到达标准方法时,这是一个数组(我不需要这方面的帮助,因为它可以工作)。

对于这些奇怪的问题,我想一定有一个解释。如果有人对如何解决这个问题有任何建议,或者对继承类为什么会破坏事物有任何信息/经验,我们将不胜感激。

我们还没有完全解决这个问题,但我们正在努力。我们在Windows堆栈上进行开发,我用UTF-8编码手动保存了我的客户模型。然而,我的合作伙伴开发了他所有的PayPal扩展,并没有将其保存为UTF-8。当他把我的模型转换回ANSI格式时,他的代码是有效的,所以现在他将尝试另一种方式(制作UTF-8)并检查它。如果有人对编码和开发平台有建议,我仍然很想听。