コード例 #1
0
        /**
         * @return bool
         */
        public bool isParametersValid()
        {
            int           errorsNumber   = 0;
            List <string> requiredParams = new List <string>();

            if (Paymentwall_Pingback.getApiType() == Paymentwall_Pingback.API_VC)
            {
                requiredParams.AddRange(new string[] { "uid", "currency", "type", "ref", "sig" });
            }
            else if (Paymentwall_Pingback.getApiType() == Paymentwall_Pingback.API_GOODS)
            {
                requiredParams.AddRange(new string[] { "uid", "goodsid", "type", "ref", "sig" });
            }
            else
            { //API_CART
                requiredParams.AddRange(new string[] { "uid", "goodsid[0]", "type", "ref", "sig" });
            }

            foreach (string field in requiredParams)
            {
                if (!this.parameters.ContainsKey(field) || String.IsNullOrWhiteSpace(this.parameters[field]))
                {
                    this.appendToErrors("Parameter " + field + " is missing");
                    errorsNumber++;
                }
            }

            return(errorsNumber == 0);
        }
コード例 #2
0
        /**
         * @return bool
         */
        public bool isSignatureValid()
        {
            string signature = "";
            Dictionary <string, string> signatureParamsToSign = new Dictionary <string, string>();

            if (this.parameters.ContainsKey("sig"))
            {
                signature = this.parameters["sig"];
            }
            else
            {
                signature = null;
            }

            List <string> signatureParams = new List <string>();

            if (Paymentwall_Pingback.getApiType() == Paymentwall_Pingback.API_VC)
            {
                signatureParams.AddRange(new string[] { "uid", "currency", "type", "ref" });
            }
            else if (Paymentwall_Pingback.getApiType() == Paymentwall_Pingback.API_GOODS)
            {
                signatureParams.AddRange(new string[] { "uid", "goodsid", "slength", "speriod", "type", "ref" });
            }
            else
            { //API_CART
                signatureParams.AddRange(new string[] { "uid", "goodsid", "type", "ref" });
                this.parameters["sign_version"] = Paymentwall_Pingback.SIGNATURE_VERSION_2.ToString();
            }

            if (!this.parameters.ContainsKey("sign_version")) //Check if signature version 1
            {
                foreach (string field in signatureParams)
                {
                    if (this.parameters[field] != null)
                    {
                        signatureParamsToSign.Add(field, this.parameters[field]);
                    }
                    else
                    {
                        signatureParamsToSign.Add(field, null);
                    }
                }
                this.parameters["sign_version"] = Paymentwall_Pingback.SIGNATURE_VERSION_1.ToString();
            }
            else
            {
                signatureParamsToSign = this.parameters;
            }

            string signatureCalculated = this.calculateSignature(signatureParamsToSign, Paymentwall_Pingback.getSecretKey(), Convert.ToInt32(this.parameters["sign_version"]));

            return(signatureCalculated == signature);
        }