iOS集成微信支付各種坑收錄


  1. 統一下單的參數要拼接成XML格式,使用AFN請求時要對參數轉義,直接傳入字典給AFN無法識別(這個接口微信demo中並沒有提供示例)
       AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
        //這里傳入的xml字符串只是形似xml,但是不是正確是xml格式,需要使用af方法進行轉義
        manager.responseSerializer = [[AFHTTPResponseSerializer alloc] init];
        [manager.requestSerializer setValue:@"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
        [manager.requestSerializer setValue:@"https://api.mch.weixin.qq.com/pay/unifiedorder" forHTTPHeaderField:@"SOAPAction"];
        [manager.requestSerializer setQueryStringSerializationWithBlock:^NSString *(NSURLRequest *request, NSDictionary *parameters, NSError *__autoreleasing *error) {
            return xml;
        }];
  2. 解析統一下單會返回一個prepay_id字段,在調起支付接口中作為傳入參數。
    1. 注意統一下單返回的數據是XML格式的數據,並且使用了"<![CDATA[" 開始,由 "]]>"轉義,解析器會忽略CDATA中的數據,用常規方式無法解析。

          

          可以使用這個代理方法

         - (void)parser:(__unused NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock

          捕捉到xml中忽略的字符串,對忽悠字符進行解析。

   可參照此文demo

 

  1. 簽名最容易出錯,嚴格按照官方給出的簽名算法來,簽名后可以將結果拿到微信提供網頁上對比,和網頁生成的一致即可。(簽名錯誤的時候,會調轉到微信app出現一個“確認”按鈕,點擊后又跳回商戶app)
  2. "調起支付接口"官網提供的請求參數有7個,實際上只需要6個,不需要appid這個參數,但在簽名時,需要appid進行簽名。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM