IOS轻松搞定微信,支付宝充值,选择价格,选择支付类型

(1)先创建MoneySelectView 和 PaySelectView

.h文件内容

@interface KKMoneySelectView : UIView

@property(nonatomic,strong)UIButton  * button;

@property(nonatomic,copy)void(^selectBlock)(NSInteger flag);


.m文件内容

#import "KKMoneySelectView.h"

#import "UIColor+Factory.h"

@implementation KKMoneySelectView

-(instancetype)initWithFrame:(CGRect)frame{

    self=[super initWithFrame:frame];

    if (self) {

        [self createUI];

    }

    return self;

}

-(void)createUI{


    NSArray *MoneyArrr = @[@"19.99/月",@"49.99/季",@"99.99/年"];

    for (int index = 0; index < [MoneyArrr count];index ++) {

        self.button =[UIButton buttonWithType: UIButtonTypeCustom];

        self.button.frame = CGRectMake(15 + index *100, 10,90, self.frame.size.height-20);

        [self.button setTitle:MoneyArrr[index] forState:UIControlStateNormal];

        [self.button setBackgroundColor:[UIColor mainGrayColor]];

        [self.button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

        [self.button setTitleColor:[UIColor blackColor] forState:UIControlStateSelected];

        [self addSubview:self.button];

        [self.button.titleLabel setFont:[UIFont fontWithName:@"PingFangSC-Regular" size:15]];

        [self.button addTarget:self action:@selector(down:) forControlEvents:UIControlEventTouchUpInside];

        self.button.tag = index + 100;

        self.button.layer.borderWidth = 1;

        self.button.layer.cornerRadius = 10;

        self.button.layer.borderColor=[UIColor mainGrayColor].CGColor;

    }

}

/**

* 单选

*/

-(void)down:(UIButton *)bt{


    for (int index = 0 ; index < 3; index ++) {

        if (bt.tag== 100 + index) {

            bt.selected = YES;

            bt.layer.borderColor = [UIColorFromRGB(0x0fdcff)CGColor];

            bt.layer.borderWidth= 1;

            continue;

        }

        UIButton *btn=(UIButton*)[self viewWithTag:index + 100];

        btn.selected = NO;

        btn.layer.borderWidth = 1;

        btn.layer.borderColor=[UIColor mainGrayColor].CGColor;

        if (_selectBlock) {

            _selectBlock(index);

        }

    }


};

payview(同上)

.h文件内容

@property(nonatomic,strong)UIButton * button;

@property(nonatomic,copy)void(^selectBlock)(NSInteger flag);

.m文件内容

#import "KKPayView.h"

#import "UIColor+Factory.h"

@implementation KKPayView

-(instancetype)initWithFrame:(CGRect)frame{

    self=[super initWithFrame:frame];

    if (self) {

        [self createUI];

    }

    return self;

}

-(void)createUI{


    NSArray *MoneyArrr = @[@"vip_icon_weixin",@"vip_icon_zfb"];

    for (int index = 0; index < [MoneyArrr count];index ++) {

        self.button =[UIButton buttonWithType: UIButtonTypeCustom];

        self.button.frame = CGRectMake(15 + index *100, 10,90, self.frame.size.height-20);

        [self.button setImage:[UIImage imageNamed:MoneyArrr[index]] forState:UIControlStateNormal];

        [self addSubview:self.button];

        [self.button setBackgroundColor:[UIColor mainGrayColor]];

        [self.button addTarget:self action:@selector(down:) forControlEvents:UIControlEventTouchUpInside];

        self.button.tag = index + 100;

        self.button.layer.borderWidth = 1;

        self.button.layer.cornerRadius = 10;

        self.button.layer.borderColor=[UIColor mainGrayColor].CGColor;


    }

}

/**

* 单选

*/

-(void)down:(UIButton *)bt{


    for (int index = 0 ; index < 3; index ++) {

        if (bt.tag== 100 + index) {

            bt.selected = YES;

            bt.layer.borderColor = [UIColorFromRGB(0x0fdcff)CGColor];

            bt.layer.borderWidth= 1;

            continue;

        }

        UIButton *btn=(UIButton*)[self viewWithTag:index + 100];

        btn.selected = NO;

        btn.layer.borderWidth = 1;

        btn.layer.borderColor=[UIColor mainGrayColor].CGColor;

        if (_selectBlock) {

            _selectBlock(index);

        }

    }


}

(2)支付Model

.h文件内容

#import "WXApiObject.h"#import "WXApi.h"@interface KKPayModel : NSObject/*

* 支付宝支付

*/

+(void)AliyPayOrder:(NSString *)AliOrderStr AndPriceStr:(NSString *)pricestr;

/*

* 微信支付

*/

+(void)WechatpayOrder:(NSString *)WxOrderStr AndPriceStr:(NSString *)pricestr;

.m文件内容

#import "KKPayModel.h"#import "Order.h"#import "DataSigner.h"#import#import "WXApiObject.h"

#import "WXApi.h"

@implementation KKPayModel

+(void)AliyPayOrder:(NSString *)AliOrderStr AndPriceStr:(NSString *)pricestr{

    /*

    *点击获取prodcut实例并初始化订单信息

    */

    /*

    *商户的唯一的parnter和seller。

    *签约后,支付宝会为每个商户分配一个唯一的 parnter 和 seller。

    */

    /*============================================================================*/

    /*=======================需要填写商户app申请的===================================*/

    /*============================================================================*/

    NSString *partner = @"2088421837870096";

    NSString *seller = @"pay@XXXXX.com";

    NSString *privateKey = @"MIICXAIBAAKBgQCinHZRu/QRg8LpPEVCnjSXKSXsHyMUycOnxBp9VJXOK5pIR9md64R03PZ062jiAh+Qj8juUHxdjyl4gCof5FhFm/TP12A3EtB7498hBWyHNhq25SKtj2e/4CfOb7k7vyHZ72YEgRdjqkLrP5Hff0c4do0z6WIpy6aIgs9+XYPlIwIDAQABAoGAGzbENnmWJzg97nq/vJ5tfr7MMfAkFt6NeA5BwKffSlnRwDcGHH/F8yjntjmPnANu9OqbXgbqSV4kOp54bk3w17EriN5AwtxWEX4W5TsOFGqBcULLPFCIuwiL5ftcxoXZJOnuH2U3GVWd29vChnaD/IFxt2qFbOe/NysC0t6ReQECQQDQP2V5wz5VZCyL8+oqI/3vijmvh+x3hIu37IKB26RfFDvBP5AumlPgS0JA/pTG+JsqBHSDY88DMb9sDqUerReTAkEAx+YaZ9hS/vEfQhAbvGV9r138RS84sjD8HB6TRn7gsmgddHmEHa40RufBC091dKfMaeQ5C1GlucujUYZ0Ag1WMQJAVEWjcf/hxLqSEFy3oTAJfhtIttDhj4gy5k4ujhBtVxCgEdcAKOvJD5ZFDHo5iL9oQzukTttgFaHXHgpbJavUQwJACB3Ssqa47/sQXtlSlvqz+LvjM1fwgGO2yNmA91rNetD5aTJJ5/6bxslAMFpglYT+qsoGeuwsw3d+QSApc6/g8QJBAM7DTiGezb4gYzjSmdR/vm4KdQePVon6jY1qG1aPdWeJeWjJRkxEzcAYo9SKMGHqpeYIeZ4zapJbot09wVflwEc=";

    /*============================================================================*/

    /*============================================================================*/

    /*============================================================================*/

    //partner和seller获取失败,提示

    if ([partner length] == 0 ||

        [seller length] == 0 ||

        [privateKey length] == 0)

    {

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"

                                                        message:@"缺少partner或者seller或者私钥。"

                                                      delegate:self

                                              cancelButtonTitle:@"确定"

                                              otherButtonTitles:nil];

        [alert show];

        return;

    }


    /*

    *生成订单信息及签名

    */

    //将商品信息赋予AlixPayOrder的成员变量

    Order *order = [[Order alloc] init];

    order.partner = partner;

    order.seller = seller;

    order.tradeNO =@"20160324012412412"; //订单ID(由商家自行制定)

    order.productName =@"11"; //商品标题

    order.productDescription =@"这是我提现的钱"; //商品描述

    order.amount = [NSString stringWithFormat:@"%@",@"11"]; //商品价格

    order.notifyURL =  @"http://www.xxx.com"; //回调URL

    order.service = @"mobile.securitypay.pay";

    order.paymentType = @"1";

    order.inputCharset = @"utf-8";

    order.itBPay = @"30m";

    order.showUrl = @"m.alipay.com";


    //应用注册scheme,在AlixPayDemo-Info.plist定义URL types

    NSString *appScheme = @"AlipayType";


    [[AlipaySDK defaultService] payOrder:@"20160324012412412" fromScheme:appScheme callback:^(NSDictionary *resultDic) {


        NSLog(@"reslut = %@",resultDic);

    }];


}

