def create(self, request, *args, **kwargs): serializer = self.get_serializer_class()(data=self.request.data) if serializer.is_valid(raise_exception=True): order = self.get_order() transaction_redirect = order.payment_method.get_payment_process_response( order=order, urls=PaymentUrls( return_url=serializer.validated_data.get( 'return_url', convert_to_secure_url( request.build_absolute_uri( self._reverse_url( 'public_api:payments-callback-list'))), ), cancel_url=serializer.validated_data.get( 'cancel_url', convert_to_secure_url( request.build_absolute_uri( self._reverse_url( 'public_api:payments-cancel-list'))), ), payment_url=None)) return Response( TransactionSerializer({ 'payment_url': transaction_redirect.url }).data)
def get_payment_urls(request, order): """ :type request: django.http.HttpRequest """ kwargs = dict(pk=order.pk, key=order.key) def absolute_url_for(name): return request.build_absolute_uri(reverse(name, kwargs=kwargs)) return PaymentUrls( payment_url=absolute_url_for("shuup:order_process_payment"), return_url=absolute_url_for("shuup:order_process_payment_return"), cancel_url=absolute_url_for("shuup:order_payment_canceled"), )