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閱讀 229,460評論 6 538
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,067評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,467評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,468評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,184評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,582評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,616評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,794評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,343評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,096評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,291評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,863評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,513評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,941評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,190評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,026評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,253評論 2 375

推薦閱讀更多精彩內容