• iOS]使用form-data的方式提交表单


    https://blog.csdn.net/wsyx768/article/details/103686724

    做内购支付时,后端需要验证订单支付状态,因为这个校验字符串非常长,所以使用form-data的方式提交表单。

    #pragma mark - 内购支付成功后确认

    - (void)netApplePayWithTran:(SKPaymentTransaction *)transaction OrderId:(NSString *)orderId {
    NSString *tranID = transaction.transactionIdentifier;
    [[XYStore defaultStore] base64Receipt:^(NSString *base64Data) {
    // base64Data = [GAPublicClass URLEncodedString:base64Data];
    NSMutableDictionary *parms = [NSMutableDictionary dictionary];
    [parms setObject:tranID forKey:@"transactionId"]; // 苹果内购交易ID
    [parms setObject:base64Data forKey:@"payload"]; // 校验体(base64字符串
    [parms setObject:orderId forKey:@"orderId"]; // 订单id
    [self validationPartPost:parms];
    } failure:^(NSError *error) {

    }];
    }

    - (void)validationPartPost:(NSDictionary *)dicData {
    NSString *POST_BOUNDS = @"yxqipayanzheng";
    NSString *tokenStr = [AccountTool sqLoginModel].token;

    NSURL *url = [NSURL URLWithString:[API_DOMAIN_COMMUNITY stringByAppendingString:url_apple_pay]];
    NSMutableString *bodyContent = [NSMutableString string];
    for(NSString *key in dicData.allKeys){
    id value = [dicData objectForKey:key];
    [bodyContent appendFormat:@"--%@ ",POST_BOUNDS];
    [bodyContent appendFormat:@"Content-Disposition: form-data; name="%@" ",key];
    [bodyContent appendFormat:@"%@ ",value];
    }
    [bodyContent appendFormat:@"--%@-- ",POST_BOUNDS];
    NSData *bodyData=[bodyContent dataUsingEncoding:NSUTF8StringEncoding];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30];
    [request addValue:[NSString stringWithFormat:@"multipart/form-data;boundary=%@",POST_BOUNDS] forHTTPHeaderField:@"Content-Type"];
    [request setValue:tokenStr forHTTPHeaderField:@"token"];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:bodyData];

    NSURLSession *session = [NSURLSession sharedSession];
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
    dispatch_async(dispatch_get_main_queue(), ^{
    [MBProgressHUD hideHUDForView:KWindow animated:YES];
    });
    NSDictionary *responseJSON = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
    NSInteger status = [responseJSON[@"status"] integerValue];
    if (status == 200) {

    }
    }];
    [task resume];
    }
    TO
    ————————————————
    版权声明:本文为CSDN博主「风浅月明」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/wsyx768/article/details/103686724

  • 相关阅读:
    Windows 08 R2_组策略
    Nginx常用配置实例(4)
    Nginx日常维护操作(3)
    Nginx配置文件(2)
    Nginx概述和安装(1)
    Zabbix实战-简易教程--通过公众平台企业号发送短信
    HDFS ZKFC自动切换原理分析
    HDFS ZKFC自动切换原理分析
    DataNode启动优化改进:磁盘检测并行化
    DataNode启动优化改进:磁盘检测并行化
  • 原文地址:https://www.cnblogs.com/itlover2013/p/14917914.html
Copyright © 2020-2023  润新知