Exemplo n.º 1
0
        public void should_extract_correct_sign_content_when_response_has_nested_array()
        {
            String response = "{\"alipay_trade_create_response\":{\"code\":\"10000\",\"msg\":\"Success\",\"nested\":{\"a\":1,\"b\":\"2\","
                              + "\"array\":[\"1\",\"2\",\"3\"]},\"out_trade_no\":\"20150320010101001\",\"trade_no\":\"2019062322001446881000041395\"},"
                              + "\"sign\":\"TS355N0QjK1r9GyD4YOsG5esszSUhESgwu1q5"
                              + "+e1sWwqtPYe30CQ3v0QTEDdxYN9vm2No8V1KzuTSadrA4SZSkEkRchrcdVHCU8rCXOHWzS5wof8jg5S75y481kj3HqlpTaz"
                              + "/EhvAXK8iC8Xz9CgPmvfLmAUNkxy0q05yV2wZAGNX0WElUOx1Lcd2FqeuRFMvBOq5TQ+SVqunfUMLic8rYsW"
                              + "+smDHzIgjRcde8pHOZBMvmqDDzmyBLEgSbBswgHifQPDrhnGPlpk2U/nb8Sx7G8mWHEibtb8ClENcxtJEwcI0NN+erWO4Le"
                              + "+jFVUOU0BqC4dxGBNX9AHCTZMEhfcZQ==\"}";

            SignSourceData signSourceData = AlipaySignature.ExtractSignContent(response, 32);

            Assert.AreEqual(signSourceData.SourceData, "{\"code\":\"10000\",\"msg\":\"Success\",\"nested\":{\"a\":1,\"b\":\"2\","
                            + "\"array\":[\"1\",\"2\",\"3\"]},\"out_trade_no\":\"20150320010101001\",\"trade_no\":\"2019062322001446881000041395\"}");
        }
Exemplo n.º 2
0
        public void should_extract_correct_sign_content_when_response_encrypted_and_with_blank_space()
        {
            string response = "{\"alipay_trade_create_response"
                              + "\"      :      \"eyJjb2RlIjoiMTAwMDAiLCJtc2ciOiJTdWNjZXNzIiwib3V0X3RyYWRlX25vIjoiMjAxNTAzMjAwMTAxMDEwMDEiLCJ0"
                              + "cmFkZV9ubyI6IjIwMTkwNjIzMjIwMDE0NDY4ODEwMDAwNDEzOTUifQ==\","
                              + "\"sign\":\"TS355N0QjK1r9GyD4YOsG5esszSUhESgwu1q5"
                              + "+e1sWwqtPYe30CQ3v0QTEDdxYN9vm2No8V1KzuTSadrA4SZSkEkRchrcdVHCU8rCXOHWzS5wof8jg5S75y481kj3HqlpTaz"
                              + "/EhvAXK8iC8Xz9CgPmvfLmAUNkxy0q05yV2wZAGNX0WElUOx1Lcd2FqeuRFMvBOq5TQ+SVqunfUMLic8rYsW"
                              + "+smDHzIgjRcde8pHOZBMvmqDDzmyBLEgSbBswgHifQPDrhnGPlpk2U/nb8Sx7G8mWHEibtb8ClENcxtJEwcI0NN+erWO4Le"
                              + "+jFVUOU0BqC4dxGBNX9AHCTZMEhfcZQ==\"}";

            SignSourceData signSourceData = AlipaySignature.ExtractSignContent(response, 32);

            Assert.AreEqual(signSourceData.SourceData, "\"eyJjb2RlIjoiMTAwMDAiLCJtc2ciOiJTdWNjZXNzIiwib3V0X3RyYWRlX25vIjoiMjAxNTAzMjAwMTAxMD"
                            + "EwMDEiLCJ0cmFkZV9ubyI6IjIwMTkwNjIzMjIwMDE0NDY4ODEwMDAwNDEzOTUifQ==\"");
        }
Exemplo n.º 3
0
        private static string ParseSignSourceData(string body, string rootNode, int indexOfRootNode)
        {
            int signDataStartIndex = indexOfRootNode + rootNode.Length + 2;
            int indexOfSign        = body.IndexOf("\"" + AlipayConstants.SIGN + "\"", StringComparison.Ordinal);

            if (indexOfSign < 0)
            {
                return(null);
            }
            SignSourceData signSourceData = AlipaySignature.ExtractSignContent(body, signDataStartIndex);

            //如果提取的待验签原始内容后还有rootNode
            if (body.LastIndexOf(rootNode, StringComparison.Ordinal) > signSourceData.EndIndex)
            {
                throw new AopException("检测到响应报文中有重复的" + rootNode + ",验签失败。");
            }

            return(signSourceData.SourceData);
        }