Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

PayPal настройка


Recommended Posts

надоело работать с робокассой с их комиссией по оплате кредитных карт. Решил попробовать PayPal. сам неоднократно через него оплачивал.

Итак имеется счет на PayPal в опенкарте выбрал режим оплаты PayPal Standard ввел емали. Система заработала. но появилась проблема. У меня на сайте по умолчанию валюта оплаты Рубли. но в пей пал выгружается в доллорах. тоесть товар стоит 3000р в Пей Пал он стоит 3000 доллор. Может кто помочь сделать правильную конвертацию либо в доллоры либо в рубли? но чтобы клиент оплачивал правильную стоимость.

Надіслати
Поділитися на інших сайтах

А о каких товарах (средняя цена покупки) и оборотах в месяц идет речь? Вы надеетесь получить у Paypal комиссию меньше 5%? Мечты, мечты... Скорей всего дороже выйдет. При небольших суммах - заметно дороже.

Плюс приключения с выводом. Но это стандартно. Если решили принимать, думаю, уже есть куда выводить?

Надіслати
Поділитися на інших сайтах


А о каких товарах (средняя цена покупки) и оборотах в месяц идет речь? Вы надеетесь получить у Paypal комиссию меньше 5%? Мечты, мечты... Скорей всего дороже выйдет. При небольших суммах - заметно дороже.

Плюс приключения с выводом. Но это стандартно. Если решили принимать, думаю, уже есть куда выводить?

У меня в PayPal написано "Стандартная ставка" для приема платежей: 3,4%.

средняя стоимость заказа по робокассе было 3000, обороты были маленькие в робокассе. заметил многие просто возвращались после перехода в робокассу так и не совершив заказ, либо выбрав другой вариант оплаты. Комиссия там была на уровне 5% плюс конвертация в веб мони и вывод отуда на счет тоже свой процент. на PayPal планируется сразу выводить на счет. Просто желающих оплатить по карте много, но не хочется терять людей из за высоких комиссий или неудобства оплаты.

Надіслати
Поділитися на інших сайтах

Ок, на суммах в 100$ картина будет симпатичней - не будет того "хвостика", который сильно портит прием мелких платежей (на суммах 5$ я сразу теряю на входе 10%, на 10$ - 7%). На более крупных суммах незаметно. Плюс может быть конвертирование из одной валюты (в которой платежи принимаются) в другую (валюту банка, куда выводятся) по курсу Paypal. Если банк - не конечная инстанция, а надо ещё из него деньги обналичить - ещё одно звено.

В общем, согласен - на таких суммах, может и получится до 5% терять. Ну и самое главное - все эти комиссии скрыты от покупателя, перекладываются на получателя. Меньше будет отпугивать.

Надіслати
Поділитися на інших сайтах


как я понял вот эти строки отвечают за конвертацию

$usd_code = "USD";
		$usd_order_total = $this->currency->convert($order_info['total'], $order_info['currency_code'], $usd_code);
		$this->data['amount'] = $this->currency->format($usd_order_total, $usd_code, $order_info['currency_value'], FALSE);

просьба помочь правильно их вставить в модуль пей пей.

<?php
class ControllerPaymentPPStandard extends Controller {
	protected function index() {
		$this->language->load('payment/pp_standard');
		
		$this->data['text_testmode'] = $this->language->get('text_testmode');		
		
		$this->data['button_confirm'] = $this->language->get('button_confirm');

		$this->data['testmode'] = $this->config->get('pp_standard_test');
		
		if (!$this->config->get('pp_standard_test')) {
			$this->data['action'] = 'https://www.paypal.com/cgi-bin/webscr';
		  } else {
			$this->data['action'] = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
		}

		$this->load->model('checkout/order');

		$order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);

