示例#1
0
        order = ("VERSIO", "MYYJA", "KYSELYTUNNUS", "MAKSUTUNNUS",
                 "VIITE", "TARKISTE-VERSIO", "secret")

        s = ""
        for p in order:
            if p == "secret":
                s += self.get_setting("merchant_secret")
            else:
                s += data[p]

        import md5
        m = md5.new(s)
        data["TARKISTE"] = m.hexdigest().upper()
        
        con = urllib2.urlopen(self.QUERY_URL, urlencode(data))
        resp = con.read()
        print resp

        #respdata = cgi.parse_qs(resp)

        # No response MAC is sent.

        return

        if respdata["ReturnCode"] == "000":
            return (True, respdata)
        else:
            return (False, respdata)

PaymentProcessor.register_processor(OpPaymentProcessor)
示例#2
0
        "AAB_REJECT": "error",
    }

    PAYMENT_REQ_MAC = "AAB_MAC"
    PAYMENT_REQ_PARAMS = (
        ("AAB_VERSION", "data"),
        ("AAB_STAMP", "data"),
        ("AAB_RCV_ID", "data"),
        ("AAB_AMOUNT", "data"),
        ("AAB_REF", "data"),
        ("AAB_DATE", "data"),
        ("AAB_CUR", "data"),
        ("merchant_secret", "processor"),
    )
    PAYMENT_REQ_SEPARATOR = "&"

    PAYMENT_RESP_MAC = "AAB-RETURN-MAC"
    PAYMENT_RESP_PARAMS = (
        ("AAB-RETURN-VERSION", "GET"),
        ("AAB-RETURN-STAMP","GET"),
        ("AAB-RETURN-REF", "GET"),
        ("AAB-RETURN-PAID", "GET"),
        ("merchant_secret", "processor"),
    )
    PAYMENT_RESP_SEPARATOR = "&"

    COST_FIXED = "0.34"
    COST_PERCENTAGE = "0.00"

PaymentProcessor.register_processor(SpankkiPaymentProcessor)
示例#3
0
        data["gsNextAkt"] = "InetPaySt"
        data["Version"] = "0001"
        data["gsResp"] = "S"
        
        order = ("secret", "MerchantID", "Refno")

        s = ""
        for p in order:
            if p == "secret":
                s += self.get_setting("merchant_secret")
            else:
                s += data[p]

        import md5
        m = md5.new(s)
        data["VerifyCode"] = m.hexdigest().upper()
        
        con = urllib2.urlopen(self.QUERY_URL, urlencode(data))
        resp = con.read()

        respdata = cgi.parse_qs(resp)

        # No response MAC is sent.

        if respdata["ReturnCode"] == "000":
            return (True, respdata)
        else:
            return (False, respdata)

PaymentProcessor.register_processor(SampoPaymentProcessor)
示例#4
0
    """
    Payment processor for Aktia/SP/POP-maksu. Extends the generic
    Samlink payment processor.

    Features: authcap, (query)

    Region(s): FI

    Specifications:
      ??
    
    Merchant credentials for testing:
      merchant_key = "0000000000"
      merchant_secret = "11111111111111111111"

    Client credentials for testing:
      username = "******"
      password = "******"
    """

    METHOD = "aktia"

    URL = "https://verkkomaksu.inetpankki.samlink.fi/vm/login.html"
    QUERY_URL = "https://verkkomaksu.inetpankki.samlink.fi/vm/kysely.html"
    BUTTON_URL = "FIXME"

    COST_FIXED = "0.34"
    COST_PERCENTAGE = "0.00"
    
PaymentProcessor.register_processor(AktiaPaymentProcessor)
示例#5
0
        "NET_REJECT": "error",
    }

    PAYMENT_REQ_MAC = "NET_MAC"
    PAYMENT_REQ_PARAMS = (
        ("NET_VERSION", "data"),
        ("NET_STAMP", "data"),
        ("NET_SELLER_ID", "data"),
        ("NET_AMOUNT", "data"),
        ("NET_REF", "data"),
        ("NET_DATE", "data"),
        ("NET_CUR", "data"),
        ("merchant_secret", "processor"),
    )
    PAYMENT_REQ_SEPARATOR = "&"

    PAYMENT_RESP_MAC = "NET_RETURN_MAC"
    PAYMENT_RESP_PARAMS = (
        ("NET_RETURN_VERSION", "GET"),
        ("NET_RETURN_STAMP","GET"),
        ("NET_RETURN_REF", "GET"),
        ("NET_RETURN_PAID", "GET"),
        ("merchant_secret", "processor"),
    )
    PAYMENT_RESP_SEPARATOR = "&"

    COST_FIXED = "1.10"
    COST_PERCENTAGE = "0.00"

