コード例 #1
0
ファイル: webpay.py プロジェクト: rtnpro/zamboni
def postback(request):
    """Verify signature from BlueVia and set contribution to paid."""
    signed_jwt = request.raw_post_data
    try:
        data = parse_from_webpay(signed_jwt, request.META.get('REMOTE_ADDR'))
    except InvalidSender:
        return http.HttpResponseBadRequest()

    pd = urlparse.parse_qs(data['request']['productData'])
    contrib_uuid = pd['contrib_uuid'][0]
    try:
        contrib = Contribution.objects.get(uuid=contrib_uuid)
    except Contribution.DoesNotExist:
        etype, val, tb = sys.exc_info()
        raise LookupError('BlueVia JWT (iss:%s, aud:%s) for trans_id %s '
                          'links to contrib %s which doesn\'t exist'
                          % (data['iss'], data['aud'],
                             data['response']['transactionID'],
                             contrib_uuid)), None, tb

    contrib.update(type=amo.CONTRIB_PURCHASE,
                   bluevia_transaction_id=data['response']['transactionID'])

    tasks.purchase_notify.delay(signed_jwt, contrib.pk)
    return http.HttpResponse(data['response']['transactionID'])
コード例 #2
0
ファイル: webpay.py プロジェクト: rtnpro/zamboni
def chargeback(request):
    """
    Verify signature from BlueVia and create a refund contribution tied
    to the original transaction.
    """
    signed_jwt = request.read()
    # Check the JWT we've got is valid.
    try:
        data = parse_from_webpay(signed_jwt, request.META.get('REMOTE_ADDR'))
    except InvalidSender:
        return http.HttpResponseBadRequest()

    uuid = data['response']['transactionID']
    # Check that we've got a valid uuid.
    # Looks up the contribution based upon the BlueVia transaction id.
    try:
        original = Contribution.objects.get(bluevia_transaction_id=uuid)
    except Contribution.DoesNotExist:
        log.info('Not found: %s' % uuid)
        return http.HttpResponseBadRequest()

    # Create a refund in our end.
    Contribution.objects.create(addon_id=original.addon_id,
        amount=-original.amount, currency=original.currency, paykey=None,
        price_tier_id=original.price_tier_id, related=original,
        source=request.REQUEST.get('src', ''), source_locale=request.LANG,
        type=amo.CONTRIB_REFUND, user_id=original.user_id, uuid=get_uuid())

    tasks.chargeback_notify.delay(signed_jwt, original.pk)
    return http.HttpResponse(uuid)
コード例 #3
0
ファイル: webpay.py プロジェクト: shahbaz17/zamboni
def postback(request):
    """Verify signature and set contribution to paid."""
    signed_jwt = request.POST.get('notice', '')
    try:
        data = parse_from_webpay(signed_jwt, request.META.get('REMOTE_ADDR'))
    except InvalidSender, exc:
        app_pay_cef.log(request, 'Unknown app', 'invalid_postback',
                        'Ignoring invalid JWT %r: %s' % (signed_jwt, exc),
                        severity=4)
        return http.HttpResponseBadRequest()
コード例 #4
0
def postback(request):
    """Verify signature and set contribution to paid."""
    signed_jwt = request.POST.get('notice', '')
    try:
        data = parse_from_webpay(signed_jwt, request.META.get('REMOTE_ADDR'))
    except InvalidSender, exc:
        app_pay_cef.log(request, 'Unknown app', 'invalid_postback',
                        'Ignoring invalid JWT %r: %s' % (signed_jwt, exc),
                        severity=4)
        return http.HttpResponseBadRequest()