Opencart:使用澳大利亚州预填充Paypal州字段

Opencart:使用澳大利亚州预填充Paypal州字段,paypal,opencart,Paypal,Opencart,opencart 1.5.5.1和paypal标准存在一些问题。我正在使用Paypal.com.au(在澳大利亚),当我开始使用时,opencart并没有电话,也并没有将状态传递给Paypal。其余字段(地址、电子邮件、姓名)都是预先填充的。因此,我进入paypayl标准代码,并将其添加到控制器: $this->data['night_phone_b'] = html_entity_decode($order_info['telephone'], ENT_QUOTES, 'UTF-8');

opencart 1.5.5.1和paypal标准存在一些问题。我正在使用Paypal.com.au(在澳大利亚),当我开始使用时,opencart并没有电话,也并没有将状态传递给Paypal。其余字段(地址、电子邮件、姓名)都是预先填充的。因此,我进入paypayl标准代码,并将其添加到控制器:

$this->data['night_phone_b'] = html_entity_decode($order_info['telephone'], ENT_QUOTES, 'UTF-8');
并将其添加到tpl文件中:

<input type="hidden" name="night_phone_b" value="<?php echo $night_phone_b; ?>" />
与上述相同,但将
['payment\u zone\u code']
替换为
['payment\u zone\u id']
['zone\u id']

在tpl文件中:

<input type="hidden" name="state" value="<?php echo $state; ?>" />

使用具体国家的
iso\u code\u 2
属性如何?
country
表的定义如下:

创建表'oc_country`(
`国家/地区id`int(11)非空自动增量,
`name`varchar(128)不为空,
`iso_代码_2`varchar(2)不为空,
`iso_代码_3`varchar(3)不为空,
`地址\格式`文本不为空,
`邮政编码_必需'tinyint(1)不为空,
`状态'tinyint(1)非空默认值'1',
主键(`country\u id`)
)
iso_code_2
包含所需的两个字符的iso国家/地区代码

在处理PayPal请求时,您应该能够检索支付地址及其国家代码(3个字符的ISO代码)或ID-使用此唯一的值(它是
ISO\u代码3
国家ID
)您应该能够找到具体的国家/地区条目,并获得所需的
iso_code_2
值,然后将该值传递给PayPal

编辑:

如果是州代码,您可以通过使用已知付款地址
区域id
获得该代码。但有一个问题——澳大利亚各州的代码不仅仅是两个字符:

Australian Capital Territory -> ACT
New South Wales              -> NSW
Northern Territory           -> NT
Queensland                   -> QLD
South Australia              -> SA
Tasmania                     -> TAS
Victoria                     -> VIC
Western Australia            -> WA

根据,美国各州的缩写和ISO代码都只有2个字符长,因此您可以尝试发送3个字符的代码,并将其余的代码放在PayPal上(可能描述不正确,您可以使用3个字符的代码)。

使用具体国家的
ISO代码2
属性怎么样?
country
表的定义如下:

创建表'oc_country`(
`国家/地区id`int(11)非空自动增量,
`name`varchar(128)不为空,
`iso_代码_2`varchar(2)不为空,
`iso_代码_3`varchar(3)不为空,
`地址\格式`文本不为空,
`邮政编码_必需'tinyint(1)不为空,
`状态'tinyint(1)非空默认值'1',
主键(`country\u id`)
)
iso_code_2
包含所需的两个字符的iso国家/地区代码

在处理PayPal请求时,您应该能够检索支付地址及其国家代码(3个字符的ISO代码)或ID-使用此唯一的值(它是
ISO\u代码3
国家ID
)您应该能够找到具体的国家/地区条目,并获得所需的
iso_code_2
值,然后将该值传递给PayPal

编辑:

如果是州代码,您可以通过使用已知付款地址
区域id
获得该代码。但有一个问题——澳大利亚各州的代码不仅仅是两个字符:

Australian Capital Territory -> ACT
New South Wales              -> NSW
Northern Territory           -> NT
Queensland                   -> QLD
South Australia              -> SA
Tasmania                     -> TAS
Victoria                     -> VIC
Western Australia            -> WA

根据,各州的缩写和ISO代码都只有2个字符长,因此您可以尝试发送3个字符的代码,并将其余的代码发送到PayPal上(可能描述不正确,您可以使用3个字符的代码)。

似乎您可以通过澳大利亚州的全名(贝宝买家详细信息选择表单上的值,而不是可见内容)

这感觉像是一个有点不可靠的修复,但它对我有效。希望贝宝不会改变任何事情,虽然

    $states['ACT'] = "Australian Capital Territory";
$states['NSW'] = "New South Wales";
$states['NT'] = "Northern Territory";
$states['QLD'] = "Queensland";
$states['SA'] = "South Australia";
$states['TAS'] = "Tasmania";
$states['VIC'] = "Victoria";
$states['WA'] = "Western Australia";
然后将“账单区域”而不是状态作为表单的一部分传递

'billing_region' => $state[$fdata['u_state']]

似乎您可以通过澳大利亚州的全名(贝宝买家详细信息选择表单上的值,而不是可见内容)

这感觉像是一个有点不可靠的修复,但它对我有效。希望贝宝不会改变任何事情,虽然

    $states['ACT'] = "Australian Capital Territory";
$states['NSW'] = "New South Wales";
$states['NT'] = "Northern Territory";
$states['QLD'] = "Queensland";
$states['SA'] = "South Australia";
$states['TAS'] = "Tasmania";
$states['VIC'] = "Victoria";
$states['WA'] = "Western Australia";
然后将“账单区域”而不是状态作为表单的一部分传递

'billing_region' => $state[$fdata['u_state']]

为了更清楚地描述我的问题,我改变了标题。我指的是澳大利亚的各州,而不是澳大利亚州。(维多利亚州、昆士兰州、新南威尔士州等等)。我修改了我的答案。是的,我尝试过。州代码保存在支付区代码中。我尝试传递该变量,但没有成功。我已进入数据库并更改了区id(全名)以匹配区代码(缩写),所以昆士兰->昆士兰,然后用payment_zone_id将其传递给paypal,但也没有得到任何结果。不过谢谢你的想法。我更改了标题以更清楚地描述我的问题。我的意思是澳大利亚的州,而不是澳大利亚州。(维多利亚州、昆士兰州、新南威尔士州等等)。我修改了我的答案。是的,我尝试过。州代码保存在支付区代码中。我尝试传递该变量,但没有成功。我已进入数据库并更改了区id(全名)以匹配区代码(缩写),所以昆士兰->昆士兰,然后用payment\u zone\u id将其传递给paypal,但也没有结果。不过谢谢你的想法。