/** * @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 (PWPingback.GetApiType() == PWPingback.API_VC) { signatureParams.AddRange(new string[] { "uid", "currency", "type", "ref" }); } else if (PWPingback.GetApiType() == PWPingback.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"] = PWPingback.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"] = PWPingback.SIGNATURE_VERSION_1.ToString(); } else { signatureParamsToSign = this.parameters; } string signatureCalculated = this.CalculateSignature(signatureParamsToSign, PWPingback.GetSecretKey(), Convert.ToInt32(this.parameters["sign_version"])); return(signatureCalculated == signature); }
/* * Get required parameters based on API * * @return List<string> */ public List <string> GetRequiredParams() { List <string> requiredParams = new List <string>(); if (PWPingback.GetApiType() == PWPingback.API_VC) { requiredParams.AddRange(new string[] { "uid", "currency", "type", "ref", "sig" }); } else if (PWPingback.GetApiType() == PWPingback.API_GOODS) { requiredParams.AddRange(new string[] { "uid", "goodsid", "type", "ref", "sig" }); } else //API_CART { requiredParams.AddRange(new string[] { "uid", "goodsid[0]", "type", "ref", "sig" }); } return(requiredParams); }