Opencart:使用澳大利亚州预填充Paypal州字段
opencart 1.5.5.1和paypal标准存在一些问题。我正在使用Paypal.com.au(在澳大利亚),当我开始使用时,opencart并没有电话,也并没有将状态传递给Paypal。其余字段(地址、电子邮件、姓名)都是预先填充的。因此,我进入paypayl标准代码,并将其添加到控制器: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');
$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,但也没有结果。不过谢谢你的想法。