我正在开发一个在 UIWebView 中运行的支付系统。用户在一个站点上填写表格,然后被带到支付网关以处理他们的卡信息。处理完付款后,用户将返回到第一个站点上的确认页面。
在普通浏览器甚至 Mobile Safari 中测试时,这些站点按预期工作。这些站点是黑匣子,我无法更改其中的任何内容。显然,这些站点使用相对 URL,并且出现我的问题是因为我的 UIWebView 正在尝试使用来自第一个域的基本 URL 加载第二个域上的页面。
例如,
- 来自http://theform.com/page的用户发布表单
- 用户被带到http://theform.com/OrderCC.aspx?orderRef=e59d7f53a693472cad8a76dd8fb64
在第二步中,用户应该已经被带到http://thepaymentgateway.com/OrderCC.aspx ...
我正在尝试拦截对错误基本 URL 的请求,并将它们重新路由到正确的 URL,如下所示:
-(BOOL)webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest*)inRequest navigationType:(UIWebViewNavigationType)inType {
NSString *wrongURL = @"http://theform.com/OrderCC.aspx";
NSString *request = [[inRequest URL] absoluteString];
NSString *data = [[NSString alloc] initWithData:[inRequest HTTPBody] encoding:NSASCIIStringEncoding];
if ([request length] >= 33 && [[request substringWithRange:NSMakeRange(0, 33)] isEqualToString:wrongURL]) {
[webView loadData:[inRequest HTTPBody] MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://thepaymentgateway.com/OrderCC.aspx%@", [request substringFromIndex:33]]]];
return NO;
}
return YES;
}
运行后,我的 UIWebView 似乎只是显示一个包含 POST 数据字符串的空白页面。我哪里错了?