-(void)jj{

}

- (NSString *)generateTradeNO

{

    static int kNumber = 15;


    NSString *sourceStr = @"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    NSMutableString *resultStr = [[NSMutableString alloc] init];

    srand(time(0));

    for (int i = 0; i < kNumber; i++)

    {

        unsigned index = rand() % [sourceStr length];

        NSString *oneStr = [sourceStr substringWithRange:NSMakeRange(index, 1)];

        [resultStr appendString:oneStr];

    }

    return resultStr;

}

+(void)WechatpayOrder:(NSString *)WxOrderStr AndPriceStr:(NSString *)pricestr{

    //日志输出

    //需要创建这个支付对象

    PayReq *req  = [[PayReq alloc] init];

    //由用户微信号和AppID组成的唯一标识,用于校验微信用户

    req.openID = @"wx1bf301b7c806001f";


    // 商家id,在注册的时候给的

    req.partnerId = @"10000100";


    // 预支付订单这个是后台跟微信服务器交互后,微信服务器传给你们服务器的,你们服务器再传给你

    req.prepayId  = @"wx20160218122935e3753eda1f0066087993";


    // 根据财付通文档填写的数据和签名

    //这个比较特殊,是固定的,只能是即req.package = Sign=WXPay

    req.package  = @"Sign=WXPay";


    // 随机编码,为了防止重复的,在后台生成

    req.nonceStr  = @"d1e6ecd5993ad2d06a9f50da607c971c";


    // 这个是时间戳,也是在后台生成的,为了验证支付的

    req.timeStamp = 1455769775;


    // 这个签名也是后台做的

    req.sign = @"F6DEE4ADD82217782919A1696500AF06";


    //发送请求到微信,等待微信返回onResp

    [WXApi sendReq:req];


}

