Отправляйте деньги автоматически с помощью адаптивных платежей Paypal

вот сценарий пользователя:

"У Джона есть 5 виртуальных кредитов в его аккаунте на веб-сайте, он может конвертировать свои виртуальные кредиты в реальные деньги, нажав кнопку на веб-сайте. Затем веб-сайт будет давать ему реальные деньги через PayPal, если у Джона есть PayPal аккаунт или нет. "

Я хотел бы знать, можно ли реализовать этот сценарий?

Конечно, из соображений безопасности я проверю на стороне сервера все данные, необходимые для безопасного выполнения операции.

Можно ли автоматизировать это без каких-либо действий со стороны администратора сайта?

Спасибо за ответ !

РЕДАКТИРОВАТЬ:

Я нашел это сообщение: https://www.x.com/devzone/articles/using-adaptive-payments-disburse-cash-prizes-real-time-easter-eggs

Попробую адаптировать под свой сценарий. Я обновлю свой пост сегодня, когда закончу интеграцию.

ИЗМЕНИТЬ 2:

Кажется, все в порядке, но я пытаюсь получить идентификатор приложения с www.x.com, они спрашивают меня, как я использую API:

Привет и спасибо за вашу заявку,

Прежде чем мы продолжим наш обзор, не могли бы вы уточнить, какие API вам нужны?

  • Не могли бы вы пояснить, как вы используете «неявные платежи», которые будут использоваться для оплаты ваших пользователей с вашего счета PayPal? Если это не требуется, отмените выбор этого параметра в разделе «Службы, используемые приложением» - «Адаптивные платежи» - «Базовые платежи» вашей заявки.

  • Вы также выбрали Preapprovals, который представляет собой расширенный API, требующий тщательной проверки. Это будет использоваться для создания соглашения о выставлении счетов с вашими клиентами (как в бизнес-модели «Подписка»). Если это необходимо, заполните поле «Условия предварительного утверждения» и сообщите нам, как мы можем протестировать поток предварительно утвержденных платежей на вашем сайте. Если это не требуется, отмените выбор этого параметра в разделе «Службы, используемые приложением» - «Адаптивные платежи».

Примечание. Вам нужно будет щелкнуть имя приложения в разделе «Мои приложения» на x.com, чтобы развернуть и отредактировать поля формы отправки.

Что я должен делать ?

ИЗМЕНИТЬ 3:

Хорошо, я получил благословение Paypal, теперь я могу использовать API с живыми учетными данными! Я снял флажок "Предварительные утверждения", и все прошло хорошо.

Последний, но не менее важный вопрос:

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

Вот пример использования, чтобы лучше понять ситуацию:

"Джон хочет конвертировать 5 виртуальных кредитов в 5 долларов США, он нажимает кнопку вывода средств, и веб-приложение автоматически отправляет ему реальные деньги на его счет PayPal. Доктор Хаус хочет преобразовать 100 виртуальных кредитов в 100 долларов США, для этой суммы требуется с одобрения администратора, этот администратор входит в свою учетную запись PayPal и проверяет, все ли в порядке, он подтверждает платеж, тогда доктор Хаус получит свои деньги! "

Нашел такой вариант:

