2017-02-17 17 views
0

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

  • 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 я только магазин Профиль IDID в БД ....

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

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

Как вы решите эту проблему?

ответ

1

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

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

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

+0

Phillip, хороший вопрос, но что делать, если пользователь добавляет несколько адресов электронной почты в свою учетную запись PayPal и изменяет новый на первичный (это возможно)? =) – User987

+0

О, я думал, что это невозможно. Предоставляет ли API-интерфейс PayPal уникальную информацию о пользователях? –

+0

Я полагаю, что это так, тогда мне нужно будет проверить его имя и фамилию и ранее существовавшие профили подписчиков, чтобы узнать, были ли у него пробные периоды, нет? \ – User987