Рабочий пример PayPal Website Payments Pro Hosted Solution Iframe?

Я ищу использовать paypals Website Payments Pro Hosted Solution, чтобы мы могли принимать платежи через paypal без наших пользователей, чувствуя, что они покидают сайт и без необходимости иметь PCI-совместимый.

Мы хотим, чтобы это работало в таком формате:

  • Пользователь попадает на страницу покупок и выбирает количество и хиты.
  • Запрос AJAX отправляется на сервер для проверки количества / расчета общего количества и т. Д.
  • Запрос AJAX возвращает url для iframe
  • Iframe заполняется страницей, а после завершения загрузки отображается iframe
  • Пользователь заполняет данные кредитной карты, а paypal завершает транзакцию
  • Страница успеха, в которой paypal перенаправляет iframe на вызов некоторого javascript на родительской странице для перенаправления на другой URL-адрес.

Итак, у меня есть страница выбора количества,
Я знаю, как отправить данные на сервер и проверить количество / рассчитать общее количество

То, что я не знаю, как сделать, – с этого момента отправить запрос на paypal, чтобы получить url для iframe.

То, что я пробовал делать (как очень простой отдельный пример):

<?php class paypal { private $APIuser; private $APIpass; private $APIsign; private $APIvers = '74.0'; private $APIaddr = 'https://api-3t.sandbox.paypal.com/nvp'; private $post_params = array(); function __construct($APIuser, $APIpass, $APIsign){ $this->APIuser = $APIuser; $this->APIpass = $APIpass; $this->APIsign = $APIsign; } function param($name, $value = null){ $this->post_params[$name] = $value; return $this; } function getUrl(){ $post = $this->post_params; $post['pwd'] = $this->APIpass; $post['user'] = $this->APIuser; $post['method'] = 'BMCreateButton'; $post['version'] = $this->APIvers; $post['signature'] = $this->APIsign; $post['buttoncode'] = 'CLEARTEXT'; $post['buttontype'] = 'PAYMENT'; $post_string = '?'; foreach($post as $k => $v) $post_string .= $k.'='.urlencode($v).'&'; $post_string = substr($post_string, 0, -1); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $this->APIaddr.$post_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $out = curl_exec($ch); curl_close($ch); $out = explode('&', $out); $final = array(); foreach($out as $k => &$v){ $v = explode('=', $v); $final[$v[0]] = urldecode($v[1]); } return $final; } } //mock variables $price = 10.00; $APIu = 'xxxxxxxxxx'; $APIp = 'xxxxxxxxxx'; $APIs = 'xxxxxxxxxx'; $paypal = new paypal($APIu, $APIp, $APIs); $paypal->param('L_BUTTONVAR0=subtotal', $price*$_GET['quantity']); $paypal->param('L_BUTTONVAR1=template', 'templateD'); $resp = $paypal->getUrl(); ?> <iframe width="100%" height=100%" src="<?php echo $resp['EMAILLINK']; ?>"></iframe> 

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

Вернитесь на страницу оплаты и исправьте адрес.

Что я делаю неправильно / что мне нужно для выполнения этой работы?

Related of "Рабочий пример PayPal Website Payments Pro Hosted Solution Iframe?"

Собственно, попробуйте следующий вызов API и сообщите мне, если это сработает для вас:

МЕТОД = BMCreateButton &
BUTTONTYPE = ОПЛАТА &
BUTTONCODE = ЗНАК &
L_BUTTONVAR0 = субтотальное = 11 &
L_BUTTONVAR1 = налог = 2 &
L_BUTTONVAR2 = доставка = 3 &
L_BUTTONVAR3 = обработки = 4 &
L_BUTTONVAR4 = шаблон = templateC