微信支付 跳转只有一个确定按钮的坑

在团队后台统一下单生成预支付订单返回的数据中,我们在调起支付接口中能够用的就是那个随机字符串nonceStr,以及最重要的prepayid.

其他的调起支付接口需要的参数,都是我们自己弄的。

这里写图片描述

简单的一些配置流程按着官方文档一步一步进行就可以了。

这里写图片描述

来说说,这个跳转发生的坑在哪,
个人经验就是在自己生成sign的时候,那个拼接字符串出了问题。
首先这个字符串里不仅需要request需要的那几个参数,而且要在最前面加上appid。
其次,需要注意的就是,每一个字符串里的字段名都是小写,不要驼峰。
最后,最最关键的是,要拼接的key值,是商户平台上的key

这里写图片描述

就这样,基本就是没有问题了。

利用MD5对字符串加密

-(NSString *)createMD5:(NSString *)stringSignTemp {

    const char *signStr = [stringSignTemp UTF8String];
    unsigned char result[16];
    CC_MD5(signStr, strlen(signStr), result);
    return [NSString stringWithFormat:    @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",result[0], result[1], result[2], result[3],
           result[4], result[5], result[6], result[7],
           result[8], result[9], result[10], result[11],
           result[12], result[13], result[14], result[15]
           ];

}

生成时间戳

NSDate *date = [NSDate date];
    NSString *time = [NSString stringWithFormat:@"%ld",(long)[date timeIntervalSince1970]];
    UInt32 timeStamp = [time intValue];

声明签名需要的字符串:

//appid 微信开放平台的aped
//noncestr 是后台返回回来数据里的
//package 是固定值 @"Sign=WXPay"
//partnerid 是微信商户的ID
//prepayid  是后台返回回来的预支付订单号
//timestamp 时间戳,自己生成
//最后拼接的key 是微信商户平台的key值,一定要注意是商户平台的。
    NSString *stringA = [NSString stringWithFormat:@"appid=%@&noncestr=%@&package=%@&partnerid=%@&prepayid=%@&timestamp=%d",wechat_appid,nonceStr,request.package,request.partnerId,prepayid,request.timeStamp];
    NSString *key = wechat_key;
    NSString *stringSignTemp = [stringA stringByAppendingString:[NSString stringWithFormat:@"&key=%@",key]];

    request.sign = [[self createMD5:stringSignTemp] uppercaseString];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值