网银支付
2016-07-19 15:04
288 查看
导入第三方库:
UPPayPlugin文件
导入framework:
![](http://img.blog.csdn.net/20160719145945013?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
.h 文件
// Created by cjw on 16-05-12.
// Copyright (c) 2016年 cjw. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "UPPayPluginDelegate.h"
@interface ViewController :
UIViewController<UPPayPluginDelegate,
UIAlertViewDelegate,UITableViewDataSource,UITableViewDelegate,UITextFieldDelegate>
@property(nonatomic,
retain)UITableView *tableView;
@end
.m 文件
// Created by cjw on 16-05-12.
// Copyright (c) 2016年 cjw. All rights reserved.
//
#include <sys/socket.h>
// Per msqr
#include <sys/sysctl.h>
#include <net/if.h>
#include <net/if_dl.h>
#import "ViewController.h"
#import "UPPayPlugin.h"
#define KBtn_width 200
#define KBtn_height 80
#define KXOffSet (self.view.frame.size.width - KBtn_width) /
2
#define KYOffSet 80
#define kCellHeight_Normal 50
#define kCellHeight_Manual 145
#define kBtnFirstTitle @"获取订单,开始测试"
#define kWaiting @"正在获取TN,请稍后..."
#define kNote @"提示"
#define kConfirm @"确定"
#define kErrorNet @"网络错误"
#define kResult @"支付结果:%@"
#define kMode_Development @"01"
#define kURL_TN_Normal @"http://202.101.25.178:8080/sim/gettn"
#define kURL_TN_Configure @"http://202.101.25.178:8080/sim/app.jsp?user=123456789"
#define UPRelease(X) if (X !=nil) {[X release];X = nil;}
@interface
ViewController ()
{
UIAlertView* _alertView;
NSMutableData* _responseData;
CGFloat _maxWidth;
CGFloat _maxHeight;
UITextField *_urlField;
UITextField *_modeField;
UITextField *_curField;
}
@property(nonatomic,
copy)NSString *tnMode;
- (void)extendedLayout;
- (void)showAlertWait;
- (void)showAlertMessage:(NSString*)msg;
- (void)hideAlert;
- (void)startNetWithURL:(NSURL *)url;
- (UITextField *)textFieldWithFrame:(CGRect)frame placeHolder:(NSString
*)placeHolder;
- (void)buttonAction;
@end
@implementation ViewController
@synthesize contentTableView;
@synthesize tnMode;
- (void)viewDidLoad
{
[super
viewDidLoad];
self.view.backgroundColor = [UIColor
whiteColor];
self.title =
@"商户测试";
//判断手机系统
[self
extendedLayout];
//初始化tableview
self.tableView = ({
UITableView *tableView = [[UITableView
alloc] initWithFrame:CGRectMake(0,
0, _maxWidth,
_maxHeight)
style:UITableViewStyleGrouped];
tableView.delegate =
self;
tableView.dataSource =
self;
tableView;
});
[self.view
addSubview:self.contentTableView];
}
//判断手机系统
- (void)extendedLayout
{
BOOL iOS7 = [UIDevice
currentDevice].systemVersion.floatValue >=
7.0;
if (iOS7) {
self.edgesForExtendedLayout =
UIRectEdgeNone;
self.automaticallyAdjustsScrollViewInsets =
NO;
}
CGFloat offset = iOS7 ?
64 : 44;
_maxWidth =
CGRectGetWidth([UIScreen
mainScreen].bounds);
_maxHeight =
CGRectGetHeight([UIScreen
mainScreen].bounds)-offset;
self.navigationController.navigationBar.translucent
= NO;
}
//点击cell的时候就去网络请求数据
- (void)startNetWithURL:(NSURL *)url
{
[_curField
resignFirstResponder];
_curField =
nil;
[self
showAlertWait];
NSURLRequest * urlRequest=[NSURLRequest
requestWithURL:url];
NSURLConnection* urlConn = [[NSURLConnection
alloc] initWithRequest:urlRequest
delegate:self];
[urlConn start];
}
//用到的时候创建UITextField
- (UITextField *)textFieldWithFrame:(CGRect)frame placeHolder:(NSString
*)placeHolder
{
UITextField *textField = [[UITextField
alloc] initWithFrame:frame] ;
textField.placeholder = placeHolder;
textField.borderStyle =
UITextBorderStyleRoundedRect;
textField.backgroundColor = [UIColor
clearColor];
textField.delegate =
self;
return textField;
}
#pragma mark - Alert初始化
- (void)showAlertWait
{
[self
hideAlert];
_alertView = [[UIAlertView
alloc] initWithTitle:kWaiting
message:nil
delegate:self
cancelButtonTitle:nil
otherButtonTitles:
nil];
[_alertView
show];
UIActivityIndicatorView* aiv = [[UIActivityIndicatorView
alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
aiv.center =
CGPointMake(_alertView.frame.size.width
/ 2.0f - 15,
_alertView.frame.size.height
/ 2.0f + 10 );
[aiv startAnimating];
[_alertView
addSubview:aiv];
}
- (void)showAlertMessage:(NSString*)msg
{
[self
hideAlert];
_alertView = [[UIAlertView
alloc] initWithTitle:kNote
message:msg delegate:self
cancelButtonTitle:kConfirm
otherButtonTitles:nil,
nil];
[_alertView
show];
}
- (void)hideAlert
{
if (_alertView !=
nil)
{
[_alertView
dismissWithClickedButtonIndex:0
animated:NO];
_alertView =
nil;
}
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
_alertView =
nil;
}
#pragma mark - 网络请求
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse*)response
{
NSHTTPURLResponse* rsp = (NSHTTPURLResponse*)response;
//获取网络返回码
NSInteger code = [rsp
statusCode];
if (code !=
200)
{
[self
showAlertMessage:kErrorNet];
[connection cancel];
}
else
{
_responseData = [[NSMutableData
alloc] init];
}
}
//有数据的时候就接受数据
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData
*)data
{
[_responseData
appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
[self
hideAlert];
NSString* tn = [[NSMutableString
alloc] initWithData:_responseData
encoding:NSUTF8StringEncoding];
if (tn !=
nil && tn.length >
0)
{
NSLog(@"tn=%@",tn);
//请求成功:把TN传给 UPPayplugin
此处设置代理监听支付结果
[UPPayPlugin
startPay:tn mode:self.tnMode
viewController:self
delegate:self];
}
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError
*)error
{
[self
showAlertMessage:kErrorNet];
}
#pragma mark 监听支付结果
- (void)UPPayPluginResult:(NSString *)result
{
NSString* msg = [NSString
stringWithFormat:kResult, result];
[self
showAlertMessage:msg];
}
#pragma mark -
#pragma mark UITableView 代理方法
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
*)indexPath
{
switch (indexPath.row) {
case
0:
self.tnMode =
kMode_Development;
[self
startNetWithURL:[NSURL
URLWithString:kURL_TN_Normal]];
[tableView deselectRowAtIndexPath:indexPath
animated:YES];
break;
case
1:
self.tnMode =
kMode_Development;
[self
startNetWithURL:[NSURL
URLWithString:kURL_TN_Configure]];
[tableView deselectRowAtIndexPath:indexPath
animated:YES];
break;
case
2:
[tableView deselectRowAtIndexPath:indexPath
animated:NO];
break;
default:
break;
}
}
#pragma mark -
#pragma mark UITableView 数据源代理
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath
*)indexPath
{
return (indexPath.row ==
2) ?
kCellHeight_Manual : kCellHeight_Normal;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return
1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)sectionIndex
{
return
3;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath
{
UITableViewCell *cell = [[UITableViewCell
alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:nil];
switch (indexPath.row) {
case
0:
{
cell.accessoryType =
UITableViewCellAccessoryDisclosureIndicator;
cell.textLabel.text =
@"普通订单";
cell.detailTextLabel.text =
@"mode=01";
}
break;
case
1:
{
cell.accessoryType =
UITableViewCellAccessoryDisclosureIndicator;
cell.textLabel.text =
@"配置用户123456789";
cell.detailTextLabel.text =
@"mode=01";
}
break;
case
2:
{
//点击cell的时候去掉选中效果,
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
CGRect urlFrame =
CGRectMake(10,
10, CGRectGetWidth(tableView.frame)-20,
35);
_urlField = [self
textFieldWithFrame:urlFrame
placeHolder:@"获取TN地址"];
[cell.contentView
addSubview:_urlField];
CGRect modeFrame =
CGRectMake(10,
55, CGRectGetWidth(tableView.frame)-20,
35);
_modeField = [self
textFieldWithFrame:modeFrame
placeHolder:@"mode"];
[cell.contentView
addSubview:_modeField];
CGRect btnFrame =
CGRectMake(50,
100, CGRectGetWidth(tableView.frame)-100,
35);
UIButton *button = [UIButton
buttonWithType:UIButtonTypeRoundedRect];
button.frame = btnFrame;
[button addTarget:self
action:@selector(buttonAction)
forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"开
始
支
付"
forState:UIControlStateNormal];
[cell.contentView
addSubview:button];
}
break;
default:
break;
}
return cell;
}
- (void)buttonAction
{
self.tnMode =
_modeField.text;
[self
startNetWithURL:[NSURL
URLWithString:_urlField.text]];
}
#pragma mark UITextFieldDelegate
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
_curField = textField;
}
@end
UPPayPlugin文件
导入framework:
.h 文件
// Created by cjw on 16-05-12.
// Copyright (c) 2016年 cjw. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "UPPayPluginDelegate.h"
@interface ViewController :
UIViewController<UPPayPluginDelegate,
UIAlertViewDelegate,UITableViewDataSource,UITableViewDelegate,UITextFieldDelegate>
@property(nonatomic,
retain)UITableView *tableView;
@end
.m 文件
// Created by cjw on 16-05-12.
// Copyright (c) 2016年 cjw. All rights reserved.
//
#include <sys/socket.h>
// Per msqr
#include <sys/sysctl.h>
#include <net/if.h>
#include <net/if_dl.h>
#import "ViewController.h"
#import "UPPayPlugin.h"
#define KBtn_width 200
#define KBtn_height 80
#define KXOffSet (self.view.frame.size.width - KBtn_width) /
2
#define KYOffSet 80
#define kCellHeight_Normal 50
#define kCellHeight_Manual 145
#define kBtnFirstTitle @"获取订单,开始测试"
#define kWaiting @"正在获取TN,请稍后..."
#define kNote @"提示"
#define kConfirm @"确定"
#define kErrorNet @"网络错误"
#define kResult @"支付结果:%@"
#define kMode_Development @"01"
#define kURL_TN_Normal @"http://202.101.25.178:8080/sim/gettn"
#define kURL_TN_Configure @"http://202.101.25.178:8080/sim/app.jsp?user=123456789"
#define UPRelease(X) if (X !=nil) {[X release];X = nil;}
@interface
ViewController ()
{
UIAlertView* _alertView;
NSMutableData* _responseData;
CGFloat _maxWidth;
CGFloat _maxHeight;
UITextField *_urlField;
UITextField *_modeField;
UITextField *_curField;
}
@property(nonatomic,
copy)NSString *tnMode;
- (void)extendedLayout;
- (void)showAlertWait;
- (void)showAlertMessage:(NSString*)msg;
- (void)hideAlert;
- (void)startNetWithURL:(NSURL *)url;
- (UITextField *)textFieldWithFrame:(CGRect)frame placeHolder:(NSString
*)placeHolder;
- (void)buttonAction;
@end
@implementation ViewController
@synthesize contentTableView;
@synthesize tnMode;
- (void)viewDidLoad
{
[super
viewDidLoad];
self.view.backgroundColor = [UIColor
whiteColor];
self.title =
@"商户测试";
//判断手机系统
[self
extendedLayout];
//初始化tableview
self.tableView = ({
UITableView *tableView = [[UITableView
alloc] initWithFrame:CGRectMake(0,
0, _maxWidth,
_maxHeight)
style:UITableViewStyleGrouped];
tableView.delegate =
self;
tableView.dataSource =
self;
tableView;
});
[self.view
addSubview:self.contentTableView];
}
//判断手机系统
- (void)extendedLayout
{
BOOL iOS7 = [UIDevice
currentDevice].systemVersion.floatValue >=
7.0;
if (iOS7) {
self.edgesForExtendedLayout =
UIRectEdgeNone;
self.automaticallyAdjustsScrollViewInsets =
NO;
}
CGFloat offset = iOS7 ?
64 : 44;
_maxWidth =
CGRectGetWidth([UIScreen
mainScreen].bounds);
_maxHeight =
CGRectGetHeight([UIScreen
mainScreen].bounds)-offset;
self.navigationController.navigationBar.translucent
= NO;
}
//点击cell的时候就去网络请求数据
- (void)startNetWithURL:(NSURL *)url
{
[_curField
resignFirstResponder];
_curField =
nil;
[self
showAlertWait];
NSURLRequest * urlRequest=[NSURLRequest
requestWithURL:url];
NSURLConnection* urlConn = [[NSURLConnection
alloc] initWithRequest:urlRequest
delegate:self];
[urlConn start];
}
//用到的时候创建UITextField
- (UITextField *)textFieldWithFrame:(CGRect)frame placeHolder:(NSString
*)placeHolder
{
UITextField *textField = [[UITextField
alloc] initWithFrame:frame] ;
textField.placeholder = placeHolder;
textField.borderStyle =
UITextBorderStyleRoundedRect;
textField.backgroundColor = [UIColor
clearColor];
textField.delegate =
self;
return textField;
}
#pragma mark - Alert初始化
- (void)showAlertWait
{
[self
hideAlert];
_alertView = [[UIAlertView
alloc] initWithTitle:kWaiting
message:nil
delegate:self
cancelButtonTitle:nil
otherButtonTitles:
nil];
[_alertView
show];
UIActivityIndicatorView* aiv = [[UIActivityIndicatorView
alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
aiv.center =
CGPointMake(_alertView.frame.size.width
/ 2.0f - 15,
_alertView.frame.size.height
/ 2.0f + 10 );
[aiv startAnimating];
[_alertView
addSubview:aiv];
}
- (void)showAlertMessage:(NSString*)msg
{
[self
hideAlert];
_alertView = [[UIAlertView
alloc] initWithTitle:kNote
message:msg delegate:self
cancelButtonTitle:kConfirm
otherButtonTitles:nil,
nil];
[_alertView
show];
}
- (void)hideAlert
{
if (_alertView !=
nil)
{
[_alertView
dismissWithClickedButtonIndex:0
animated:NO];
_alertView =
nil;
}
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
_alertView =
nil;
}
#pragma mark - 网络请求
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse*)response
{
NSHTTPURLResponse* rsp = (NSHTTPURLResponse*)response;
//获取网络返回码
NSInteger code = [rsp
statusCode];
if (code !=
200)
{
[self
showAlertMessage:kErrorNet];
[connection cancel];
}
else
{
_responseData = [[NSMutableData
alloc] init];
}
}
//有数据的时候就接受数据
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData
*)data
{
[_responseData
appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
[self
hideAlert];
NSString* tn = [[NSMutableString
alloc] initWithData:_responseData
encoding:NSUTF8StringEncoding];
if (tn !=
nil && tn.length >
0)
{
NSLog(@"tn=%@",tn);
//请求成功:把TN传给 UPPayplugin
此处设置代理监听支付结果
[UPPayPlugin
startPay:tn mode:self.tnMode
viewController:self
delegate:self];
}
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError
*)error
{
[self
showAlertMessage:kErrorNet];
}
#pragma mark 监听支付结果
- (void)UPPayPluginResult:(NSString *)result
{
NSString* msg = [NSString
stringWithFormat:kResult, result];
[self
showAlertMessage:msg];
}
#pragma mark -
#pragma mark UITableView 代理方法
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath
*)indexPath
{
switch (indexPath.row) {
case
0:
self.tnMode =
kMode_Development;
[self
startNetWithURL:[NSURL
URLWithString:kURL_TN_Normal]];
[tableView deselectRowAtIndexPath:indexPath
animated:YES];
break;
case
1:
self.tnMode =
kMode_Development;
[self
startNetWithURL:[NSURL
URLWithString:kURL_TN_Configure]];
[tableView deselectRowAtIndexPath:indexPath
animated:YES];
break;
case
2:
[tableView deselectRowAtIndexPath:indexPath
animated:NO];
break;
default:
break;
}
}
#pragma mark -
#pragma mark UITableView 数据源代理
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath
*)indexPath
{
return (indexPath.row ==
2) ?
kCellHeight_Manual : kCellHeight_Normal;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return
1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)sectionIndex
{
return
3;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath
{
UITableViewCell *cell = [[UITableViewCell
alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:nil];
switch (indexPath.row) {
case
0:
{
cell.accessoryType =
UITableViewCellAccessoryDisclosureIndicator;
cell.textLabel.text =
@"普通订单";
cell.detailTextLabel.text =
@"mode=01";
}
break;
case
1:
{
cell.accessoryType =
UITableViewCellAccessoryDisclosureIndicator;
cell.textLabel.text =
@"配置用户123456789";
cell.detailTextLabel.text =
@"mode=01";
}
break;
case
2:
{
//点击cell的时候去掉选中效果,
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
CGRect urlFrame =
CGRectMake(10,
10, CGRectGetWidth(tableView.frame)-20,
35);
_urlField = [self
textFieldWithFrame:urlFrame
placeHolder:@"获取TN地址"];
[cell.contentView
addSubview:_urlField];
CGRect modeFrame =
CGRectMake(10,
55, CGRectGetWidth(tableView.frame)-20,
35);
_modeField = [self
textFieldWithFrame:modeFrame
placeHolder:@"mode"];
[cell.contentView
addSubview:_modeField];
CGRect btnFrame =
CGRectMake(50,
100, CGRectGetWidth(tableView.frame)-100,
35);
UIButton *button = [UIButton
buttonWithType:UIButtonTypeRoundedRect];
button.frame = btnFrame;
[button addTarget:self
action:@selector(buttonAction)
forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"开
始
支
付"
forState:UIControlStateNormal];
[cell.contentView
addSubview:button];
}
break;
default:
break;
}
return cell;
}
- (void)buttonAction
{
self.tnMode =
_modeField.text;
[self
startNetWithURL:[NSURL
URLWithString:_urlField.text]];
}
#pragma mark UITextFieldDelegate
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
_curField = textField;
}
@end
相关文章推荐
- Alipay Direct Bankpay 支付宝网银支付 (For OpenCart 2.x)
- 马化腾内部信透露新音乐集团由腾讯控股
- 把JTable的表头也就是标题行给隐藏掉
- HTTP协议的8种请求类型介绍
- 杭电OJ1020 Encoding
- drivers\base\platform.c
- 日期、泛型和集合与异常处理
- Android开发技术周报 Issue#24
- .NET程序员走向高端必读书单汇总
- 背包问题
- Linux-理解ARP、网关、路由
- 深入浅出JMS(一)--JMS基本概念
- infobright 导入 导出
- ConcurrentHashMap深入分析
- python怎么获取windows服务的PID
- JAVA DVD管理系统
- 百度地图sdk使用
- Android 上的数据格式 FlatBuffers
- Java中Synchronized的用法
- Spring中jdbcTemplate的用法实例(一)