zoukankan      html  css  js  c++  java
  • 支付宝sdk iOS 集成

    1添加支付宝源文件和库文件AlipayOrder.h    AlipayOrder.m    AlipayResult.h    AlipayResult.m  AlixLibService.h   PartnerConfig.h    AlipayRsaLib.a    Alixpay.bundle   AlixPaylib_arc.a    libcrypto.a   libssl.a    

    2添加json类库和demo中的rsa签名    json文件夹和RSA文件夹

    3添加相关类库  CoreGraphics.framework  Foundation.framework UIKit.framework  CFNetwork.framework  SystemConfiguration.framework 

    4在delegate文件中加入支付回调函数

    //独立客户端回调函数

    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {

        

        [self parse:url application:application];

        return YES;

    }

    - (void)parse:(NSURL *)url application:(UIApplication *)application {

        

        //结果处理

        AlixPayResult* result = [selfhandleOpenURL:url];

        

        if (result)

        {

            

            if (result.statusCode == 9000)

            {

                /*

                 *用公钥验证签名 严格验证请使用result.resultString与result.signString验签

                 */

                

                //交易成功

                NSString* key = @"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnxj/9qwVfgoUh/y2W89L6BkRAFljhNhgPdyPuBV64bfQNN1PjbCzkIM6qRdKBoLPXmKKMiFYnkd6rAoprih3/PrQEB/VsW8OoM8fxn67UDYuyBTqA23MML9q1+ilIZwBC2AQ2UBVOrFXfFl75p6/B5KsiNG9zpgmLCUYuLkxpLQIDAQAB";

                id<DataVerifier> verifier;

                verifier = CreateRSADataVerifier(key);

                

                if ([verifier verifyString:result.resultStringwithSign:result.signString])

                {

                    //验证签名成功,交易结果无篡改

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

                                                                         message:result.statusMessage

                                                                        delegate:nil

                                                               cancelButtonTitle:@"确定"

                                                               otherButtonTitles:nil];

                    [alertView show];

                    alertView.delegate = self;

                    

                    

                //验签错误

                else {

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

                                                                         message:@"签名错误"

                                                                        delegate:nil

                                                               cancelButtonTitle:@"确定"

                                                               otherButtonTitles:nil];

                    [alertView show];

                    

                }

            }

            //如果支付失败,可以通过result.statusCode查询错误码

            else {

                UIAlertView * alertView = [[UIAlertViewalloc] initWithTitle:@"提示"

                                                                     message:result.statusMessage

                                                                    delegate:nil

                                                           cancelButtonTitle:@"确定"

                                                           otherButtonTitles:nil];

                [alertView show];

                

            }

            

            

        }

        else

        {

            //交易失败

        }

        

        NSLog(@"1111%i",result.statusCode);

        NSLog(@"222%@",result.description);

        NSLog(@"333%@",result);

        NSLog(@"444%@",result.resultString);

        

        

    }

    - (AlixPayResult *)resultFromURL:(NSURL *)url {

        NSString * query = [[url query] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    #if ! __has_feature(objc_arc)

        return [[[AlixPayResult alloc] initWithString:query] autorelease];

    #else

        return [[AlixPayResult alloc] initWithString:query];

    #endif

    }

    - (AlixPayResult *)handleOpenURL:(NSURL *)url {

        AlixPayResult * result = nil;

        

        if (url != nil && [[url host] compare:@"safepay"] == 0) {

            result = [self resultFromURL:url];

        }

        

        return result;

    }

    5设置url 在target中的info中,添加URL Types

  • 相关阅读:
    ECharts 提供了常规的折线图、柱状图、散点图、饼图、K线图, echarts3+ajax+json+SpringMVC+mybatis
    数据可视化—ECharts图表的应用
    关于老猿Python系列文章发布网址变化的说明
    hitorMiss、hitAndMiss以及MORPH_HITMISS?
    OpenCV图像处理MORPH_HITMISS入门使用理解
    OpenCV击中击不中HMT形态变换最容易理解的解释
    区块链学习7:超级账本项目Fabric中的背书、背书节点、背书策略、背书签名
    Python音视频开发:消除抖音短视频Logo的图形化工具实现
    Python音视频开发:消除抖音短视频Logo和去电视台标
    Python音视频开发:消除抖音短视频Logo的图形化工具实现过程详解
  • 原文地址:https://www.cnblogs.com/itlover2013/p/4273275.html
Copyright © 2011-2022 走看看