Регулярные платежи PayPal с пробным периодом

Я пытаюсь внедрить систему подписок PayPal со следующими функциями:

  • 1-й месяц обслуживания приложения будет полностью бесплатным, после чего пользователь будет платить ежемесячную сумму.

Я написал следующий код, как показано ниже:

BillingPeriodType periodType = BillingPeriodType.MONTH;
                    switch (subs)
                    {
                        case("Month"):
                            periodType = BillingPeriodType.MONTH;
                            break;
                        case("Year"):
                            periodType = BillingPeriodType.YEAR;
                            break;
                    }
                    BasicAmountType paymentAmount = new BasicAmountType((CurrencyCodeType)EnumUtils.GetValue("USD", typeof(CurrencyCodeType)), subType.Price);
                    BillingPeriodType period = periodType;
                    BillingPeriodDetailsType paymentPeriod = new BillingPeriodDetailsType(period, 1, paymentAmount);
                    ScheduleDetailsType scheduleDetails = new ScheduleDetailsType();

                    /*Free trial period of 1 month for monthly sub*/
                    if (periodType == BillingPeriodType.MONTH)
                    {
                        scheduleDetails.TrialPeriod = new BillingPeriodDetailsType(BillingPeriodType.MONTH,1, new BasicAmountType((CurrencyCodeType)EnumUtils.GetValue("USD", typeof(CurrencyCodeType)), "0.01"));
                        scheduleDetails.TrialPeriod.TotalBillingCycles = 1;
                    }
                    else if (periodType == BillingPeriodType.YEAR)
                    {
                        scheduleDetails.TrialPeriod = new BillingPeriodDetailsType(BillingPeriodType.YEAR, 1, new BasicAmountType((CurrencyCodeType)EnumUtils.GetValue("USD", typeof(CurrencyCodeType)), "0.01"));

                    }

                    scheduleDetails.Description = "//Some description"
                    scheduleDetails.PaymentPeriod = paymentPeriod;
                    createRPProfileRequest.CreateRecurringPaymentsProfileRequestDetails.ScheduleDetails = scheduleDetails;
                    CreateRecurringPaymentsProfileReq createRPProfileReq = new CreateRecurringPaymentsProfileReq();
                    createRPProfileReq.CreateRecurringPaymentsProfileRequest = createRPProfileRequest;

Это вызывает у меня огромную озабоченность по поводу безопасности...

So let's suppose user subscribes for monthly subscription and get 1 month for free... 

This way, nothing stops the user to cancel the subscription the last day and then to re-subscribe once again and re-use the 1 month trial period for free...

В настоящее время из информации о пользователях в PayPal я храню только информацию ProfileID в БД....

Есть ли эффективный способ узнать, использовал ли пользователь бесплатный пробный период на моем сайте?

Also another security concern to me is that user can simply re-register with new account and subscribe once again under completely different ProfileID

Как бы вы, ребята, решили это?


person User987    schedule 17.02.2017    source источник


Ответы (1)


Я просто надеюсь, что правильно понял ваш вопрос:

Почему бы вам не связать адрес электронной почты пользователя PayPal с зарегистрированной учетной записью? В этом случае пользователь должен использовать другую учетную запись PayPal, поэтому избежать таких людей намного проще.

И при регистрации пользователей пользователи уже должны предоставить свою платежную информацию. Включая его адрес электронной почты PayPal.

person Philipp Müller    schedule 17.02.2017
comment
Филипп, хороший вопрос, но что, если пользователь добавит несколько адресов электронной почты в свою учетную запись PayPal и изменит новый на основной (это возможно)? знак равно - person User987; 17.02.2017
comment
О, я думал, что это невозможно. API PayPal не предоставляет уникальную информацию о пользователе? - person Philipp Müller; 17.02.2017
comment
Я считаю, что это так, тогда мне нужно будет проверить его имя и фамилию и ранее существовавшие профили подписки, чтобы узнать, есть ли у него пробные периоды, нет? \ - person User987; 17.02.2017
comment
Если у вас есть уникальный идентификатор пользователя, вы можете легко избежать его создания другой учетной записи, и в той же учетной записи, конечно, не должно быть возможности сделать вторую пробную версию. Должна быть только одна учетная запись с одной и той же идентификацией пользователя PayPal. - person Philipp Müller; 17.02.2017
comment
Глядя в свой журнал IPN, я вижу payer_id, который представляет собой 13-значный идентификатор PayPal, который, как я считаю, нельзя изменить, за исключением создания новой учетной записи PayPal. Если они собираются создать новую учетную запись PayPal только для вашей бесплатной пробной версии, что ж, я думаю, вы можете успокоиться, зная, что ваш сервис действительно хорош :) - person JBart; 19.02.2017