微信支付
支付验证签名失败
微信支付的时候参数传的都是后台返回的数据,安卓的能用而ios的就是提示【支付验证签名失败】,然后就是支付不能成功。
本人也经历了好长时间,我就先不做这里的。之后就下去查资料看官方文档也没有找到问题。突然在bing搜索中找到了结果代码如下:
/// 这是能支付成功的代码
- (void)wxPayWithDict:(NSDictionary *)dict {
PayReq *request = [[PayReq alloc] init];
request.partnerId = dict[@"busCoopId"];
request.prepayId = dict[@"prepayId"];
request.package = @"Sign=WXPay";
request.nonceStr = dict[@"nonceStr"];
UInt32 timeStamp = [dict[@"timeStamp"] intValue]; /// 注意这里
request.timeStamp = timeStamp;
request.sign = [dict[@"paySign"] uppercaseString];
[WXApi sendReq:request];
}
主要问题是:
/// 刚开始我是这样写的
request.timeStamp = dict[@"timeStamp"];
/// 也这样写过
request.timeStamp = (UInt32)dict[@"timeStamp"];
/// 都不对,不能这样转换
///正确写法是这样的
UInt32 timeStamp = [dict[@"timeStamp"] intValue];
request.timeStamp = timeStamp;