美文网首页iOS 开发每天分享优质文章
iOS开发(OC)——微信支付

iOS开发(OC)——微信支付

作者: 小七编程 | 来源:发表于2020-12-09 16:08 被阅读0次

    1、首先在微信开放平台上创建应用,并按照开放平台上的步骤把SDK接入,配置环境(这些步骤微信开放平台写的很清楚,下面我主要写一些开放平台没有,或者需要注意的地方)
    2、导入头文件#import "WXApi.h"(如果报错,则是缺少某些类库或者静态库和头文件路径没有设置好,请仔细查看并按照开放平台的步骤检查
    3、注册

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        [WXApi registerApp:@"此处是你在微信开放平台上创建的app的appid"];
    }
    

    4、iOS 8.0以下重写下面两个方法

    -(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
        if([url.scheme isEqualToString:@"此处是上面开放平台步骤中的URL scheme的值"]){
            return [WXApi handleOpenURL:url delegate:self];
        }
        return YES;
    }
    -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
        if([url.scheme isEqualToString:@"此处是上面开放平台步骤中的URL scheme的值"]){
            return [WXApi handleOpenURL:url delegate:self];
        }
        return YES;
    }
    

    5、iOS 9.0以上实现下面的方法(也就是说,如果app要兼容iOS 8.0以上,则步骤4的两个方法和这个方法都要实现)

    //iOS9.0以上使用
    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options {
        if ([url.scheme isEqualToString:@"URL scheme 的值"]) {
            return [WXApi handleOpenURL:url delegate:self];
        }
        return YES;
    }
    

    6、微信代理方法的实现

    //发起支付请求回调
    -(void)onReq:(BaseReq *)req{
        
    }
    //支付结果回调
    -(void)onResp:(BaseResp *)resp{
        if ([resp isKindOfClass:[PayResp class]]){
            PayResp *response = (PayResp*)resp;
            //response.errCode
    //        WXSuccess           = 0,    /**< 成功    */
    //        WXErrCodeCommon     = -1,   /**< 普通错误类型    */
    //        WXErrCodeUserCancel = -2,   /**< 用户点击取消并返回    */
    //        WXErrCodeSentFail   = -3,   /**< 发送失败    */
    //        WXErrCodeAuthDeny   = -4,   /**< 授权失败    */
    //        WXErrCodeUnsupport  = -5,   /**< 微信不支持    */
        }
    }
    

    7、发起支付

    //下面几个参数由后台返回,移动端不做处理
    PayReq *request = [[PayReq alloc] init];
    request.partnerId = sign[@"partnerid"];
    request.prepayId= sign[@"prepayid"];
    request.package = sign[@"package"];
    request.nonceStr= sign[@"noncestr"];
    request.timeStamp= [sign[@"timestamp"] intValue];
    request.sign= sign[@"sign"];
    [WXApi sendReq:request];
    

    注意:为了支付完成后能成功返回app,需要在info.plist文件中设置URL scheme,并且这个值是唯一的(最好填写bundel id 或者开放平台上的app ID),详细步骤在微信开放平台的接入文档有

    原文地址:https://blog.csdn.net/liumude123/article/details/82592129?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-11&spm=1001.2101.3001.4242

    相关文章

      网友评论

        本文标题:iOS开发(OC)——微信支付

        本文链接:https://www.haomeiwen.com/subject/aiphgktx.html