コード例 #1
0
        public string BuildQueryString(IMessage request, ProtocolMessage protocolMessage, ProtocolVersion protocolVersion)
        {
            var msg = new NameValueCollection();

            foreach (var field in protocolMessage.Required())
            {
                var propName = mapCols[field.CanonicalName()] ?? field.CanonicalName();
                var propInfo = typeof(DataObject).GetProperty(propName);

                msg.Add(field.CanonicalName(),
                    propName.Equals("VpsProtocol")
                        ? protocolVersion.VersionString()
                        : propInfo.GetValue(request, null).ToString());
            }

            if (protocolMessage.Optional() == null) return BuildQueryString(msg);

            foreach (var field in protocolMessage.Optional())
            {
                var propName = mapCols[field.CanonicalName()] ?? field.CanonicalName();
                var propInfo = typeof(DataObject).GetProperty(propName);

                msg.Add(field.CanonicalName(),
                    propName.Equals("VpsProtocol")
                        ? protocolVersion.VersionString()
                        : propInfo.GetValue(request, null).ToString());
            }

            return BuildQueryString(msg);
        }
コード例 #2
0
        public static NameValueCollection ConvertSagePayMessageToNameValueCollection(ProtocolMessage protocolMessage, Type type, IMessage message, ProtocolVersion protocolVersion)
        {
            var msg = new NameValueCollection();

            foreach (var field in protocolMessage.Required())
            {
                var propName = mapCols[field.CanonicalName()] ?? field.CanonicalName();
                var propInfo = message.GetType().GetProperty(propName);
                if (propName.Equals("VpsProtocol"))
                    msg.Add(field.CanonicalName(), protocolVersion.VersionString());
                else
                {
                    if (CheckSagePayProtocolVersion(type, propName, protocolVersion))
                        msg.Add(field.CanonicalName(), propInfo.GetValue(message, null).ToString());
                }
            }

            foreach (var field in protocolMessage.Optional())
            {
                var propName = mapCols[field.CanonicalName()] ?? field.CanonicalName();
                var propInfo = message.GetType().GetProperty(propName);
                if (propInfo.GetValue(message, null) == null) continue;

                if (CheckSagePayProtocolVersion(type, propName, protocolVersion))
                    msg.Add(field.CanonicalName(), propInfo.GetValue(message, null).ToString());
            }

            return msg;
        }