1

UIWebView で実行される支払いシステムに取り組んでいます。ユーザーが 1 つのサイトでフォームに入力すると、支払いゲートウェイに移動してカード情報を処理します。支払いが処理されると、ユーザーは最初のサイトの確認ページに戻ります。

通常のブラウザや Mobile Safari でテストした場合、サイトは期待どおりに動作します。サイトはブラック ボックスであり、内部を変更することはできません。どうやら、サイトは相対 URL を使用しており、UIWebView が最初のドメインのベース URL を使用して 2 番目のドメインにページをロードしようとしているために、問題が発生します。

例えば、

  1. ユーザーはhttp://theform.com/pageからフォームを投稿します
  2. ユーザーはhttp://theform.com/OrderCC.aspx?orderRef=e59d7f53a693472cad8a76dd8fb64に移動します

2 番目のステップでは、ユーザーは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