最近在做微信支付

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章