问:如何将整个“购物车”转换为可以作为XML传输到我的服务器的东西?
此外,我要求客户为每个订单创建配置文件,但这将通过直接在Web上通过https连接启动UIWebview来完成。因此,设备上不会显示信用卡信息。
问)是什么最好的方式来链接网络上的个人资料和设备上的订单?
遇到此问题的人可以给我提示或链接吗?
由于
答案 0 :(得分:3)
使用ssl可以安全地发送数据。
将您的购物车转换为XML可以使用XML Framework / lib完成,但您仍然必须为此编写代码。例如touchXML:
TouchXML是轻量级替代品 对于Cocoa的NSXML *类集群。 它基于常用的 开源libxml2库。
Here是一个不错的教程。
来源已经移动了一点,可以找到here
对于你的第二个问题:这很棘手,可能会变成黑客。但是,如果您不想切换到基于API的方式登录/创建帐户,我会有这些想法。
使用带有webViewDidFinishLoad:
方法的UIWebViewDelegate协议检查webView的“结果”。 “结果”可以是:成功创建帐户或成功登录。
因此,您可以使用webview的NSURLRequest属性访问页面正文。或使用javascript:
使用类似的东西NSString *html = [webView stringByEvaluatingJavaScriptFromString: @"document.body.innerHTML"];
您将不得不进行解析以查找某些内容,例如您可以与订单连接以进行最终结帐的令牌。
您也可以首先在设备上生成一个唯一的订单字符串,并在最初发送它以登录/创建配置文件以稍微提高安全性并将其传回以进行检查。
答案 1 :(得分:2)
第一部分:创建一个代表购物车的字典。对于每个变量,添加一个键,其变量名称作为键,cart对象的值作为该键的对象。
第二部分:这是一个非常开放的问题:-)。这取决于你如何识别两端的用户;当然 将取决于您的安全要求。一种选择是要求您的用户在首次启动设备时通过网站登录,然后将他们的用户ID存储在特定设备上的应用程序上(最好以保密方式)。不要出于任何原因使用它,除了跟踪您想法在设备上的用户之外:在每次购买之前再次进行身份验证,或者查看或更改帐户详细信息等其他敏感操作。顺便说一句,根据您的订购系统的工作方式,您可能更喜欢(或Apple要求)实施应用内购买。这实际上会带来很大的复杂性,而苹果公司的处理费用为30%。
如果您对此类系统的安全问题有特定疑问,请在security.stackexchange.com(我是那里的 pro tem 主持人之一)上提问。< / p>
答案 2 :(得分:-2)
如果您将加密字符串发送到如下代码中的URL,则在ASPX页面(.NET示例)中处理它,或者您可以在服务器端使用其他语言。然后,为了安全起见,只需忽略任何未解密的内容(基本加密 - 解密未显示)
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL
URLWithString:@"http://myzuresite.azurewebsites.net/test3.aspx?bigstring=dgrbthymgk"]];
[request setHTTPMethod:@"POST"];
[NSURLConnection connectionWithRequest:request delegate:self];}
然后,在http://myazuresite.azurewebsites.net/test3.aspx页面中:
<%@ Page Language="C#"%>
<html>
<head>
<title>Query Strings in ASP.NET: Page 2</title>
<script language="C#" runat="server">
</script>
</head>
<body>
<%
// retrieves query string values
string bigstring = Page.Request.QueryString["bigstring"];
System.Data.SqlClient.SqlConnection sqlConnection1 =
new System.Data.SqlClient.SqlConnection("Data Source=myazuresite.database.windows.net;Initial Catalog=db_name;Integrated Security=False;Persist Security info=False;User ID=your_id;Password=your_Password”);
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "INSERT Scores (col1) VALUES (' "+name+" ')";
cmd.Connection = sqlConnection1;
sqlConnection1.Open();
cmd.ExecuteNonQuery();
sqlConnection1.Close();
%>
</body>
</html>
我在SQL Server中的插入触发器中处理解密,忽略坏URL,这是非常安全的。我在某种程度上使用包含时间的加密。