PaymentProcessor.register_processor(SppopPaymentProcessor)
示例#6
0
        for (var, source) in self.PAYMENT_RESP_PARAMS:
            if source == 'GET':
                s += request.GET.get(var, '')
            elif source == 'POST':
                s += request.POST.get(var, '')
            elif source == 'processor':
                s += self.get_parameter(var)
            elif source == 'payment':
                value = payment.get_value(var)
                if var == 'amount':
                    value = self.massage_amount(value)
                s += value
                
            elif source == 'fixed':
                s += var
            else:
                pass
            s += self.PAYMENT_RESP_SEPARATOR

        m = md5.new(s)
        return_mac = request.GET.get(self.PAYMENT_RESP_MAC, '')

        if m.hexdigest().upper() != return_mac.upper():
            raise PaymentInvalidMacError("Return MAC doesn't match!")

    @classmethod
    def massage_amount(self, value):
        return value.replace(".", "")

PaymentProcessor.register_processor(PaypalPaymentProcessor)
示例#7
0
        for (var, source) in self.PAYMENT_RESP_PARAMS:
            if source == 'GET':
                s += request.GET.get(var, '')
            elif source == 'POST':
                s += request.POST.get(var, '')
            elif source == 'processor':
                s += self.get_setting(var)
            elif source == 'payment':
                value = payment.get_value(var)
                if var == 'amount':
                    value = self.massage_amount(value)
                s += value
                
            elif source == 'fixed':
                s += var
            else:
                pass
            s += self.PAYMENT_RESP_SEPARATOR

        m = md5.new(s)
        return_mac = request.GET.get(self.PAYMENT_RESP_MAC, '')

        if m.hexdigest().upper() != return_mac.upper():
            raise PaymentInvalidMacError("Return MAC doesn't match!")

    @classmethod
    def massage_amount(self, value):
        return value.replace(".", "")

PaymentProcessor.register_processor(LuottokuntaPaymentProcessor)
示例#8
0
        xml = XML(resp)
        for e in xml.getiterator():
            if e.tag.startswith("SOLOPMT_"):
                respdata[e.tag] = e.text

        for p in REFUND_RESP_PARAMS:
            if p in respdata:
                macs += respdata[p] + "&"
                print "USE:", p
            else:
                print "NOT:", p
            # print "%s = %s" % (e.tag, e.text)
        macs += self.get_setting("merchant_secret") + "&"

        respmac = respdata["SOLOPMT_MAC"]

        import md5
        m = md5.new(macs)
        print "macs", macs
        print "MAC-A", m.hexdigest().upper()
        print "MAC-B", respmac

        from exceptions import PaymentInvalidMacError

        if respmac != m.hexdigest().upper():
            raise PaymentInvalidMacError("Response MAC is invalid.")

        return respdata

PaymentProcessor.register_processor(NordeaPaymentProcessor)
示例#9
0
        "AAB_REJECT": "error",
    }

    PAYMENT_REQ_MAC = "AAB_MAC"
    PAYMENT_REQ_PARAMS = (
        ("AAB_VERSION", "data"),
        ("AAB_STAMP", "data"),
        ("AAB_RCV_ID", "data"),
        ("AAB_AMOUNT", "data"),
        ("AAB_REF", "data"),
        ("AAB_DATE", "data"),
        ("AAB_CUR", "data"),
        ("merchant_secret", "processor"),
    )
    PAYMENT_REQ_SEPARATOR = "&"

    PAYMENT_RESP_MAC = "AAB-RETURN-MAC"
    PAYMENT_RESP_PARAMS = (
        ("AAB-RETURN-VERSION", "GET"),
        ("AAB-RETURN-STAMP","GET"),
        ("AAB-RETURN-REF", "GET"),
        ("AAB-RETURN-PAID", "GET"),
        ("merchant_secret", "processor"),
    )
    PAYMENT_RESP_SEPARATOR = "&"

    COST_FIXED = "0.35"
    COST_PERCENTAGE = "0.00"

PaymentProcessor.register_processor(TapiolaPaymentProcessor)