PayReq *request = [[PayReq alloc]init];
request.partnerId = WECHAT_MCH_ID;
request.prepayId = [responseObject objectForKey:@"prepay_id"];
request.package = @"Sign=WXPay";
request.openID = WECHAT_APP_ID;
request.nonceStr = [self md5:[NSString stringWithFormat:@"%d", arc4random() % 10000]];
request.timeStamp = [[NSString stringWithFormat:@"%.0f", [[NSDate date] timeIntervalSince1970]] integerValue];
//构造参数列表
NSMutableDictionary *params = [NSMutableDictionary dictionary];
[params setObject:WECHAT_APP_ID forKey:@"appid"];
[params setObject:request.nonceStr forKey:@"noncestr"];
[params setObject:request.package forKey:@"package"];
[params setObject:request.partnerId forKey:@"partnerid"];
[params setObject:request.prepayId forKey:@"prepayid"];
[params setObject:[NSString stringWithFormat:@"%.0f", [[NSDate date] timeIntervalSince1970]] forKey:@"timestamp"];
request.sign = [self createMd5Sign:params];
[WXApi sendReq:request];
+(NSString*) createMd5Sign:(NSMutableDictionary*)dict
{
NSMutableString *contentString =[NSMutableString string];
NSArray *keys = [dict allKeys];
//按字母顺序排序
NSArray *sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 compare:obj2 options:NSNumericSearch];
}];
//拼接字符串
for (NSString *categoryId in sortedArray) {
if ( ![[dict objectForKey:categoryId] isEqualToString:@""]
&& ![categoryId isEqualToString:@"sign"]
&& ![categoryId isEqualToString:@"key"]
)
{
[contentString appendFormat:@"%@=%@&", categoryId, [dict objectForKey:categoryId]];
}
}
//添加key字段
[contentString appendFormat:@"key=%@", WECHAT_APP_KEY];
//得到MD5 sign签名
NS_APPDebugLog(@" contentString : %@", contentString);
NSString *md5Sign =[self md5:contentString];
return md5Sign;
}
无法实现页面跳转,有知道什么原因的么
我也遇到一样的问题了了。 楼主解决了没啊~ 求经验
楼上您好,我的问题解决了,是因为这部分代码用到了c语言部分,在oc里面用到了c语言的文件后缀名要改为.mm后缀,我把这部分代码所在的文件名后缀改为.mm结尾之后就可以调用微信,也能支付和回调了,希望我的解答对你有所帮助。
代码看上去没问题,看看log吧,或者你是不是用ios9测试版?
楼主问题解决了吗?我现在也遇到了和你相同的问题,请指导啊,289566485,我qq,跪谢啊