$PayRequestFields = array(
                    'ActionType' => 'PAY', // Required. Whether the request pays the receiver or whether the request is set up to create a payment request, but not fulfill the payment until the ExecutePayment is called. Values are: PAY, CREATE, PAY_PRIMARY

Если изменить значение PAY на значение CREATE, ничего не произойдет.

Верно !


person Mindhavok    schedule 24.04.2013    source источник


Ответы (2)


Вы можете настроить автоматизацию. Если вы специально хотите использовать Adaptive Payments, вы можете использовать Adaptive Payments Pay API для отправки денег Джону. Однако Джону понадобится PayPal для доступа к деньгам и их извлечения.

person PP_MTS_Chad    schedule 24.04.2013
comment
Я не имел в виду специально использовать адаптивную оплату, если есть лучший способ использовать PayPal для этого типа сценария, я действительно открыт. Пока я читал документацию, нет конкретного объяснения того, как это сделать правильно. Чтобы разместить кнопку PayPal, нет проблем, я создаю ее с идентификатором в учетной записи marchand (pro), интегрирую код на веб-сайт и вуаля! Но для кнопки, где пользователь не может нажать на кнопку, которая может автоматически дать ему немного денег, это меня смущает! - person Mindhavok; 25.04.2013
comment
Есть два способа выполнить выплату на счет: с помощью Adaptive Payments Pay API, а второй - через MassPay. Адаптивные платежи - лучший вариант. Все, что вам нужно сделать, это создать кнопку, которая использует Adaptive Payments Pay API, динамически указывать сумму и адрес электронной почты, кому вы отправляете средства, а затем отправлять. Тогда все готово. - person PP_MTS_Chad; 25.04.2013
comment
Привет ! Действительно, я использовал адаптивный платеж, и, похоже, он работает хорошо! Тем не менее, мне нужно провести дополнительные тесты, чтобы убедиться, что все в порядке! Я скоро выложу все подробности, когда буду уверен, что все работает хорошо. Также я пытаюсь получить идентификатор приложения через x.com. Они спрашивают меня о деталях того, как я использую API. Ставлю вопросы в редакцию. - person Mindhavok; 26.04.2013

Я заставил его работать в режиме песочницы с помощью этого кода, еще не пробовал вживую:

        ServicePointManager.Expect100Continue = true;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

        var request = (HttpWebRequest)WebRequest.Create("https://svcs.sandbox.paypal.com/AdaptivePayments/Pay");
        request.ContentType = "application/json";
        request.Method = "POST";

        request.Headers.Add("X-PAYPAL-SECURITY-USERID", apiUsername);
        request.Headers.Add("X-PAYPAL-SECURITY-PASSWORD", apiPassword);
        request.Headers.Add("X-PAYPAL-SECURITY-SIGNATURE", apiSig);
        request.Headers.Add("X-PAYPAL-APPLICATION-ID", "APP-80W284485P519543T"); // sandbox app id
        request.Headers.Add("X-PAYPAL-REQUEST-DATA-FORMAT", "JSON");
        request.Headers.Add("X-PAYPAL-RESPONSE-DATA-FORMAT", "JSON");

        JObject j = new JObject();
        using (var streamWriter = new StreamWriter(request.GetRequestStream()))
        {
            string json = "{  \"actionType\": \"PAY\",  \"currencyCode\": \"GBP\", \"useCredentials\": \"FALSE\",  \"senderEmail\": \"[email protected]\",\"ipnNotificationUrl\": \"http://example.com/IPN.aspx\",    \"receiverList\": {\"receiver\": [{\"amount\": \"1.00\", \"email\": \"[email protected]\"     }]  },  \"returnUrl\": \"http://example.com/thanks.aspx\",    \"cancelUrl\": \"http://example.com/cancel.aspx\",    \"requestEnvelope\": {    \"errorLanguage\": \"en_US\",      \"detailLevel\": \"ReturnAll\"   }}";



            streamWriter.Write(json);
            streamWriter.Flush();
            streamWriter.Close();
        }

        var httpResponse = (HttpWebResponse)request.GetResponse();
        string sResult = "";
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            sResult = streamReader.ReadToEnd();

        }

Несколько вещей, на которые следует обратить внимание:

  • убедитесь, что запрос действителен в формате JSON и вы случайно не испортили синтаксис
  • убедитесь, что вы используете правильный регистр в параметрах запроса
  • убедитесь, что вы используете учетные данные песочницы при публикации на URL-адрес песочницы
  • Добавьте свой код для проверки транзакции (суммы, получателя и т. Д.) В указанном вами IPN-адресе.

Это автоматически производит платеж из вашей учетной записи получателю, которому не нужно входить в систему для его авторизации.

person Damo    schedule 11.12.2017