示例#1
0
def cancel_registration(modeladmin, request, queryset):
    messages = []
    subject = u"PyCon APAC 2016 결제 취소 알림"
    body = u"""
안녕하세요. PyCon APAC 준비위원회입니다.

결제가 취소되었음을 알려드립니다.
결제 대행사 사정에 따라 다소 늦게 카드 취소가 이뤄질 수 있습니다.

다른 문의 사항은 [email protected] 로 메일 부탁드립니다.
감사합니다.
    """
    from_email = "*****@*****.**"

    results = []
    now = datetime.now()
    access_token = get_access_token(config.IMP_API_KEY, config.IMP_API_SECRET)
    imp_client = Iamporter(access_token)

    for obj in queryset:
        if obj.payment_method != 'card':
            obj.cancel_reason = u'카드 결제만 취소 가능'
            results.append(obj)
            continue

        if obj.payment_status != 'paid':
            obj.cancel_reason = u'결제 완료만 취소 가능'
            results.append(obj)
            continue

        try:
            imp_params = dict(
                merchant_uid=obj.merchant_uid,
                reason=u'Cancel by admin',
            )
            imp_client.cancel(**imp_params)
        except IOError:
            obj.cancel_status = 'IOError'
            results.append(obj)
            continue
        except IamporterError as e:
            obj.cancel_status = e.code
            obj.cancel_reason = e.message
            results.append(obj)
            continue

        obj.canceled = now
        obj.payment_status = 'cancelled'
        obj.save(update_fields=['payment_status', 'canceled'])

        obj.cancel_status = 'CANCELLED'
        results.append(obj)

        message = (subject, body, from_email, [obj.email])
        messages.append(message)

    send_mass_mail(messages, fail_silently=False)
    return render(request, 'registration/cancellation_result.html',
                  {'results': results})
示例#2
0
def cancel_registration(modeladmin, request, queryset):
    messages = []
    subject = u"PyCon APAC 2016 결제 취소 알림"
    body = u"""
안녕하세요. PyCon APAC 준비위원회입니다.

결제가 취소되었음을 알려드립니다.
결제 대행사 사정에 따라 다소 늦게 카드 취소가 이뤄질 수 있습니다.

다른 문의 사항은 [email protected] 로 메일 부탁드립니다.
감사합니다.
    """
    from_email = "*****@*****.**"

    results = []
    now = datetime.now()
    access_token = get_access_token(config.IMP_API_KEY, config.IMP_API_SECRET)
    imp_client = Iamporter(access_token)

    for obj in queryset:
        if obj.payment_method != 'card':
            obj.cancel_reason = u'카드 결제만 취소 가능'
            results.append(obj)
            continue

        if obj.payment_status != 'paid':
            obj.cancel_reason = u'결제 완료만 취소 가능'
            results.append(obj)
            continue

        try:
            imp_params = dict(
                merchant_uid=obj.merchant_uid,
                reason=u'Cancel by admin',
            )
            imp_client.cancel(**imp_params)
        except IOError:
            obj.cancel_status = 'IOError'
            results.append(obj)
            continue
        except IamporterError as e:
            obj.cancel_status = e.code
            obj.cancel_reason = e.message
            results.append(obj)
            continue

        obj.canceled = now
        obj.payment_status = 'cancelled'
        obj.save(update_fields=['payment_status', 'canceled'])

        obj.cancel_status = 'CANCELLED'
        results.append(obj)

        message = (subject, body, from_email, [obj.email])
        messages.append(message)

    send_mass_mail(messages, fail_silently=False)
    return render(request, 'registration/cancellation_result.html', {'results': results})