
出现这种原因一般都是后台拼接sign这个字段不对.
要么是拼接的顺序不对,要么就是大小写的问题
一般的顺序是:appid, noncestr, package, partnerid, prepayid, timestamp如果后台那边拼接有误,
客户端就需要自己来拼接.
1 #pragma mark --签名算法,获取签名 2 #define CC_MD5_DIGEST_LENGTH 16 3 - (NSString *)getSignWithPartnerId:(NSString *)partnerId 4 5 withPrepayId:(NSString *)prepayId 6 7 withNonceStr:(NSString *)nonceStr 8 9 withTimeStamp:(UInt32)timeStamp 10 11 withPackage:(NSString *)package 12 13 { 14 15 //拼接stringA 16 17 NSString *stringA = [NSStringstringWithFormat:@"appid=%@&noncestr=%@&package=%@&partnerid=%@&prepayid=%@×tamp=%d",@"替换为微信appid", nonceStr, package, partnerId, prepayId, timeStamp]; 18 19 //拼接API秘钥 20 21 NSString *stringSignTemp = [NSStringstringWithFormat:@"%@&key=%@", stringA,@"这里的key替换为微信商户平台中自己设置的key"]; 22 23 //MD5签名 24 25 NSString *sign = [self md5:stringSignTemp]; 26 27 //转换成大写字母 28 29 sign = [sign uppercaseString]; 30 31 return sign; 32 33 } 34 35 #pragma mark --MD5签名算法 36 37 - (NSString *) md5:(NSString *) str 38 39 { 40 41 const char *cStr = [strUTF8String]; 42 43 unsignedchar result[CC_MD5_DIGEST_LENGTH]; 44 45 CC_MD5(cStr, strlen(cStr), result);// This is the md5 call 46 47 return [NSStringstringWithFormat: 48 49 @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", 50 51 result[0], result[1], result[2], result[3], 52 53 result[4], result[5], result[6], result[7], 54 55 result[8], result[9], result[10], result[11], 56 57 result[12], result[13], result[14], result[15] 58 59 ]; 60 61 }
这样就可以了..
浙公网安备 33010602011771号