def get(self, request):
prisoner_details = self.valid_form_data[DebitCardPrisonerDetailsView.url_name]
amount_details = self.valid_form_data[DebitCardAmountView.url_name]
amount_pence = int(amount_details['amount'] * 100)
service_charge_pence = int(get_service_charge(amount_details['amount']) * 100)
user_ip = request.META.get('HTTP_X_FORWARDED_FOR', '')
user_ip = user_ip.split(',')[0].strip() or None
payment_ref = None
failure_context = {
'short_payment_ref': _('Not known')
}
try:
payment_client = PaymentClient()
new_payment = {
'amount': amount_pence,
'service_charge': service_charge_pence,
'recipient_name': prisoner_details['prisoner_name'],
'prisoner_number': prisoner_details['prisoner_number'],
'prisoner_dob': prisoner_details['prisoner_dob'].isoformat(),
'ip_address': user_ip,
}
payment_ref = payment_client.create_payment(new_payment)
failure_context['short_payment_ref'] = payment_ref[:8]
new_govuk_payment = {
'amount': amount_pence + service_charge_pence,
'reference': payment_ref,
'description': gettext('To this prisoner: %(prisoner_number)s' % prisoner_details),
'return_url': site_url(
build_view_url(self.request, DebitCardConfirmationView.url_name)
) + '?payment_ref=' + payment_ref,
}
govuk_payment = payment_client.create_govuk_payment(payment_ref, new_govuk_payment)
if govuk_payment:
return redirect(get_link_by_rel(govuk_payment, 'next_url'))
except OAuth2Error:
logger.exception('Authentication error')
except RequestException:
logger.exception('Failed to create new payment (ref %s)' % payment_ref)
return render(request, 'send_money/debit-card-failure.html', failure_context)
views.py 文件源码
python
阅读 19
收藏 0
点赞 0
评论 0
评论列表
文章目录