Для их услуги веб-подписки мой клиент полностью подписан на Paypal Payments Pro (a.k.a. Payflow), а также подписался на дополнение Recurring Billing.
Мне удалось без проблем настроить регулярное выставление счетов с помощью кредитных карт. Тем не менее, я озадачен проверкой PayPal Express для повторного выставления счетов.
Проблема, с которой я сталкиваюсь, заключается в параллельной интеграции PayPal Express Checkout и Hosted Credit Card Checkout в контексте «Макета C» Payflow. У меня, похоже, нет средство для предоставления различной информации для каждого из двух различных способов оплаты (тендеров).
Я прочитал документацию довольно тщательно и неоднократно. Кажется, я что-то пропустил.
- Документы PayPal Pro / Payflow: Руководство разработчика
- Документы PayPal Pro / Payflow: экспресс-оплата
- Документы PayPal Pro / Payflow: регулярный биллинг Экспресс
- Checkout for Payflow (PDF Последнее обновление: июнь 2013 г.)
Я просмотрел библиотеку php API и не могу найти ссылку. Есть ли что-то, на что кто-то может указать мне?
Когда я использую безопасный токен и создаю iframe с макетом C, этот макет автоматически создает двухуровневый стек с 1. PayPal Express Checkout вверху и 2. checkout кредитной картой внизу. Проблема остается в том, что двум отдельным компонентам, похоже, требуются разные вызовы cURL (с разными NVP), и я не знаю способа обеспечить отдельные вызовы для формы в макете.
Кажется, что существует концепция более высокого уровня, которую мне не хватает. (Имейте в виду, я - примерно - понимаю вещи Эйнштейна. Это делает меня еще более расстроенным, что я не могу понять вещи PayPal!)
Чтобы дать вам лучшее представление о том, что я сейчас пытаюсь, вот эти детали:
Я пытался предположить, что с помощью Layout C автоматически инициализируется BAID. Это казалось хорошим предположением, потому что авторизация действительно возвращала TOKEN в переменных POST. Однако использование этого токена возвращает результат ошибки:
RESULT=12&PNREF=BJPXXX8333D4&RESPMSG=Declined: 11455-Buyer did not accept billing agreement
Вот что я сейчас делаю:
Первый шаг: чтобы получить форму оплаты в «Схеме C» с обоими способами оплаты (Экспресс-заказ и кредитная карта), я отправляю эти NVP и ТОЛЬКО эти NVP:
USER=[user]
&VENDOR=[vendor]
&PARTNER=PayPalCA
&PWD=[password]
&CREATESECURETOKEN=Y
&SECURETOKENID=randomlygenerated
&TRXTYPE=A
&AMT=8.95
&CURRENCY=USD
&CSCREQUIRED=TRUE
&EMAIL=buyersemail@email.com
&FIRSTNAME=namelikeBob
&LASTNAME=namelikeDobbs
Это работает для:
- создать форму в макете C,
- нажмите кнопку «Оформить заказ через PayPal»,
- успешно войдите в систему PayPal,
- подтвердите сумму и нажмите «Оплатить сейчас», а
- должен быть возвращен на сайт моего клиента для второго шага по настройке периодической биллинговой системы (будь то профиль биллинга или BAID / соглашение).
Второй шаг. Моя текущая стратегия (которая не работает) для преобразования этой авторизации в регулярный платеж состоит в том, чтобы проанализировать значение TENDER из POST, который PayPal отправляет обратно на мою страницу успеха. Затем я настраиваю периодический платеж по-разному, в зависимости от того, является ли это значение «C» или «P».
Мне удалось настроить профили повторяющихся платежей с помощью кредитной карты (TENDER = C), используя следующие NVP:
USER=[user]
&VENDOR=[vendor]
&PARTNER=PayPalCA
&PWD=[password]
&TRXTYPE=R
&ACTION=A
&ORIGID=fromPayPalsPOSTedPNREF
&START=aworkingdate
&TENDER=C
&PROFILENAME=Monthly Subscription
&PAYPERIOD=MONT
&TERM=0 // continue all subscriptions until the client deactivates
&AMT=8.95
&CURRENCY=USD
Однако PayDal (TENDER = P) BAID не выполняется. Опять же, эти NVP не могут быть проблемой. Возможно, я не нашел способа отправить BILLINGTYPE=MerchantInitiatedBilling
в предыдущем запросе:
USER=[user]
&VENDOR=[vendor]
&PARTNER=PayPalCA
&PWD=[password]
&TRXTYPE=A
&ACTION=X
&START=aworkingdate
&TENDER=P
&TOKEN=fromPayPalsPOSTedTOKEN
&PAYPERIOD=MONT
&TERM=0 // continue all subscriptions until the client deactivates
&AMT=8.95
&CURRENCY=USD
Кажется, здесь много подробностей, но если я что-то пропустил, пожалуйста, дайте мне знать, и я предоставлю информацию немедленно!