zoukankan      html  css  js  c++  java
  • 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进行签名。

  • 相关阅读:
    Chrome浏览器另存为时浏览器假死问题
    excel的新增日期快捷键Ctrl+;失效解决办法
    制作Visual Studio 2019 (VS 2019) 离线安装包
    Sysinternals Suite 工具包使用指南
    如何关闭Acrobat Reader DC自动更新
    MySql like模糊查询使用详解
    注册表删除我的电脑WPS云盘图标
    解除Word文档的限制编辑!
    IIS Ftp端口设置
    [UnityShader基础]12.坐标空间
  • 原文地址:https://www.cnblogs.com/heyode/p/5473963.html
Copyright © 2011-2022 走看看