之前做微信APP支付的时候,发现微信APP支付版本升级 -----> 申请支付能力成功之后,不再提供APP_KEY这个参数。 去网上找了找demo,发现并没有现成的可以拿来用,只好自己去看微信官方提供的API, 不得不说,这文档给的真的是烂~ 源码在https://github.com/dawnBefore/WeChatPayV3
一. 调用统一下单API
统一下单API(见下图),这里就是要把所有要传的参数POST到红线标的URL去,然后微信会返回给你XML格式的数据,其中就包括我们要拿的prepay_id
1. 拿到签名sign
// 发送给微信的XML格式
- (NSString *)genPackage:(NSMutableDictionary*)packageParams
{
NSString *sign;
NSMutableString *reqPars = [NSMutableString string];
// 生成签名
sign = [self genSign:packageParams];
// 生成xml格式的数据, 作为post给微信的数据
NSArray *keys = [packageParams allKeys];
[reqPars appendString:@"<xml>"];
for (NSString *categoryId in keys) {
[reqPars appendFormat:@"<%@>%@</%@>"
, categoryId, [packageParams objectForKey:categoryId],categoryId];
}
[reqPars appendFormat:@"<sign>%@</sign></xml>", sign];
return [NSString stringWithString:reqPars];
}
微信给出的必填的参数有十个(注意:sign这个参数是拿其他的参数通过微信的签名算法得到的,得到sign后加上其余的参数一起POST给上面的URL)
这里我是把其余的九个参数放在字典里,准备签名
NSMutableDictionary *packageParams = [NSMutableDictionary dictionary];