Принять Хостинг Периодический биллинг - PullRequest
1 голос
/ 27 апреля 2020

getHostedPaymentPageRequest предоставляет только два типа транзакции для генерации токена для формы с использованием следующего XML.

Два типа транзакции:

  1. authCaptureTransaction
  2. authOnlyTransaction
<getHostedPaymentPageRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
  <merchantAuthentication>
    <name>5KP3u95bQpv</name>
    <transactionKey>346HZ32z3fP4hTG2</transactionKey>
  </merchantAuthentication>
  <transactionRequest>
    <transactionType>authCaptureTransaction</transactionType>
    <amount>20.00</amount>
    <profile>
      <customerProfileId>123456789</customerProfileId>
    </profile>
    <customer>
      <email>ellen@mail.com</email>
    </customer>
    <billTo>
        <firstName>Ellen</firstName>
        <lastName>Johnson</lastName>
        <company>Souveniropolis</company>
        <address>14 Main Street</address>
        <city>Pecan Springs</city>
        <state>TX</state>
        <zip>44628</zip>
        <country>USA</country>
    </billTo>
  </transactionRequest>
  <hostedPaymentSettings>
    <setting>
      <settingName>hostedPaymentReturnOptions</settingName>
      <settingValue>{"showReceipt": true, "url": "https://url-when-continue-button-clicked/receipt", "urlText": "Continue", "cancelUrl": "https://url-when-cancel-button-clicked.com/cancel", "cancelUrlText": "Cancel"}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentButtonOptions</settingName>
      <settingValue>{"text": "Pay"}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentStyleOptions</settingName>
      <settingValue>{"bgColor": "blue"}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentPaymentOptions</settingName>
      <settingValue>{"cardCodeRequired": false, "showCreditCard": true, "showBankAccount": true}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentSecurityOptions</settingName>
      <settingValue>{"captcha": false}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentShippingAddressOptions</settingName>
      <settingValue>{"show": false, "required": false}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentBillingAddressOptions</settingName>
      <settingValue>{"show": true, "required":false}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentCustomerOptions</settingName>
      <settingValue>{"showEmail": false, "requiredEmail": false, "addPaymentProfile": true}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentOrderOptions</settingName>
      <settingValue>{"show": true, "merchantName": "G and S Questions Inc."}</settingValue>
    </setting>
    <setting>
      <settingName>hostedPaymentIFrameCommunicatorUrl</settingName>
      <settingValue>{"url": "https://url-contianing-iframe"}</settingValue>
    </setting>
  </hostedPaymentSettings>
</getHostedPaymentPageRequest>

Как мне изменить XML, чтобы я мог получить форму для повторяющихся счетов? Поскольку я не нашел ни одного примера реализации в accept hosted, чтобы получить действительный токен формы для повторяющегося выставления счетов. Не было упоминаний о повторяющемся выставлении счетов за принятую документацию.

Кроме того, я использую метод перенаправления, а не метод iframe для отображения формы, которая также не возвращает никакого ответа.

1 Ответ

0 голосов
/ 27 апреля 2020

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

Если вы пытаетесь использовать размещенные формы Accept для создания подписки, вы на самом деле не хотите Не используйте размещенную платежную страницу, описанную здесь .

. Правильный рабочий процесс, с помощью API, сделать запрос на профиль клиента: createCustomerProfileRequest. Все, что вам нужно, это их адрес электронной почты.

После получения идентификатора профиля из этого звонка вы делаете запрос на токен для принятого хоста Форма добавления профиля . Документация для этой формы и других здесь . Я даже не осознавал, что эти формы существуют. Их трудно найти в Google, даже если вы знаете, что ищете.

Вам нужен идентификатор профиля клиента, чтобы получить токен для формы "Добавить профиль оплаты".

You обработайте ответ на эту форму на стороне клиента, так как вы получаете ответ со страницы IFrameCommunicator, которую вы настроили (она работает так же для формы оплаты или этих форм типа профиля клиента). Вот пример .

Затем я вызвал серверный код для создания подписки с API - я передаю ему идентификатор профиля клиента, потому что, честно говоря, я не знаю, возвращает ли форма новый идентификатор платежного профиля. Если у вас есть идентификатор профиля клиента, вы можете получить любые существующие профили оплаты. Поэтому, используя только идентификатор профиля клиента, я звоню, чтобы получить идентификатор профиля оплаты - getCustomerProfileRequest. Этот звонок возвращает все виды вещей, включая платежные профили. Я просто беру первый. Теперь, используя идентификатор профиля клиента и идентификатор профиля платежа, я могу создать подписку - ARBCreateSubscriptionRequest. Существуют примеры, которые помогут вам правильно оформить подписку.

Последнее замечание: если вы тестируете это в песочнице, вам потребуется 20 секундная задержка между получением идентификатора профиля оплаты и получением подписки. используя API. Песочница не имеет ресурсов для обработки этих транзакций в режиме реального времени. Понимание этого стоило мне нескольких часов. Вы можете прочитать этот пост, чтобы подтвердить, и хотя он старше, это все еще верно:

https://community.developer.authorize.net/t5/Integration-and-Testing/E00040-when-Creating-Subscription-from-Customer-Profile/m-p/59597#M34176

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...