美文网首页
银联支付步骤总结

银联支付步骤总结

作者: SmallWhiteMouse | 来源:发表于2018-03-17 14:51 被阅读39次

官方SDk下载地址 https://open.unionpay.com/ajweb/index

笔者Demo : http://pan.baidu.com/s/1kUKMaqz

1.导入官方SDK。直接拖入工程即可

2.添加系统包:Target --> build Phases --> Link Binary With Libraries 路径下添加4个包: CFNetwork.framework 、 SystemConfiguration.framework 、Libz.tbd 、 libPaymentControl.a (拖入工程的时候自动导入了).效果图

导入framework

3.在工程的info.plist设置中。添加一个URl Types回调协议。只需要将工程名复制一遍到URL Schemes

看箭头

4.配置info.plist文件 将这两个字段粘贴到info.plist的source Code 模式下 字段如下:

<key> LSApplicationQueriesSchemes</key>

      <array>

           <string>uppaysdk</string>

            <string>uppaywallet</string>

            <string>uppayx1</string>

             <string>uppayx2</string>

             <string>uppayx3</string>

    </array>

<key>NSAppTransportSecurity </key><dict>

<key>NSAllowsArbitraryLoads</key><true/></dict>

《1》第一个Array 表示协议白名单。 《2》 第二个字典表示ios 9 https 接入网络协议字段

字段

6.添加 -ObjC宏 :选择工程targets——》build settings->Linking->other linker flags

4.

7.将涉及到引用UPPaymentControl.h的源文件的后缀名都改为.mm

在APPDelegate.m文件中复制下面代码:

------------------------APPDelegate.m--------------------------------------------

- (BOOL) application:(UIApplication*)application openURL:(NSURL *)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation {

[[UPPaymentControldefaultControl] handlePaymentResult:url completeBlock:^(NSString *code,NSDictionary *data) {

        //结果code为成功时,先校验签名,校验成功后做后续处理

if([codeisEqualToString:@"success"]) {

  //判断签名数据是否存在

if(data == nil){

      //如果没有签名数据,建议商户app后台查询交易结果

return;

}

  //数据从NSDictionary转换为NSString

NSData *signData = [NSJSONSerialization dataWithJSONObject:data

options:0

error:nil];

NSString *sign = [[NSString alloc] initWithData:signDataencoding:NSUTF8StringEncoding];

  //验签证书同后台验签证书

        //此处的verify,商户需送去商户后台做验签

if([self verify:sign]) {

      NSLog(@"支付成功");

            //支付成功且验签成功,展示支付成功提示

}

else {

      NSLog(@"验签失败");

      //验签失败,交易结果数据被篡改,商户app后台查询交易结果

}

}

elseif([code isEqualToString:@"fail"]) {

        //交易失败

}

elseif([code isEqualToString:@"cancel"]) {

        //交易取消

}

}];

return YES;

}

-(BOOL) verify:(NSString *) resultStr {

    //验签证书同后台验签证书

    //此处的verify,商户需送去商户后台做验签

return NO;

}

------------------------APPDelegate.mm--------------------------------------------

------------------------ViewController.mm--------------------------------------------

#import "UPPaymentControl.h"

#define kURL_TN_Normal              @"http://101.231.204.84:8091/sim/getacptn"

@interface ViewController (){

NSMutableData*_responseData;

}

@end

- (IBAction)Pay:(UIButton *)sender {

    // 检查是否安装银联App的接口 - (BOOL)isPaymentAppInstalled

[selfstartNetWithURL:[NSURL URLWithString:kURL_TN_Normal]];

}

- (void)startNetWithURL:(NSURL *)url

{

NSURLRequest *urlRequest=[NSURLRequest requestWithURL:url];

NSURLConnection* urlConn= [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];

[urlConn start];

}

#pragma mark - connection

//接收到与 银联支付 的对接信息

- (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response

{

NSHTTPURLResponse *rsp =(NSHTTPURLResponse*)response;

NSInteger code = [rspstatusCode];

if (code != 200)

{

NSLog(@"网络错误");

[connectioncancel];

}

else

{

_responseData = [[NSMutableData alloc] init];

}

}

//拼接报文

- (void)connection:(NSURLConnection*)connection didReceiveData:(NSData *)data

{

[_responseDataappendData:data];

}

//连接已经完成导入

-(void)connectionDidFinishLoading:(NSURLConnection *)connection

{

NSString  *tn =[[NSMutableString alloc] initWithData:_responseData encoding:NSUTF8StringEncoding];

if (tn != nil &&tn.length > 0)

{

NSLog(@"tn=%@",tn);

        //tn 

      :交易单号

//scheme    :支付完成之后返回的协议: 一般我们填APP名称

//mode      01 :测试环境    00:生产环境

//

[[UPPaymentControl defaultControl] startPay:tn fromScheme:这写你的APP工程名mode:@"01"viewController:self];

}

}

//连接失败

-(void)connection:(NSURLConnection*)connection didFailWithError:(NSError *)error

{

    NSLog(@"网络错误");

}

 

------------------------ViewController.mm--------------------------------------------

相关文章

网友评论

      本文标题:银联支付步骤总结

      本文链接:https://www.haomeiwen.com/subject/iftrqftx.html