@end

(3)在控制器中初始化(整体布局是个table)

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{

    static NSString * iden = @"iden";

    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:iden];

    if (cell == nil) {

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:iden];

        cell.selectionStyle =UITableViewCellSelectionStyleNone;

        __weak typeof (self)weakself = self;

        switch (indexPath.section) {

            case 0:{


                break;

            }

            case 1:{

                KKMoneySelectView * select = [[KKMoneySelectView alloc] initWithFrame:CGRectMake(0,

                                                                                                0,

                                                                                                self.view.frame.size.width,

                                                                                                self.view.frame.size.height / 9)];

                [cell.contentView addSubview:select];

                select.selectBlock = ^(NSInteger flag) {

                    switch (flag) {

                        case 0:{

                            weakself.priceStr = @"19.99";

                            break;

                        }

                        case 1:{

                            weakself.priceStr = @"49.99";

                            break;

                        }

                        case 2:{

                            weakself.priceStr = @"99.99";

                            break;

                        }

                        default:

                            break;

                    }

                };

                break;

            }

            case 2:{

                KKPayView * kkpay = [[KKPayView alloc] initWithFrame:CGRectMake(0,

                                                                                0,

                                                                                self.view.frame.size.width,

                                                                                self.view.frame.size.height / 9)];

                [cell.contentView addSubview:kkpay];

                kkpay.selectBlock = ^(NSInteger flag) {

                    switch (flag) {

                        case 0:{//微信

                            weakself.payType = @"1";

                            break;

                        }

                        case 1:{//支付宝

                            weakself.payType = @"2";

                            break;

                        }

                        default:

                            break;

                    }

                };

                break;

            }

            default:

                break;

        }

    }

    return cell;

}

支付按钮的click

-(void)payClick{

    /*

    * 支付宝支付

    */

    if ([_payType isEqualToString:@"1"]) {

        [KKPayModel AliyPayOrder:@"支付宝订单号" AndPriceStr:@"价格"];

    }

    /*

    * 微信支付

    */

    if ([_payType isEqualToString:@"2"]) {

        [KKPayModel WechatpayOrder:@"微信订单号" AndPriceStr:@"价格"];

    }


}


谢谢支持!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容