最近在做微信支付

如果后端两次签名没有问题,且参数没有错误,正常的逻辑跳转,挺容易的,就是我们注册微信开发者账号,且审核的时候那叫一个慢啊!现在之后功能完成了,支付跳转客户端的已经写好,只是后端还没支付成功后数据刷新的接口,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” 注意大小写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值