Xpoint
   [напомнить пароль]

Интеграция оплаты PayPal — Shipping Prepopulation

Метки: [без меток]
[закрыта][удл]
2010-02-20 20:03:39 [обр] Alexey V.Zelenin(0/8)[досье]

Сразу предупреждаю, что на самом деле топик не столько информационный, сколько вопрошающий.

имеем

  • Сайт продаёт некоторые продукты
  • Сайт написан на C#
  • Среди прочих сервисов оплаты используется PayPal
  • Все продажи ведутся на территории США

проблема
При покупке через PayPal администратор получает письмо о том, что адрес, по которому надо отправлять продукт, не валидирован. Так что оплата реально не проходит и требуется подтверждение "вручную".

задача
Разобраться и починить.

Сначала я попытался исследовать текущий механизм работы с PayPal. Выяснилось, что используется некий контрол который "втихую" создаёт форму, заполняет её информацией, введённой покупателем и сразу отправляет форму на PayPal. Собственно процесс покупки идёт уже на PayPal сайте.

Контрол этот никаких средств для передачи Shipping информации не имеет. Но что нам стоит дом построить? Заполним форму сами и сами же просабмитим.

И вот тут наступили грабли - как же эту информацию на PayPal отправить? Сразу скажу, что вариант получить информацию о кредитке на сайте и проводить оплату через API нами пока не рассматривается — хотелось бы возложить всю маету с проверкой валидности карт, секьюрностью транзакции и т.п. на PayPal.

Какие варианты предоставляет PayPal

Website Payment Standard

Всем вроде бы хорош - но у нас далеко не один продукт на сайте, потому заранее сгенерированная кнопка не подходит. Для передачи адреса клиента (биллинг адрес, привязанный к оплате) можно использовать address_override, для передачи сразу группы продуктов можно использовать item_name_"n" и amount_"n"

Создав эккаунт в сендбоксе начал тестировать, получилась пока вот такая форма

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
   <input type="hidden" name="cmd" value="_cart" /> 
   <input type="hidden" name="upload" value="1" /> 
   <input type="hidden" name="business" value="grinka_1266588332_biz@gmail.com" /> 
   <input type="hidden" name="item_name_1" value="Item Name 1" /> 
   <input type="hidden" name="amount_1" value="1.00" /> 
   <input type="hidden" name="item_name_2" value="Item Name 2" /> 
   <input type="hidden" name="amount_2" value="2.00" />
   <input type="hidden" name="address_override" value="0" />
   <input type="hidden" name="address1" value="1'st Street, 23-45" />
   <input type="hidden" name="city" value="San Jose" />
   <input type="hidden" name="email" value="nobody@email.com" />
   <input type="hidden" name="first_name" value="Test" />
   <input type="hidden" name="last_name" value="Uaser" />
   <input type="hidden" name="zip" value="95131" />
   <input type="hidden" name="state" value="CA" />
   <input type="hidden" name="night_phone_a" value="408-983-5678" />
   <input type="hidden" name="no_shipping" value="2" />
   
   <input type="hidden" name="shippingto_address1" value="No Street, 12" />
   <input type="hidden" name="shippingto_city" value="San Jose" />
   <input type="hidden" name="shippingto_zip" value="95132" />
   <input type="hidden" name="shippingto_state" value="CA" />
   
   <input type="submit" value="PayPal" />
</form>

И тут я никак не могу придумать как "препопулировать" информацию об адресе доставки. На сайте его пользователь вводит, а передать к PayPal я его что-то никак не могу. Долгое курение мануалов PayPal только ещё сильнее запутывает ситуацию и окончательно приводит мой мозг в ступор.

По умолчанию в качестве адреса доставки система берёт тот же адрес, что и для оплаты. И покупатель затем может его изменить, но такой подход совсем не идеален, ибо мы заставляем покупателя вводить Shipping Address дважды.

Payflow Link
Мне уже почти стало казаться, что он мог бы "спасти отца русской демократии", но в сендбоксе создать эккаунт Payflow не удаётся - PayPal снова и снова выдаёт невнятную ошибку с предложением созвониться с саппортом.

Payment Pro
По описанию предлагает гораздо больше возможностей, но

  • оплата производится на сайте, чего мы хотели бы избежать
  • ежемесячная плата в $30 - деньги небольшие, но лучше бы и их сохранить

Прошу помощи общественности - как можно разрешить эту проблему?

спустя 3 дня [обр] Василий Свиридов(0/175)[досье]
Хм. Мы пользуеся PayFlowPro, он весьма либеральный, позволяет проводить продажи только по номеру кредитки и дате (даже без CVV2).
Правда мы вроде сделали себе этот аккаунт до того, как PayPal купил PayFlowPro. И C# либа у них вменяемая. Рекомендую пробиться к саппорту и попробовать сделать себе этот аккаунт.
спустя 1 месяц 2 дня [обр] Alexey V.Zelenin(0/8)[досье]
На будущее учту, спасибо :)
спустя 1 минуту [обр] Alexey V.Zelenin(0/8)[досье]
Тему закрываю. Оказалось, проблема была в неверно уходящем флаге no_shipping
Powered by POEM™ Engine Copyright © 2002-2005