YBRechargeVC.m 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444
  1. //
  2. // YBRechargeVC.m
  3. // YBVideo
  4. //
  5. // Created by YB007 on 2019/11/20.
  6. // Copyright © 2019 cat. All rights reserved.
  7. //
  8. #import "YBRechargeVC.h"
  9. #import "PubH5.h"
  10. #import "YBRechargeType.h"
  11. @interface YBRechargeVC (){
  12. UILabel *coinL;
  13. UIImageView *headerImgV;
  14. NSDictionary *subDic;
  15. NSArray *allArray;
  16. UIScrollView *backScroll;
  17. NSMutableArray *payTypeArray;
  18. NSMutableArray *coinArray;
  19. NSString *payTypeID;
  20. BOOL isCreatUI;
  21. NSDictionary *payTypeSelDic;
  22. }
  23. @property(nonatomic,strong)NSDictionary *seleDic;//选中的钻石字典
  24. //支付宝
  25. @property(nonatomic,copy)NSString *aliapp_key_ios;
  26. @property(nonatomic,copy)NSString *aliapp_partner;
  27. @property(nonatomic,copy)NSString *aliapp_seller_id;
  28. //微信
  29. @property(nonatomic,copy)NSString *wx_appid;
  30. @end
  31. @implementation YBRechargeVC
  32. - (void)viewWillAppear:(BOOL)animated{
  33. [self requestData];
  34. }
  35. - (void)clickNaviLeftBtn {
  36. [super clickNaviLeftBtn];
  37. [[YBRechargeType chargeManeger]removePayNotice];
  38. [[NSNotificationCenter defaultCenter]removeObserver:self];
  39. }
  40. -(void)dealloc {
  41. [[YBRechargeType chargeManeger]removePayNotice];
  42. [[NSNotificationCenter defaultCenter]removeObserver:self];
  43. }
  44. -(void)clickNaviRightBtn
  45. {
  46. NSString *url =[NSString stringWithFormat:@"%@/appapi/charge/index",h5url];
  47. PubH5 *VC = [[PubH5 alloc]init];
  48. VC.url =[h5url stringByAppendingString:[NSString stringWithFormat:@"/appapi/charge/index?uid=%@&token=%@",[Config getOwnID],[Config getOwnToken]]];
  49. [[YBBaseAppDelegate sharedAppDelegate] pushViewController:VC animated:YES];
  50. }
  51. -(void)appactive {
  52. [self requestData];
  53. }
  54. - (void)viewDidLoad {
  55. [super viewDidLoad];
  56. //支付监听
  57. [[YBRechargeType chargeManeger]addPayNotice];
  58. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appactive) name:UIApplicationDidBecomeActiveNotification object:nil];
  59. self.titleL.text = YZMsg(@"我的钱包");
  60. self.rightBtn.hidden = NO;
  61. [self.rightBtn setImage:[UIImage imageNamed:@"recharge_明细"] forState:0];
  62. payTypeArray = [NSMutableArray array];
  63. coinArray = [NSMutableArray array];
  64. backScroll = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 64+statusbarHeight, _window_width, _window_height-64-statusbarHeight-60-ShowDiff)];
  65. [self.view addSubview:backScroll];
  66. backScroll.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
  67. [self requestData];
  68. }];
  69. headerImgV = [[UIImageView alloc]initWithFrame:CGRectMake(15, 10, _window_width-30, (_window_width-30)*0.38)];
  70. headerImgV.userInteractionEnabled = YES;
  71. headerImgV.image = [UIImage imageNamed:@"recharge_背景"];
  72. [backScroll addSubview:headerImgV];
  73. UILabel *labelll = [[UILabel alloc]init];
  74. labelll.textColor = [UIColor whiteColor];
  75. labelll.font = SYS_Font(12);
  76. labelll.text = [NSString stringWithFormat:@"%@%@",YZMsg(@"我的"),[common name_coin]];
  77. [headerImgV addSubview:labelll];
  78. [labelll mas_makeConstraints:^(MASConstraintMaker *make) {
  79. make.centerX.equalTo(headerImgV);
  80. make.centerY.equalTo(headerImgV).multipliedBy(0.65);
  81. }];
  82. coinL = [[UILabel alloc]init];
  83. coinL.textColor = [UIColor whiteColor];
  84. coinL.font = [UIFont boldSystemFontOfSize:28];
  85. coinL.text = @"0";
  86. [headerImgV addSubview:coinL];
  87. [coinL mas_makeConstraints:^(MASConstraintMaker *make) {
  88. make.centerX.equalTo(headerImgV);
  89. make.centerY.equalTo(headerImgV).multipliedBy(1.11);
  90. }];
  91. YBButton *youngBtn = [PublicObj youngAlertBtn];
  92. [self.view addSubview:youngBtn];
  93. [youngBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  94. make.centerX.equalTo(backScroll);
  95. make.top.equalTo(backScroll.mas_bottom).offset(10);
  96. }];
  97. NSString *xieyiStr = YZMsg(@"《用户充值协议》");
  98. UILabel *label = [[UILabel alloc] init];
  99. label.text = [NSString stringWithFormat:@"%@%@",YZMsg(@"已阅读并同意"),xieyiStr];
  100. label.textColor = RGB_COLOR(@"#646464", 1);
  101. label.textAlignment = NSTextAlignmentCenter;
  102. label.font = [UIFont systemFontOfSize:13];
  103. [self.view addSubview:label];
  104. [label mas_makeConstraints:^(MASConstraintMaker *make) {
  105. make.centerX.equalTo(backScroll);
  106. make.top.equalTo(youngBtn.mas_bottom).offset(5);
  107. }];
  108. NSRange range = [label.text rangeOfString:xieyiStr];
  109. NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:label.text];
  110. [str addAttribute:NSForegroundColorAttributeName value:Pink_Cor range:range];
  111. label.attributedText = str;
  112. label.userInteractionEnabled = YES;
  113. UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(eula)];
  114. [label addGestureRecognizer:tap];
  115. }
  116. - (void)requestData{
  117. [YBNetworking postWithUrl:@"User.getBalance" Dic:@{@"type":@"1",@"version_ios":[PublicObj getAppBuild]} Suc:^(int code, id info, NSString *msg) {
  118. [backScroll.mj_header endRefreshing];
  119. if (code == 0) {
  120. NSDictionary *infoDic = [info firstObject];
  121. coinL.text = minstr([infoDic valueForKey:@"coin"]);
  122. [Config saveUserCoin:minstr([infoDic valueForKey:@"coin"])];
  123. if (self.block) {
  124. self.block(minstr([infoDic valueForKey:@"coin"]));
  125. }
  126. if (allArray.count == 0) {
  127. _aliapp_key_ios = [infoDic valueForKey:@"aliapp_key_ios"]?[infoDic valueForKey:@"aliapp_key_ios"]:minstr([infoDic valueForKey:@"aliapp_key"]);
  128. _aliapp_partner = minstr([infoDic valueForKey:@"aliapp_partner"]);
  129. _aliapp_seller_id = minstr([infoDic valueForKey:@"aliapp_seller_id"]);
  130. //微信的信息
  131. _wx_appid = [infoDic valueForKey:@"wx_appid"];
  132. NSArray *ssssss = [infoDic valueForKey:@"paylist"];
  133. NSArray *rulesA = [infoDic valueForKey:@"rules"];
  134. if ([PublicObj isUp]) {
  135. /// 充值规则中可能包含充值优惠,上架期间剔除
  136. NSMutableArray *m_a = [NSMutableArray array];
  137. for (NSDictionary *subDic in rulesA) {
  138. int r_m = [minstr([subDic valueForKey:@"money"]) intValue];
  139. if (r_m > 6) {
  140. [m_a addObject:subDic];
  141. }
  142. }
  143. rulesA = [NSArray arrayWithArray:m_a];
  144. }
  145. if (ssssss.count > 0) {
  146. allArray = @[ssssss,rulesA];
  147. if (!isCreatUI) {
  148. [self creatUI];
  149. }
  150. }
  151. }
  152. }
  153. } Fail:^(id fail) {
  154. [backScroll.mj_header endRefreshing];
  155. }];
  156. }
  157. - (void)creatUI{
  158. isCreatUI = YES;
  159. CGFloat btnWidth;
  160. CGFloat btnHeight;
  161. CGFloat btnSH = 0.0;
  162. if (IS_IPHONE_5) {
  163. btnWidth = 90;
  164. btnHeight = 41;
  165. btnSH = 49;
  166. }else{
  167. btnWidth = 110;
  168. btnHeight = 50;
  169. btnSH = 60;
  170. }
  171. CGFloat speace = (_window_width-30-btnWidth*3)/2;
  172. CGFloat y = headerImgV.bottom + 20;
  173. for (int i = 0; i < allArray.count; i++) {
  174. UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(15, y, 300, 20)];
  175. label.font = SYS_Font(12);
  176. label.textColor = RGB_COLOR(@"#ffffff", 0.6);
  177. NSArray *array = allArray[i];
  178. [backScroll addSubview:label];
  179. if (i == 0) {
  180. if (array.count == 0) {
  181. payTypeID = @"";
  182. continue;
  183. }
  184. if (array.count == 1 && [minstr([array[0] valueForKey:@"id"]) isEqual:@"apple"]) {
  185. payTypeID = @"apple";
  186. continue;
  187. }
  188. label.text = YZMsg(@"请选择支付方式");
  189. YBButton *youngBtn = [PublicObj youngAlertBtn];
  190. [backScroll addSubview:youngBtn];
  191. [youngBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  192. make.height.centerY.equalTo(label);
  193. make.right.equalTo(self.view.mas_right).offset(-15);
  194. }];
  195. for (int j = 0; j < array.count; j++) {
  196. UIButton *btn = [UIButton buttonWithType:0];
  197. btn.backgroundColor = CellRow_Cor;
  198. btn.frame = CGRectMake(15+j%3 * (btnWidth+speace), label.bottom+10+(j/3)*(btnHeight + 30), btnWidth, btnHeight);
  199. [btn addTarget:self action:@selector(payTypeBtnClick:) forControlEvents:UIControlEventTouchUpInside];
  200. [btn setBackgroundImage:[UIImage imageNamed:@""] forState:0];
  201. [btn setBackgroundImage:[UIImage imageNamed:@"recharge_sel"] forState:UIControlStateSelected];
  202. [backScroll addSubview:btn];
  203. if (j == 0) {
  204. btn.selected = YES;
  205. payTypeID = minstr([array[j] valueForKey:@"id"]);
  206. }
  207. btn.tag = 1000+j;
  208. UILabel *titleL = [[UILabel alloc]init];
  209. titleL.font = SYS_Font(13);
  210. titleL.textColor = RGB_COLOR(@"#ffffff", 1);
  211. titleL.text = minstr([array[j] valueForKey:@"name"]);
  212. titleL.adjustsFontSizeToFitWidth = YES;
  213. [btn addSubview:titleL];
  214. [titleL mas_makeConstraints:^(MASConstraintMaker *make) {
  215. make.centerY.equalTo(btn);
  216. make.width.lessThanOrEqualTo(btn.mas_width).offset(-20);
  217. make.centerX.equalTo(btn).multipliedBy(1.21);
  218. }];
  219. UIImageView *imgV = [[UIImageView alloc]init];
  220. [imgV sd_setImageWithURL:[NSURL URLWithString:minstr([array[j] valueForKey:@"thumb"])]];
  221. [btn addSubview:imgV];
  222. [imgV mas_makeConstraints:^(MASConstraintMaker *make) {
  223. make.centerY.equalTo(btn);
  224. make.height.width.mas_equalTo(16);
  225. make.right.equalTo(titleL.mas_left).offset(-5);
  226. }];
  227. [payTypeArray addObject:btn];
  228. if (j == array.count-1) {
  229. [backScroll layoutIfNeeded];
  230. y = btn.bottom + 20;
  231. }
  232. }
  233. }else{
  234. label.text = YZMsg(@"请选择充值金额");
  235. for (int j = 0; j < array.count; j++) {
  236. UIButton *btn = [UIButton buttonWithType:0];
  237. btn.backgroundColor = CellRow_Cor;
  238. btn.frame = CGRectMake(15+j%3 * (btnWidth+speace), label.bottom+10+(j/3)*(btnSH + 30), btnWidth, btnSH);
  239. [btn addTarget:self action:@selector(coinBtnClick:) forControlEvents:UIControlEventTouchUpInside];
  240. btn.clipsToBounds = NO;
  241. btn.layer.cornerRadius = 5;
  242. btn.layer.masksToBounds = YES;
  243. btn.layer.borderWidth = 1;
  244. btn.tag = 2000+j;
  245. [backScroll addSubview:btn];
  246. NSString *give = minstr([array[j] valueForKey:@"give"]);
  247. if (![give isEqual:@"0"]) {
  248. CGFloat widddth = [PublicObj sizeWithString:[NSString stringWithFormat:@"%@%@%@",YZMsg(@"赠送"),give,[common name_coin]] andFont:SYS_Font(10)].width;
  249. UIImageView *giveImgV = [[UIImageView alloc]initWithFrame:CGRectMake(btn.right-widddth-5, btn.top-7.5, widddth+10, 20)];
  250. giveImgV.image = [UIImage imageNamed:@"recharge_send"];
  251. [backScroll addSubview:giveImgV];
  252. UILabel *giveLabel = [[UILabel alloc]initWithFrame:CGRectMake(5, 0, widddth, 15)];
  253. giveLabel.text = [NSString stringWithFormat:@"%@%@%@",YZMsg(@"赠送"),give,[common name_coin]];
  254. giveLabel.font = SYS_Font(10);
  255. giveLabel.textColor = [UIColor whiteColor];
  256. [giveImgV addSubview:giveLabel];
  257. }
  258. // if (j == 0) {
  259. btn.layer.borderColor = [UIColor clearColor].CGColor;
  260. // }
  261. UILabel *titleL = [[UILabel alloc]init];
  262. titleL.font = SYS_Font(15);
  263. titleL.textColor = RGB_COLOR(@"#ffffff", 1);
  264. titleL.text = minstr([array[j] valueForKey:@"coin"]);
  265. if ([payTypeID isEqual:@"apple"]) {
  266. titleL.text = minstr([array[j] valueForKey:@"coin_ios"]);
  267. }
  268. titleL.tag = btn.tag + 3000;
  269. [btn addSubview:titleL];
  270. [titleL mas_makeConstraints:^(MASConstraintMaker *make) {
  271. make.centerY.equalTo(btn).multipliedBy(0.73);
  272. make.centerX.equalTo(btn);
  273. }];
  274. UIImageView *imgV = [[UIImageView alloc]init];
  275. imgV.image = [UIImage imageNamed:@"礼物-金币"];
  276. [btn addSubview:imgV];
  277. [imgV mas_makeConstraints:^(MASConstraintMaker *make) {
  278. make.centerY.equalTo(titleL);
  279. make.height.width.mas_equalTo(12);
  280. make.left.equalTo(titleL.mas_right).offset(5);
  281. }];
  282. UILabel *moneyL = [[UILabel alloc]init];
  283. moneyL.font = SYS_Font(12);
  284. moneyL.textColor = RGB_COLOR(@"#ffffff", 1);
  285. moneyL.tag = btn.tag +4000;
  286. moneyL.text = [NSString stringWithFormat:@"¥%@",minstr([array[j] valueForKey:@"money"])];
  287. [btn addSubview:moneyL];
  288. [moneyL mas_makeConstraints:^(MASConstraintMaker *make) {
  289. make.centerY.equalTo(btn).multipliedBy(1.3);
  290. make.centerX.equalTo(btn);
  291. }];
  292. [coinArray addObject:btn];
  293. if (j == array.count-1) {
  294. [backScroll layoutIfNeeded];
  295. y = btn.bottom + 20;
  296. }
  297. }
  298. }
  299. }
  300. CGFloat bottomLY;
  301. if (y > backScroll.height - 40 -ShowDiff) {
  302. bottomLY = y + 40;
  303. }else{
  304. bottomLY = backScroll.height - 40 -ShowDiff;
  305. }
  306. backScroll.contentSize = CGSizeMake(0, bottomLY);
  307. }
  308. - (void)payTypeBtnClick:(UIButton *)sender{
  309. if (sender.selected) {
  310. return;
  311. }
  312. for (UIButton *btn in payTypeArray) {
  313. if (btn == sender) {
  314. btn.selected = YES;
  315. }else{
  316. btn.selected = NO;
  317. }
  318. }
  319. NSArray *typearr = allArray[0];
  320. payTypeSelDic = typearr[sender.tag - 1000];
  321. payTypeID = minstr([payTypeSelDic valueForKey:@"id"]);
  322. for (int i = 0; i < coinArray.count; i++) {
  323. UIButton *btn = coinArray[i];
  324. UILabel *label = (UILabel *)[btn viewWithTag:btn.tag+3000];
  325. UILabel *moneyLb = (UILabel *)[btn viewWithTag:btn.tag+4000];
  326. if ([payTypeID isEqual:@"apple"]) {
  327. label.text = minstr([allArray[1][i] valueForKey:@"coin_ios"]);
  328. moneyLb.text =[NSString stringWithFormat:@"¥%@",minstr([allArray[1][i] valueForKey:@"money"])];
  329. }else if ([payTypeID isEqual:@"paypal"]){
  330. label.text = minstr([allArray[1][i] valueForKey:@"coin_paypal"]);
  331. moneyLb.text =[NSString stringWithFormat:@"$%@",minstr([allArray[1][i] valueForKey:@"money"])];
  332. }else{
  333. label.text = minstr([allArray[1][i] valueForKey:@"coin"]);
  334. moneyLb.text =[NSString stringWithFormat:@"¥%@",minstr([allArray[1][i] valueForKey:@"money"])];
  335. }
  336. }
  337. }
  338. - (void)coinBtnClick:(UIButton *)sender{
  339. for (UIButton *btn in coinArray) {
  340. if (btn == sender) {
  341. //btn.layer.borderColor = Pink_Cor.CGColor;
  342. [btn setBackgroundImage:[UIImage imageNamed:@"充值-金币"] forState:0];
  343. }else{
  344. //btn.layer.borderColor = UIColor.clearColor.CGColor;
  345. [btn setBackgroundImage:[UIImage imageNamed:@""] forState:0];
  346. }
  347. }
  348. _seleDic = allArray[1][sender.tag-2000];
  349. if (minstr([payTypeSelDic valueForKey:@"href"]).length > 6) {
  350. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:minstr([payTypeSelDic valueForKey:@"href"])]];
  351. }else{
  352. NSDictionary *payPostDic = @{@"chargeid":minstr([_seleDic valueForKey:@"id"]),
  353. @"coin":minstr([_seleDic valueForKey:@"coin"]),
  354. @"money":minstr([_seleDic valueForKey:@"money"]),//
  355. };
  356. YBWeakSelf;
  357. if ([payTypeID isEqual:@"ali"]) {
  358. [YBRechargeType chargeManeger].aliPayKey = _aliapp_key_ios;
  359. [YBRechargeType chargeManeger].aliPayPartner = _aliapp_partner;
  360. [YBRechargeType chargeManeger].aliPaySellerID = _aliapp_seller_id;
  361. [YBRechargeType chargeManeger].aliCallBackUrl = [h5url stringByAppendingString:@"/appapi/pay/notify_ali"];
  362. [[YBRechargeType chargeManeger]selAliPayUrl:@"Charge.getAliOrder" andParameter:payPostDic complete:^(int stateCode, int payType, NSString *msg) {
  363. dispatch_async(dispatch_get_main_queue(), ^{
  364. if (stateCode == 0) {
  365. [weakSelf requestData];
  366. }
  367. });
  368. }];
  369. }
  370. if ([payTypeID isEqual:@"wx"]) {
  371. [YBRechargeType chargeManeger].wechatAppID = _wx_appid;
  372. [[YBRechargeType chargeManeger]selWechatPayUrl:@"Charge.getWxOrder" andParameter:payPostDic complete:^(int stateCode, int payType, NSString *msg) {
  373. dispatch_async(dispatch_get_main_queue(), ^{
  374. if (stateCode == 0) {
  375. [weakSelf requestData];
  376. }
  377. });
  378. }];
  379. }
  380. if ([payTypeID isEqual:@"apple"]) {
  381. NSDictionary *iospayPostDic = @{@"chargeid":minstr([_seleDic valueForKey:@"id"]),
  382. @"coin":minstr([_seleDic valueForKey:@"coin_ios"]),
  383. @"money":minstr([_seleDic valueForKey:@"money"]),//
  384. };
  385. [YBRechargeType chargeManeger].productID = minstr([_seleDic valueForKey:@"product_id"]);
  386. [YBRechargeType chargeManeger].appleCallBackUrl = [h5url stringByAppendingFormat:@"/appapi/pay/notify_ios"];
  387. [[YBRechargeType chargeManeger]selApplePayUrl:@"Charge.getIosOrder" andParameter:iospayPostDic complete:^(int stateCode, int payType, NSString *msg) {
  388. dispatch_async(dispatch_get_main_queue(), ^{
  389. if (stateCode == 0) {
  390. [weakSelf requestData];
  391. }
  392. });
  393. }];
  394. }
  395. if ([payTypeID isEqual:@"paypal"]) {
  396. [[YBRechargeType chargeManeger]selPayPalAndPatameter:payPostDic rechargeType:rechargeType_coin complete:^(int stateCode, int payType, NSString *msg) {
  397. dispatch_async(dispatch_get_main_queue(), ^{
  398. if (stateCode == 0) {
  399. [weakSelf requestData];
  400. }
  401. });
  402. }];
  403. }
  404. }
  405. }
  406. - (void)eula{
  407. PubH5 *h5VC = [[PubH5 alloc]init];
  408. h5VC.url = [h5url stringByAppendingString:@"/portal/page/index?id=37"];
  409. [[YBBaseAppDelegate sharedAppDelegate]pushViewController:h5VC animated:YES];
  410. }
  411. @end