		if ($order_info) {
			$currencies = array(
				'AUD',
				'CAD',
				'EUR',
				'GBP',
				'JPY',
				'USD',
				'NZD',
				'CHF',
				'HKD',
				'SGD',
				'SEK',
				'DKK',
				'PLN',
				'NOK',
				'HUF',
				'CZK',
				'ILS',
				'MXN',
				'MYR',
				'BRL',
				'PHP',
				'TWD',
				'THB',
				'TRY'
			);
			
			if (in_array($order_info['currency_code'], $currencies)) {
				$currency = $order_info['currency_code'];
			} else {
				$currency = 'USD';
			}	   

			$this->data['business'] = $this->config->get('pp_standard_email');
			$this->data['item_name'] = html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8');				
			
			$this->data['products'] = array();
			
			foreach ($this->cart->getProducts() as $product) {
				$option_data = array();
	
				foreach ($product['option'] as $option) {
					$option_data[] = array(
						'name'  => $option['name'],
						'value' => $option['option_value']
					);
				}
				
				$this->data['products'][] = array(
					'name'	 => $product['name'],
					'model'	=> $product['model'],
					'price'	=> $this->currency->format($product['price'], $currency, false, false),
					'quantity' => $product['quantity'],
					'option'   => $option_data,
					'weight'   => $product['weight']
				);
			}	
			
			$this->data['discount_amount_cart'] = 0;
			
			$total = $this->currency->format($order_info['total'] - $this->cart->getSubTotal(), $currency, false, false);

			if ($total > 0) {
				$this->data['products'][] = array(
					'name'	 => $this->language->get('text_total'),
					'model'	=> '',
					'price'	=> $total,
					'quantity' => 1,
					'option'   => array(),
					'weight'   => 0
				);	
			} else {
				$this->data['discount_amount_cart'] -= $this->currency->format($total, $currency, false, false);
			}
			
			$this->data['currency_code'] = $currency;
			$this->data['first_name'] = html_entity_decode($order_info['payment_firstname'], ENT_QUOTES, 'UTF-8');	
			$this->data['last_name'] = html_entity_decode($order_info['payment_lastname'], ENT_QUOTES, 'UTF-8');	
			$this->data['address1'] = html_entity_decode($order_info['payment_address_1'], ENT_QUOTES, 'UTF-8');	
			$this->data['address2'] = html_entity_decode($order_info['payment_address_2'], ENT_QUOTES, 'UTF-8');	
			$this->data['city'] = html_entity_decode($order_info['payment_city'], ENT_QUOTES, 'UTF-8');	
			$this->data['zip'] = html_entity_decode($order_info['payment_postcode'], ENT_QUOTES, 'UTF-8');	
			$this->data['country'] = $order_info['payment_iso_code_2'];
			$this->data['notify_url'] = $this->url->link('payment/pp_standard/callback');
			$this->data['email'] = $order_info['email'];
			$this->data['invoice'] = $this->session->data['order_id'] . ' - ' . html_entity_decode($order_info['payment_firstname'], ENT_QUOTES, 'UTF-8') . ' ' . html_entity_decode($order_info['payment_lastname'], ENT_QUOTES, 'UTF-8');
			$this->data['lc'] = $this->session->data['language'];
			$this->data['return'] = $this->url->link('checkout/success');
			$this->data['notify_url'] = $this->url->link('payment/pp_standard/callback');
			$this->data['cancel_return'] = $this->url->link('checkout/checkout', '', 'SSL');
			
			if (!$this->config->get('pp_standard_transaction')) {
				$this->data['paymentaction'] = 'authorization';
			} else {
				$this->data['paymentaction'] = 'sale';
			}
			
			$this->load->library('encryption');
	
			$encryption = new Encryption($this->config->get('config_encryption'));
	
			$this->data['custom'] = $encryption->encrypt($this->session->data['order_id']);
		
			if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/payment/pp_standard.tpl')) {
				$this->template = $this->config->get('config_template') . '/template/payment/pp_standard.tpl';
			} else {
				$this->template = 'default/template/payment/pp_standard.tpl';
			}
	
