• 微信支付和支付宝的封装


    移动支付常用的是微信支付和支付宝支付,所以本篇之封装了这两种,银联用的较少,所以就没有封装进去.

    集成步骤这里就不在说了,我把微信支付和支付宝支付的文档放在这里自己去看: 微信支付官方文档    支付宝官方文档

    上代码:

    //单例
    + (instancetype)shareManager;
    
    //处理跳转url,回到应用,需要在delegate中实现
    - (BOOL)cdm_handleUrl:(NSURL *)handleUrl;
    
    //注册App,需要在 didFinishLaunchingWithOptions 中调用
    - (void)cdm_registerApp;
    /*
     * @param orderMessage 传入订单信息,如果是字符串,则对应是跳转支付宝支付;如果传入PayReq 对象,这跳转微信支付,注意,不能传入空字符串或者nil
     * @param callBack     回调,有返回状态信息
     */
    - (void)cdm_payOrderMessage:(id)orderMessage callBack:(CDMPayCompleteCallBack)callBack;

    AppDelegate处理回调

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        
        UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[[ViewController alloc] init]];
        
        self.window.rootViewController = nav;
        [[PayManager shareManager] cdm_registerApp];
        // Override point for customization after application launch.
        return YES;
    }
    
    
    /*
     *  最老的版本,最好也写上
     */
    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
        
        return [[PayManager shareManager] cdm_handleUrl:url];
    }
    /*
     *  iOS 9.0 之前 会调用
     */
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
        
        return [[PayManager shareManager] cdm_handleUrl:url];
    }
    
    /*
     *  iOS 9.0 以上(包括iOS9.0)
     */
    
    - (BOOL)application:(UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<NSString *,id> *)options{
        
        return [[PayManager shareManager] cdm_handleUrl:url];
    }

    调用:

    1.支付宝支付(数据用的是文档上面的数据):

     //支付宝文档数据.
        NSString *orderMessage = @"app_id=2015052600090779&biz_content=%7B%22timeout_express%22%3A%2230m%22%2C%22seller_id%22%3A%22%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22total_amount%22%3A%220.02%22%2C%22subject%22%3A%221%22%2C%22body%22%3A%22%E6%88%91%E6%98%AF%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE%22%2C%22out_trade_no%22%3A%22314VYGIAGG7ZOYY%22%7D&charset=utf-8&method=alipay.trade.app.pay&sign_type=RSA&timestamp=2016-08-15%2012%3A12%3A15&version=1.0&sign=MsbylYkCzlfYLy9PeRwUUIg9nZPeN9SfXPNavUCroGKR5Kqvx0nEnd3eRmKxJuthNUx4ERCXe552EV9PfwexqW%2B1wbKOdYtDIb4%2B7PL3Pc94RZL0zKaWcaY3tSL89%2FuAVUsQuFqEJdhIukuKygrXucvejOUgTCfoUdwTi7z%2BZzQ%3D";
        
        [[PayManager shareManager] cdm_payOrderMessage:orderMessage callBack:^(CDMPayStateCode stateCode, NSString *stateMsg) {
            
            NSLog(@"stateCode = %zd,stateMsg = %@",stateCode,stateMsg);
    
        }];

    2.微信支付(文档数据):

        PayReq* req = [[PayReq alloc] init];
        
        req.partnerId = @"10000100";
        req.prepayId= @"1101000000140415649af9fc314aa427";
        req.package = @"Sign=WXPay";
        req.nonceStr= @"a462b76e7436e98e0ed6e13c64b4fd1c";
        req.timeStamp= @"1397527777".intValue;
        req.sign= @"582282D72DD2B03AD892830965F428CB16E7A256";
        
        [[PayManager shareManager] cdm_payOrderMessage:req callBack:^(CDMPayStateCode stateCode, NSString *stateMsg) {
            
              NSLog(@"stateCode = %zd,stateMsg = %@",stateCode,stateMsg);
    
            
        }];

    Demo地址:https://github.com/domanc/PayManager.git

  • 相关阅读:
    【转】XP下安装IIS6.0的办法
    设计模式学习笔记十:单例模式(Singleton Pattern)
    linq学习笔记(2):DataContext
    设计模式学习笔记十二:桥接模式(Bridge Pattern)
    英文版c#数据结构
    linq学习笔记(3):Where
    一步步学习WCF(1):Hello
    linq学习笔记(5):Count/Sum/Min/Max/Avg
    [转]Asp.Net 面试题目收集
    从谷歌公司发现的十个至理名言
  • 原文地址:https://www.cnblogs.com/dianming/p/6635226.html
Copyright © 2020-2023  润新知