语言oc
微信支付签名失败,第一先确认商户号,商户秘钥,应用id是否有误.
主要出问题的位置是第二步:sign签名(微信签名说明)
ios版本sdk内传入参数是5个(不包含sign),但是在做sign的签名的时候要以api说明为准需要7个键值对(调起支付api),需要手动补全appid和key(商户秘钥)这两个字段的秘钥.拼接顺序也需要按照ASCII码顺序处理:
NSString *md5 =[NSString stringWithFormat:@"appid=应用id&noncestr=%@&package=%@&partnerid=商户id&prepayid=%@×tamp=%u&key=商户秘钥",resp.nonceStr,resp.package,resp.prepayId,(unsigned int)resp.timeStamp];
然后将字符串进行MD5加密处理并进行大写转换就OK了.
MD5处理:
+ (NSString *)backAppointforMD5:(NSString *)str
{
const char * charstr = [str UTF8String];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5(charstr, (CC_LONG)strlen(charstr), result);
NSMutableString *savestr = [NSMutableString string];
for (int i = 0; i<CC_MD5_DIGEST_LENGTH; i++)
{
[savestr appendFormat:@"%02x",result[i]];
}
return savestr;
}