2013-05-29 5 views
1

Имея некоторые проблемы с opencart 1.5.5.1 и стандартом PayPal. Я использую Paypal.com.au (в Австралии) Когда я начал, не было телефона, и никакое государство не передавалось от opencart к paypal. Остальные поля (адрес, адрес электронной почты, имя) были предварительно заполнены. Так что я пошел в стандартной paypayl кода и добавил это к контроллеру:Opencart: Предварительное заполнение поля штата Paypal с австралийскими штатами

$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; ?>" /> 

что работал для телефона, однако, независимо от того, что я пытаюсь для государства я не могу заставить его работать. Я посмотрел на делать что-то вроде этого:

$this->data['state'] = html_entity_decode($order_info['payment_zone_code'], ENT_QUOTES, 'UTF-8'); 

и так же, как и выше, но заменяя ['payment_zone_code'] с ['payment_zone_id'] и ['zone_id']

и в TPL файле:

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

Во всяком случае, я озадачен на чтобы государство перешло на paypal.

EDIT Проверено здесь австралийский сайт системы PayPal: https://www.paypal.com/au/cgi-bin/webscr?cmd=_pdn_xclick_prepopulate_outside Они не предлагают помощь по этому вопросу либо, все примеры для США гласит: «Государство (Должно быть 2 символа официальной аббревиатуры)» без помощи на 3 символьных аббревиатуры. Еще дожидаясь ответа от них также

ответ

0

Что относительно использования iso_code_2 Недвижимость конкретной страны? Таблица country определяется как:

CREATE TABLE `oc_country` (
    `country_id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(128) NOT NULL, 
    `iso_code_2` varchar(2) NOT NULL, 
    `iso_code_3` varchar(3) NOT NULL, 
    `address_format` text NOT NULL, 
    `postcode_required` tinyint(1) NOT NULL, 
    `status` tinyint(1) NOT NULL DEFAULT '1', 
    PRIMARY KEY (`country_id`) 
) 

колонка iso_code_2 содержит желаемый 2-символьный код страны МОС.

В вашем случае при обработке PayPal запросить Вы должны быть в состоянии получить адрес оплаты и это код страны (3-символьный код ISO) или ID - с помощью этого уникального значения (либо это iso_code_3 или country_id) Вы должны иметь возможность найти конкретную страну и получить желаемое значение iso_code_2, которое вы затем перейдете на PayPal.

EDIT:

Если это будет код состояний, можно получить, что при использовании адреса Известное платежных данных zone_id. Одна из проблем, хотя - коды для австралийских штатов не долго только 2 символов:

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

Согласно Wikipedia, ни аббревиатура Государства, ни коды ISO только 2 символов, таким образом, может быть, Вы могли бы попытаться отправить также 3 коды символов, а остальные - на PayPal (возможно, описание просто неверно, и вы можете использовать коды с тремя символами).

+0

я изменил свое название, чтобы более четко описать мою проблему , Я имею в виду государства в Австралии, а не в штате Австралия. (Виктория, Квинсленд, Новый Южный Уэльс и т. Д.). – Travis

+0

Я изменил свой ответ. – shadyyx

+0

Да, я пробовал это. Коды состояния хранятся в файле payment_zone_code. Я пробовал передать эту переменную, но без успеха. Я зашел в базу данных и изменил zone_id (полное имя), чтобы соответствовать zone_code (аббревиатура), So Queensland -> QLD, а затем передать это paypal с помощью payment_zone_id, но также не получил результатов. Спасибо за идеи. – Travis

1

кажется, что вы можете передать австралийское состояние с его полным именем (значение на детали Paypal покупателя выбрать форма, не видимое содержание)

Это чувствует себя немного хитроумного решение, но он работал меня. Надеюсь, Paypal не изменит ничего, хотя ...

$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» вместо состояния как часть вашей формы ...

'billing_region' => $state[$fdata['u_state']] 
Смежные вопросы