如果後端兩次簽名沒有問題,且參數沒有錯誤,正常的邏輯跳轉,挺容易的,就是我們註冊微信開發者賬號,且審覈的時候那叫一個慢啊!現在之後功能完成了,支付跳轉客戶端的已經寫好,只是後端還沒支付成功後數據刷新的接口,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” 注意大小寫