Я использовал Django -PayPal для одноразовой оплаты, и его работа хорошо. Теперь я хочу преобразовать его в подписку, которая автоматически повторно подпишет пакет в тот же день следующего месяца или в следующем году. Это код единовременного платежа, который работает нормально:
paypal_dict = {
'business': mailpaypal,
'amount': request.POST.get('amount'),
'item_name': 'Order {}'.format(pack.packagename),
'invoice': 'Package'+str(request.POST.get("package_id"))+str(genralsetting_views.systemtimezone(request)),
'custom': str(transactionid)+"_Package_"+str(request.POST.get("package_id"))+'_'+str(genralsetting_views.systemtimezone(request))+'_'+str(endtime)+ '_' + str(viddd)+'_'+str(request.session['id'])+'_'+str(request.session['currency']),
'currency_code': GeneralSetting.objects.get(userid__usertype="superadmin").currency,
"notify_url": request.build_absolute_uri('/') + 'SubscriptionPaypalIPN',
"return": request.build_absolute_uri('/') + 'index',
"cancel_return": request.build_absolute_uri('/') + 'RegistrationPackages',
}
form = PayPalPaymentsForm(initial=paypal_dict)
return render(request, 'Vendor/Packages/RegistrationPackages/paypalpayment.html', {'cur':GeneralSetting.objects.get(userid__usertype="superadmin").currency,"session": request.session, 'form': form,"Data":data})
В документации Django -Paypal они показали способ подписки, как показано ниже:
paypal_dict = {
"cmd": "_xclick-subscriptions",
"business": 'receiver_email@example.com',
"a3": "9.99", # monthly price
"p3": 1, # duration of each unit (depends on unit)
"t3": "M", # duration unit ("M for Month")
"src": "1", # make payments recur
"sra": "1", # reattempt payment on payment error
"no_note": "1", # remove extra notes (optional)
"item_name": "my cool subscription",
"notify_url": "http://www.example.com/your-ipn-location/",
"return": "http://www.example.com/your-return-location/",
"cancel_return": "http://www.example.com/your-cancel-location/",
}
# Create the instance.
form = PayPalPaymentsForm(initial=paypal_dict, button_type="subscribe")
# Output the button.
form.render()
Я написал тот же код, что и в документации
paypal_dict = {
"cmd": "_xclick-subscriptions",
"business": mailpaypal,
"a3": "9.99", # monthly price
"p3": 1, # duration of each unit (depends on unit)
"t3": "M", # duration unit ("M for Month")
"src": "1", # make payments recur
"sra": "1", # reattempt payment on payment error
"no_note": "1", # remove extra notes (optional)
"item_name": "my cool subscription",
"notify_url": request.build_absolute_uri('/') + 'SubscriptionPaypalIPN',
"return": request.build_absolute_uri('/') + 'index',
"cancel_return": request.build_absolute_uri('/') + 'RegistrationPackages',
}
form = PayPalPaymentsForm(initial=paypal_dict, button_type="subscribe")
return render(request, 'Vendor/Packages/RegistrationPackages/paypalpayment.html', {'cur':GeneralSetting.objects.get(userid__usertype="superadmin").currency,"session": request.session, 'form': form,"Data":data})
Но когда я нажимаю кнопку подписки, PayPal говорит: «В данный момент ничего не работает. Повторите попытку позже».
когда я нажимаю кнопку подписки, он перенаправляет на эту ссылку «https://www.sandbox.paypal.com/cgi-bin/webscr», а при однократном платеже перенаправляет на эту ссылку «https://www.sandbox.paypal.com/webapps/hermes?token=8F359638A8728725A&useraction=commit&mfid=159438098_a982* 3bb48»
Кто-нибудь может сказать мне решение, как сделать подписку с PayPal- django?