Основная проблема рабочего процесса с интеграцией веб-приложений Paypal + ASP .NET - PullRequest
0 голосов
/ 16 сентября 2010

Я настраиваю платежный шлюз для моего программного продукта, который пользователи могут купить через Интернет и использовать. Для начала я использую стандарт платежей через веб-сайт PayPal.

Меня беспокоит основная проблема. Рабочий процесс для моего пользователя: Войти на сайт моего продукта (бесплатная лицензия на пробный период) -> Оплатить продление лицензии

Теперь предположим, что пользователь - xyz@abc.com регистрируется на моем сайте и входит в систему. Затем я показываю ему кнопку «Купить сейчас» (PayPal's). Он нажимает на него, перенаправляется на PayPal, платит, перенаправляется обратно на мой сайт. В фоновом режиме я настроил функцию IPN PayPal и получал уведомления об этой транзакции и ее деталях. Теперь - как мне связать эту покупку с моим пользователем? Как я узнаю, что xyz@abc.com осуществил платеж.

Примечание. Я не использую метод автовозврата + PDT из-за его основного недостатка - если пользователь закрывает браузер после оплаты, но до возвращения на страницу автовозврата, моя логика постоплаты никогда не запускается. Использование IPN гарантирует выполнение логики постоплаты, но как мне связать платеж с именем пользователя на моем сайте, который инициировал и завершил платеж?

Ответы [ 2 ]

2 голосов
/ 16 сентября 2010

Для пользовательского платежа вы создаете уникальный идентификатор, который отправляете для платежа, и возвращаете его на IPN.

Код, который будет использоваться для его размещения на PayPal: " счет"

Вот коды: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_Appx_websitestandard_htmlvariables

Посмотрите на таблицу 4.

счет -> Переменная Passthrough, которую вы можете использовать для идентификации вашегономер счета для этой покупки.

Вот код для IPN https://www.paypal.com/us/cgi-bin/webscr?cmd=p/pdn/ipn-codesamples-pop-outside

на if (strResponse == "VERIFIED") {... вы можетеполучить счет ... просто прочитав Request.Form ["invoice"]

Ps Вы можете использовать как PDT, так и IPN, и вы можете объединить результаты обоих.

1 голос
/ 16 сентября 2010

Вам необходимо настроить профили ASP.NET для регистрации подписчиков .Это позволяет хранить дополнительные данные для каждого пользователя в базе данных после того, как они были проверены с помощью IPN.Перед отправкой данных в PayPal вы можете создать GUID, чтобы связать заказ с зарегистрированным пользователем.

Если вы используете шаблон проекта веб-сайта ASP.NET, у вас есть профили из коробки.Если вы используете шаблон проекта веб-приложения ASP.NET, вы можете использовать Web Profile Builder для настройки профилей:

http://weblogs.asp.net/joewrobel/archive/2008/02/03/web-profile-builder-for-web-application-projects.aspx

Вот еще один крутой способ сделать это:

http://leedumond.com/blog/asp-net-profiles-in-web-application-projects/

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

1) Использовать Подписки PayPal для обработки начального бесплатного периода: -)

2) Пользователь подписывается на ваш сайт и перенаправляется на сайт PayPal

3) Ваши рукопожатия класса IPN с PayPal и захватываетзначения, возвращаемые PayPal

4) Ваш класс IPN обновляет базу данных вашего приложения и генерирует электронное письмо подписчику с обратным URL-адресом для регистрации на вашем сайте

5) Ваш класс IPN генерирует электронную почту (резервное копирование) продавцу с данными подписки

6) подписчик создает учетную запись пользователя на вашем сайте, и вы настраиваете любую дополнительную информацию об участнике, которую хотите сохранить в своем профиле

protected void Createuserwizard1_CreatingUser(object sender, EventArgs e)
{
    WebProfile p = WebProfile.GetProfile(CreateUserWizard1.UserName, true);
    p.Initialize(CreateUserWizard1.UserName, true);

    p.subscriberID = ViewState["SubscriberID"].ToString();
    p.subscriberExpireDate = ViewState["ExpireDate"].ToString();

    p.Save();
} 

Некоторые Gotchas:

Не используйте обратный URL-адрес от PayPal

Не используйте IPN и PDT .IPN - это все, что вам нужно

Не забывайте метод Save () при создании профиля: -S

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