1

我正在开发一个在 UIWebView 中运行的支付系统。用户在一个站点上填写表格,然后被带到支付网关以处理他们的卡信息。处理完付款后,用户将返回到第一个站点上的确认页面。

在普通浏览器甚至 Mobile Safari 中测试时,这些站点按预期工作。这些站点是黑匣子,我无法更改其中的任何内容。显然,这些站点使用相对 URL,并且出现我的问题是因为我的 UIWebView 正在尝试使用来自第一个域的基本 URL 加载第二个域上的页面。

例如,

  1. 来自http://theform.com/page的用户发布表单
  2. 用户被带到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 数据字符串的空白页面。我哪里错了?

4

0 回答 0