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:@"--%@\r\n",POST_BOUNDS];
[bodyContent appendFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n",key];
[bodyContent appendFormat:@"%@\r\n",value];
}
[bodyContent appendFormat:@"--%@--\r\n",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

posted @   itlover2013  阅读(389)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示