			$this->render();
		}
	}
	
	public function callback() {
		$this->load->library('encryption');
	
		$encryption = new Encryption($this->config->get('config_encryption'));
		
		if (isset($this->request->post['custom'])) {
			$order_id = $encryption->decrypt($this->request->post['custom']);
		} else {
			$order_id = 0;
		}		
		
		$this->load->model('checkout/order');
				
		$order_info = $this->model_checkout_order->getOrder($order_id);
		
		if ($order_info) {
			$request = 'cmd=_notify-validate';
		
			foreach ($this->request->post as $key => $value) {
				$request .= '&' . $key . '=' . urlencode(html_entity_decode($value, ENT_QUOTES, 'UTF-8'));
			}
			
			if (!$this->config->get('pp_standard_test')) {
				$curl = curl_init('https://www.paypal.com/cgi-bin/webscr');
			} else {
				$curl = curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr');
			}

			curl_setopt($curl, CURLOPT_POST, true);
			curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
			curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
			curl_setopt($curl, CURLOPT_HEADER, false);
			curl_setopt($curl, CURLOPT_TIMEOUT, 30);
			curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
					
			$response = curl_exec($curl);
			
			if (!$response) {
				$this->log->write('PP_STANDARD :: CURL failed ' . curl_error($curl) . '(' . curl_errno($curl) . ')');
			}
					
			if ($this->config->get('pp_standard_debug')) {
				$this->log->write('PP_STANDARD :: IPN REQUEST: ' . $request);
				$this->log->write('PP_STANDARD :: IPN RESPONSE: ' . $response);
			}
						
			if ((strcmp($response, 'VERIFIED') == 0 || strcmp($response, 'UNVERIFIED') == 0) && isset($this->request->post['payment_status'])) {
				$order_status_id = $this->config->get('config_order_status_id');
				
				switch($this->request->post['payment_status']) {
					case 'Canceled_Reversal':
						$order_status_id = $this->config->get('pp_standard_canceled_reversal_status_id');
						break;
					case 'Completed':
						if ((float)$this->request->post['mc_gross'] == $this->currency->format($order_info['total'], $order_info['currency_code'], $order_info['currency_value'], false)) {
							$order_status_id = $this->config->get('pp_standard_completed_status_id');
						}
						break;
					case 'Denied':
						$order_status_id = $this->config->get('pp_standard_denied_status_id');
						break;
					case 'Expired':
						$order_status_id = $this->config->get('pp_standard_expired_status_id');
						break;
					case 'Failed':
						$order_status_id = $this->config->get('pp_standard_failed_status_id');
						break;
					case 'Pending':
						$order_status_id = $this->config->get('pp_standard_pending_status_id');
						break;
					case 'Processed':
						$order_status_id = $this->config->get('pp_standard_processed_status_id');
						break;
					case 'Refunded':
						$order_status_id = $this->config->get('pp_standard_refunded_status_id');
						break;
					case 'Reversed':
						$order_status_id = $this->config->get('pp_standard_reversed_status_id');
						break;	
					case 'Voided':
						$order_status_id = $this->config->get('pp_standard_voided_status_id');
						break;								
				}
				
				if (!$order_info['order_status_id']) {
					$this->model_checkout_order->confirm($order_id, $order_status_id);
				} else {
					$this->model_checkout_order->update($order_id, $order_status_id);
				}
			} else {
				$this->model_checkout_order->confirm($order_id, $this->config->get('config_order_status_id'));
			}
			
			curl_close($curl);
		}	
	}
}
?>
Надіслати
Поділитися на інших сайтах

  • 4 months later...

А разве в России возможен приём платежей через Paypal( другие страны СНГ точно не могут этим воспользоваться).У меня есть приём по Paypal , но это аккаунт моих поставщиков , которые мой навар кидают мне на карту.И все настройки я сделал в админке.

Надіслати
Поділитися на інших сайтах

А разве в России возможен приём платежей через Paypal - по моему возможен... Но дело не в этом, прием платежей будет на Аккаунт зарегистрированный в Германии... Но цены на сайте хочется чтобы были в рублях....
Надіслати
Поділитися на інших сайтах


А разве в России возможен приём платежей через Paypal - по моему возможен... Но дело не в этом, прием платежей будет на Аккаунт зарегистрированный в Германии... Но цены на сайте хочется чтобы были в рублях....

Аккаунт в Германии,на немецкую карту какое отношение имеет к Paypal в России????

Надіслати
Поділитися на інших сайтах

  • 2 weeks later...

не получается....

в файле pp_standard.php

заменил

$total = $this->currency->format($order_info['total'] - $this->cart->getSubTotal(), $order_info['currency_code'], false, false);
на

$total = $this->currency->format($this->currency->convert($order_info['total'] - $this->cart->getSubTotal(), 'RUB', 'USD'), 'USD', false, false);
и не конвертирует
Надіслати
Поділитися на інших сайтах


Хочу пояснить по поводу Paypal! Он идеально работает исходя из тех настроек, что есть по умолчанию( у меня 1.5.1.3). Одно "НО", о котором здесь никто говорить не хочет! Ну предположим Вы открыли себе аккаунт и предположим в России действительно возможно принимать платежы! А как выводить деньги??? Я на примере своих поставщиков поясню.Вы не сможете сразу забрать деньги поступившее к Вам на аккаунт Paypal пока не будет накопленна определённая( в разных странах по разному 3000-3500 $ ) сумма ,которую Вы сможете снять с минимальными потерями в виде комиссии банков через кого Вы будете получать эти деньги.И ещё момент!!! Стоит кому то из Ваших клиентов взбрыкнуть и открыть по отношению к Вам как к продавцу диспут, как тут же Ваша карта со всеми деньгами будет заблокирована( до 45 дней в случае если Вы полюбовно сразу не решите вопрос с покупателем).Мало ли неадекватов который сам не понял что купил а виноват продавец!

Я думаю стоит подумать не раз о целесообразности всего этого гемора!

Надіслати
Поділитися на інших сайтах

Тогда ,почему не попробывать вот так , выбрать например основной валютой доллар , а в кавычках значение цены по курсу в рублях?

PS вот обсуждение этого на форуме

  • +1 1
Надіслати
Поділитися на інших сайтах

  • 7 months later...

C конвертацией все просто, по ссылке новичка есть ссылка на модуль, который это делает. Меня смущает что paypal заставляет пользователя вводить кучу не нужной информации, кто как с этим боролся?

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.