如果后端两次签名没有问题,且参数没有错误,正常的逻辑跳转,挺容易的,就是我们注册微信开发者账号,且审核的时候那叫一个慢啊!现在之后功能完成了,支付跳转客户端的已经写好,只是后端还没支付成功后数据刷新的接口,so。。。又停住了,等这两天弄完了做下笔记,以免我又忘记了
……………………………..
在此记录是后端完成两次签名之后的
1.按照微信支付sdk的接入指南 搭建开发环境
2.PayModel.h 微信支付model
#import <Foundation/Foundation.h>
@interface PayModel : NSObject
@property (nonatomic, assign) NSInteger timestamp;
@property (nonatomic, copy) NSString *partnerid;
@property (nonatomic, copy) NSString *package;
@property (nonatomic, copy) NSString *noncestr;
@property (nonatomic, copy) NSString *sign;
@property (nonatomic, copy) NSString *appid;
@property (nonatomic, copy) NSString *prepayid;
@end
3.封装微信支付 WXApiRequestHandler
+ (void)jumpToBizPayItem:(NSString *)serviceItme prame:(NSDictionary *)parme{
// AFNTool 二次封装的AFNetworking 的网络请求方法,URL_WXPay 微信支付创建订单接口
// serviceItme 服务id
// parme 服务数据
[AFNTool post:[NSString stringWithFormat:@"%@%@",URL_WXPay,serviceItme] params:parme success:^(id json) {
if ([json[@"code"] isEqual:@0]) {
NSLog(@"-----===%@====weixi%@",json,[WXApi getApiVersion]);
if ([WXApi isWXAppInstalled]) {
if ([WXApi isWXAppSupportApi]) {
NSDictionary *info=json[@"info"];
if (info&&![info isKindOfClass:[NSNull class]]) {
if (info[@"wechatpay_sdk_param"]) {
// wechatpay_sdk_param 两次签名后从微信服务器拿回的数据
WXPayModel *payModel=[WXPayModel mj_objectWithKeyValues:info[@"wechatpay_sdk_param"]];
PayReq *wxrep=[[PayReq alloc]init];
wxrep.openID=payModel.appid;
wxrep.partnerId=payModel.partnerid;
wxrep.prepayId=payModel.prepayid;
wxrep.timeStamp=(unsigned int)payModel.timestamp;
wxrep.nonceStr=payModel.noncestr;
wxrep.package=payModel.package;
wxrep.sign=payModel.sign;
[WXApi sendReq:wxrep];
NSLog(@"appid=%@\npartid=%@\nprepayid=%@\nnoncestr=%@\ntimestamp=%ld\npackage=%@\nsign=%@",payModel.appid,wxrep.partnerId,wxrep.prepayId,wxrep.nonceStr,(long)wxrep.timeStamp,wxrep.package,wxrep.sign );
}
}
}else{
NSLog(@"当前微信版本不支持");
}
}else{
NSLog(@"未安装微信");
}
}
} failure:^(NSError *error) {
}];
}
总结:前端代码一开始就写好,但是在最开始我们就遇到了问题,拿到了相关数据调不起微信
通知了后端,后端小哥给力的修改了,可以调起微信了,但是效果如下,只有一个白色的确定按钮
原因:package在安卓前端是关键字,后端更改未package_ 造成读取不到造成,明确的是说后端返回参数不准确造成
此外还参考了 网友的经验
逐个检查,另外值得注意的是
3、package = @”Sign=WXPay” 注意大小写