• iOS微信支付集成


    第一步、下载微信SDK

    https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319164&token=&lang=zh_CN

     

    第二步、.微信支付处理和友盟库冲突

    点击工程->Build Settings -> Library Search Paths 删除不引用的库 解决冲突

     

    第三步:使用:

      NSDictionary *dic = @{
                              @"payType":@"wxpay",
                              @"info":@{ @"package": @"Sign=WXPay",
                                         @"appid": @"wx190aa967a28b2ce9",
                                         @"sign": @"C869B2846125E850AF900407BDAE0296",
                                         @"partnerid": @"1485899712",
                                         @"prepayid": @"wx2017111616255525ce0d9da30274759227",
                                         @"noncestr": @"gJYC2FQyX8c5vgjy",
                                         @"timestamp": @"1510820708",}
                              };
            //微信支付
            NSDictionary *dict = payInfo[@"info"];
            HKPayService *p = [HKPayService sharedInstance];
            p.appId = dict[@"appid"];
            p.partnerId = dict[@"partnerid"];
            p.prepate_id = dict[@"prepayid"];
            p.nonceStr = dict[@"noncestr"];
            p.timeStamp = dict[@"timestamp"];
            p.sign = dict[@"sign"];
            [[HKPayTools sharedPay]payWithPayType:HKPayTypeWechat orderModel:nil];
    
    #pragma mark---------微信支付------
    -(void)weixinPay:(NSDictionary *)orderModel {
        /**
         1.用appid 和 商户号 初始化手柄;
         2.用手柄设置商户密钥
         3.提交预支付,获得prepape_id
         4.如果预支付id不为空,那么就吊起微信支付
         */
    //    payRequsestHandler *handle = [[payRequsestHandler alloc]init];
    //
    //    //用appid 和 商户号 初始化手柄;
    //    if ( [handle init:APP_id mch_id:MCH_id]) {
    //        NSLog(@"初始化成功");
    //    }
    //    //设置商户密钥
    //    [handle setKey:PARTNER_id];//用手柄设置商户密钥
    //    //提交预支付,获得prepape_id
    //    NSString *order_name =self.order[@"Title"] ;   //订单标题
    //    NSString *order_price = [NSString stringWithFormat:@"%.f",[self.order[@"Pay_money"]floatValue]];//@"1"; //测试价格 分为单位
    //
    //    NSString *nocify_URL = self.order[@"nocify_URL"];    //回调接口
    //    NSString *noncestr  = [NSString stringWithFormat:@"%d", rand()]; //随机串....8-16位
    //    NSString *orderno   = [NSString stringWithFormat:@"%@",self.order[@"Order_no"]];//订单号
    //    NSLog(@"订单号:%@",orderno);
    //    NSMutableDictionary *params = [@{@"appid":APP_id,
    //                                     @"mch_id":MCH_id,
    //                                     @"device_info":[[[UIDevice currentDevice] identifierForVendor] UUIDString],
    //                                     @"nonce_str":noncestr,
    //                                     @"trade_type":@"APP",
    //                                     @"body":order_name,
    //                                     @"notify_url":nocify_URL,
    //                                     @"out_trade_no":orderno,//商户订单号:这个必须用后台的订单号
    //                                     @"spbill_create_ip":@"8.8.8.8",
    //                                     @"total_fee":order_price}mutableCopy];
    //
    //    //提交预支付两次签名得到预支付订单的id(每次的请求得到的预支付订单id都不同)
    //    NSString *prepate_id = [handle sendPrepay:params];
    //    NSLog(@"%@",prepate_id);
        HKPayService *p = [HKPayService sharedInstance];
    //    //LgEJlpmuknCkrytWwx9jQehfpSTMg5KI
    //    //提交预订单成功
    //    //微信支付Key
    //    //p.weixinKey = PARTNER_ID;
        if (p.prepate_id && p.appId && p.partnerId) {
            //吊起微信支付
            
            PayReq *request = [[PayReq alloc]init];
            //商家id
            request.partnerId = p.partnerId;
            //订单id
            request.prepayId = p.prepate_id;
            //扩展字段(官方文档:暂时填写固定值)
            request.package = @"Sign=WXPay";
            //随机字符串
            request.nonceStr = p.nonceStr;
            //时间戳
            request.timeStamp = [p.timeStamp intValue];// (UInt32)[[NSDate date] timeIntervalSince1970];
            //sign参数(很经常出现的问题:就是调起支付到微信那边只出现一个确定按钮,单击确认按钮直接返回到app,出现这个问题100%是sign参数的问题)
            /*
             参数依次是: appid_key、partnerid_key、prepayid_key、固定值Sign=WXPay、预支付的随机数(跟上面得到预支付订单的随机数要一致)、支付时间(秒)
             */
            request.sign =  p.sign;// [self createMD5SingForPay:p.appId partnerid:p.partnerId prepayid:p.prepate_id package:@"Sign=WXPay" noncestr:p.nonceStr timestamp:request.timeStamp];
            //带起微信支付
            if ([WXApi sendReq:request]) {
                [[HKPayService sharedInstance]setAppNotify:YES];
                NSLog(@"微信app支付!");
            }else{
                //未安装微信客户端
                [XBAlertView showWithTitle:@"温馨提示" andMessage:@"您未安装微信,请选择其他方式支付" cancelTitle:@"知道了" cancelHandler:nil];
            }
        }
    }
  • 相关阅读:
    matlab软件-了解
    C# 自定义异常demo
    C#二进制对象copy
    asp.net 缓存依赖demo
    权限管理细粒度问题
    三层架构中的异常处理二
    如何解决复杂问题——结构化思维方式
    入职新公司如何熟悉项目
    专业工具使用与复杂大型项目设计管理
    十分钟学会 tmux
  • 原文地址:https://www.cnblogs.com/StevenHuSir/p/AppPay_WeiXinPay.html
Copyright © 2020-2023  润新知