IOS 微信支付

思路:

具体实施步骤:

//向微信注册
- (BOOL) application: (UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions {
  [WXApi registerApp: @"你的appID" universalLink: @"服务器地址"];
}
  • 在需要微信支付的控件处 调起微信支付
- (void) weChatPay {
  [NSDictionary micDic = [NSDictionary alloc] init];
  [micDic setValue:useId forKey: @"userId"];
  
  [self.myViewModel appweChatpay: micDic requestResult:^(NSString * _Nonnull string, BOOL success) { //appweChatpay  支付接口
    if (success) {
      if (string != nil || string.length != 0) {
        NSRange range = [string rangeOfString: @"?"];
        NSString  *rightStr = [string substringFromIndex: range.location+1];
        NSArray *objArray = [rightStr componentsSeparatedByString: @"&"];
        [NSDictionary *paramDic = [NSDictionary alloc] init];
        for (int i=0; i<objArray.count; i++) {
          NSString *li = objArray[i];
          NSArray *key = [li componentsSeparatedByString: @"="];
          [paramDic setValue:key[1] forKey: key[0]];
        }
       PayReq *request = [[PayReq alloc] init];  //request的属性在PayReq中定义 key的值要和接口返回的值一致
       request.partnerId = [paramDic valueForKey:@"partnerId"];
       /** 预支付订单 从服务器获取 */
       request.prepayId = [paramDic valueForKey:@"prepayId"];
       /** 商家根据财付通文档填写的数据和签名 <暂填写固定值Sign=WXPay>*/
       request.package = [paramDic valueForKey:@"package"];
       /** 随机串,防重发 */
       request.nonceStr = [paramDic valueForKey:@"nonceStr"];
       /** 时间戳,防重发 */
       request.timeStamp = [paramDic valueForKey:@"timeStamp"];
       /** 商家根据微信开放平台文档对数据做的签名, 可从服务器获取,也可本地生成*/
       request.sign = [paramDic valueForKey:@"sign"];
       [WXApi sendReq: request completion: nil];
      }
    }
  }];
}
  • 成功调起接口之后 在AppDelegate.m中进行回调
//支付返回结果
- (void)onResp:(BaseResp *)resp {
  if ([resp isKindOfClass:[PayResp class]]) {
    PayResp *payresp = (PayResp *)resp;
    [[NSNotificationCenter defaultCenter]
    postNotificationName:wxpayResultNotification object:@{@"resp":payresp}];
  }
}
//进行支付回调
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
  return [WXApi handleOpenUrl: url delegate:self];
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近做了一个新项目,涉及到支付宝和微信支付,支付宝和微信都是业界的老大哥,相信大家都有所觉得文档、SDK都是各种坑...
    smile丽语阅读 2,444评论 2 19
  • 微信支付的流程 注册微信开放平台,创建应用获取appid,appSecret,申请支付功能,申请成功之后会返回一些...
    管家頗阅读 1,575评论 2 5
  • 1.为了读者能够更便利以及更针对性的学习这个微信SDK的使用过程,本人就建立一个普通的工程,直接在上面简易的使用微...
    麦兜兜买兜兜阅读 534评论 1 1
  • 微信支付流程:客户端发起支付请求--->后台和微信SDK交互之后返回带签名的客户端支付信息(之前带签名的支付信息是...
    博尔茨杰阅读 818评论 0 2
  • 恶心
    粒茗阅读 264评论 0 0