'Attempt to create the basket and enroll the user.'

def post(self, request, *args, **kwargs):

    user = request.user
    (valid, course_key, error) = self._is_data_valid(request)
    if (not valid):
        return DetailResponse(error, status=HTTP_406_NOT_ACCEPTABLE)
    embargo_response = embargo_api.get_embargo_response(request, course_key, user)
    if embargo_response:
        return embargo_response
    course_id = unicode(course_key)
    enrollment = CourseEnrollment.get_enrollment(user, course_key)
    if (enrollment and enrollment.is_active):
        msg = Messages.ENROLLMENT_EXISTS.format(course_id=course_id, username=user.username)
        return DetailResponse(msg, status=HTTP_409_CONFLICT)
    course = courses.get_course(course_key)
    if CourseEnrollment.is_enrollment_closed(user, course):
        msg = Messages.ENROLLMENT_CLOSED.format(course_id=course_id)
        log.info(u'Unable    to    enroll    user    %s    in    closed    course    %s.', user.id, course_id)
        return DetailResponse(msg, status=HTTP_406_NOT_ACCEPTABLE)
    honor_mode = CourseMode.mode_for_course(course_key, CourseMode.HONOR)
    audit_mode = CourseMode.mode_for_course(course_key, CourseMode.AUDIT)
    default_enrollment_mode = (audit_mode or honor_mode)
    if (not default_enrollment_mode):
        msg = Messages.NO_DEFAULT_ENROLLMENT_MODE.format(course_id=course_id)
        return DetailResponse(msg, status=HTTP_406_NOT_ACCEPTABLE)
    elif (default_enrollment_mode and (not default_enrollment_mode.sku)):
        msg = Messages.NO_SKU_ENROLLED.format(enrollment_mode=default_enrollment_mode.slug, course_id=course_id, username=user.username)
        log.info(msg)
        self._enroll(course_key, user, default_enrollment_mode.slug)
        self._handle_marketing_opt_in(request, course_key, user)
        return DetailResponse(msg)
    try:
        api_session = requests.Session()
        api = ecommerce_api_client(user, session=api_session)
    except ValueError:
        self._enroll(course_key, user)
        msg = Messages.NO_ECOM_API.format(username=user.username, course_id=unicode(course_key))
        log.debug(msg)
        return DetailResponse(msg)
    response = None
    try:
        self._add_request_cookie_to_api_session(api_session, request, SAILTHRU_CAMPAIGN_COOKIE)
        utm_cookie_name = RegistrationCookieConfiguration.current().utm_cookie_name
        self._add_request_cookie_to_api_session(api_session, request, utm_cookie_name)
        response_data = api.baskets.post({'products': [{'sku': default_enrollment_mode.sku}], 'checkout': True})
        payment_data = response_data['payment_data']
        if payment_data:
            response = JsonResponse(payment_data)
        elif response_data['order']:
            msg = Messages.ORDER_COMPLETED.format(order_number=response_data['order']['number'])
            log.debug(msg)
            response = DetailResponse(msg)
        else:
            msg = u'Unexpected    response    from    basket    endpoint.'
            log.error((msg + u'    Could    not    enroll    user    %(username)s    in    course    %(course_id)s.'), {'username': user.id, 'course_id': course_id})
            raise InvalidResponseError(msg)
    except (exceptions.SlumberBaseException, exceptions.Timeout) as ex:
        log.exception(ex.message)
        return InternalRequestErrorResponse(ex.message)
    finally:
        audit_log('checkout_requested', course_id=course_id, mode=default_enrollment_mode.slug, processor_name=None, user_id=user.id)
    self._handle_marketing_opt_in(request, course_key, user)
    return response
