Ping++支付 iOS

本文档详细介绍了如何在iOS应用中接入Ping++支付,包括安装SDK、处理交易结果、适配iOS 9注意事项等。通过CocoaPods或手动导入方式添加库,设置URL Schemes,并实现特定代理方法来接收和处理交易结果。
摘要由CSDN通过智能技术生成

#import "AppDelegate.h"

//移动支付

#import "Pingpp.h"



//  代理方法中

// iOS 8 及以下请用这个

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

    return [PingpphandleOpenURL:url withCompletion:nil];

}


// iOS 9 以上请用这个

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options {

    return [PingpphandleOpenURL:url withCompletion:nil];

}


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

    return [PingpphandleOpenURL:url withCompletion:nil];

}


// 同时需要自定义URL 

// 具体实例,客户端从服务器来到charge对象之后

[PingppcreatePayment:charge viewController:weakSelfappURLScheme:kUrlSchemewithCompletion:^(NSString *result,PingppError *error) {

                                    NSLog(@"completion block: %@", result);

                                    if (error ==nil) {

                                        NSLog(@"PingppError is nil");

                                    } else {

                                        NSLog(@"PingppError: code=%lu msg=%@", (unsigned long)error.code, [errorgetMsg]);

                                    }

                                    [FXAFactoryShowFxaHud:result view:self.view];

                                    if (_finishBlock)

                                    {

                                        self.finishBlock(1);

                                    }

                                    

                                    [self.navigationControllerperformSelector:@selector(popViewControllerAnimated:)withObject:@1afterDelay:0.3];

                                }];



iOS SDK 接入指南

安装

  • 使用 CocoaPods
    1. 在 Podfile 添加

          pod 'Pingpp', '~> 2.1.0'
      

      默认会包含支付宝、微信、银联和百度钱包,你也可以自己选择渠道。
      目前有 ApplePay、Alipay、Wx、UnionPay、Bfb 五个子模块可选择,例如:

          pod 'Pingpp/Alipay', '~> 2.1.0'
          pod 'Pingpp/Wx', '~> 2.1.0'
          pod 'Pingpp/UnionPay', '~> 2.1.0'
          pod 'Pingpp/ApplePay', '~> 2.1.0'
      
      
    2. 运行 pod install
    3. 从现在开始使用 .xcworkspace 打开项目,而不是 .xcodeproj
    4. 添加 URL Schemes:在 Xcode 中,选择你的工程设置项,选中 TARGETS 一栏,在 Info 标签栏的 URL Types 添加 URL Schemes,如果使用微信,填入微信平台上注册的应用程序 id(为 wx 开头的字符串),如果不使用微信,则自定义,建议起名稍复杂一些,尽量避免与其他程序冲突。允许英文字母和数字,首字母必须是英文字母,不允许特殊字符。
    5. 2.1.0 及以上版本,可打开 Debug 模式,打印出 log,方便调试。开启方法:[Pingpp setDebugMode:YES];
  • 手动导入
    1. 在 Github 根据所需渠道下载相应分支的 iOS SDK,里面包含 lib 和 example 两个目录。example 目录下的是示例项目,你需要将 lib 目录下的文件添加到你的项目。
    2. 依赖 Frameworks:
      必需:
      • CFNetwork.framework
      • SystemConfiguration.framework
      • Security.framework
      • libc++.dylib
      • libz.dylib
      • libsqlite3.0.dylib
      百度钱包所需:
      • libstdc++.dylib
      • CoreTelephony.framework
      • AddressBook.framework
      • AddressBookUI.framework
      • AudioToolbox.framework
      • CoreAudio.framework
      • CoreGraphics.framework
      • ImageIO.framework
      • MapKit.framework
      • MessageUI.framework
      • MobileCoreServices.framework
      • QuartzCore.framework
      Apple Pay 所需:
      • PassKit.framework
    3. 如果不需要某些渠道,删除 lib/Channels 下的相应目录即可。
    4. 添加 URL Schemes:在 Xcode 中,选择你的工程设置项,选中 TARGETS 一栏,在 Info 标签栏的 URL Types 添加 URL Schemes,如果使用微信,填入微信平台上注册的应用程序 id(为 wx 开头的字符串),如果不使用微信,则自定义,建议起名稍复杂一些,尽量避免与其他程序冲突。允许英文字母和数字,首字母必须是英文字母,不允许特殊字符。
    5. 添加 Other Linker Flags:在 Build Settings 搜索 Other Linker Flags,添加 -ObjC
    6. 2.1.0 及以上版本,可打开 Debug 模式,打印出 log,方便调试。开启方法:[Pingpp setDebugMode:YES];

接入

客户端从服务器端拿到 charge 对象后,调用下面的方法

[Pingpp createPayment:charge
       viewController:viewController
         appURLScheme:kUrlScheme
       withCompletion:^(NSString *result, PingppError *error) {
    if ([result isEqualToString:@"success"]) {
        // 支付成功
    } else {
        // 支付失败或取消
        NSLog(@"Error: code=%lu msg=%@", error.code, [error getMsg]);
    }
}];
 

接收并处理交易结果

渠道为银联、百度钱包或者渠道为支付宝但未安装支付宝钱包时,交易结果会在调起插件时的 Completion 中返回。渠道为微信、支付宝且安装了支付宝钱包或者测试模式时,请实现 UIApplicationDelegate 的 - application:openURL:xxxx: 方法:

iOS 8 及以下

- (BOOL)application:(UIApplication *)application 
            openURL:(NSURL *)url 
  sourceApplication:(NSString *)sourceApplication 
         annotation:(id)annotation {
    BOOL canHandleURL = [Pingpp handleOpenURL:url withCompletion:nil];
    return canHandleURL;
}

iOS 9 及以上

- (BOOL)application:(UIApplication *)app
            openURL:(NSURL *)url 
            options:(NSDictionary *)options {
    BOOL canHandleURL = [Pingpp handleOpenURL:url withCompletion:nil];
    return canHandleURL;
}

关于渠道

使用微信支付必须要求用户安装微信客户端。

适配 iOS 9 注意事项

由于 iOS 9 系统策略更新以及支付渠道的变更,为了更好的支付体验,请下载 iOS-SDK 最新版本。

  1. 针对 iOS 9 系统更新, 为了使你接入的微信支付与支付宝支付兼容 iOS 9 ,请按照以下引导进行操作: 应用需要在 Info.plist 中将要使用的 URL Schemes 列为白名单,才可正常检查其他应用是否安装。受此影响,当你使用 Xcode 7 及 iOS 9 编译发布新版本 App,并且用到了判断是否安装相应的 App (支付宝钱包、微信)的接口时,需要在 Info.plist 里添加如下代码:

    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>weixin</string>
        <string>wechat</string>
        <string>alipay</string>
    </array>

    请注意未升级到微信 6.2.5 及以上版本的用户,在 iOS 9 下使用到微信相关功能时,仍可能无法成功

  2. 针对 iOS 9 限制 http 协议的访问,如果 App 需要访问 http://, 则需要在 Info.plist 添加如下代码:

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
  3. 针对使用 Xcode 7 编译失败,遇到错误信息为:

    XXXXXXX does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target.

    请到 Xcode 项目的 Build Settings 标签页搜索 bitcode,将 Enable Bitcode 设置为 NO 即可。

注意 以上更改项完成后,需使用 Xcode 7 进行编译


4.使用ping++支付回调APP不成功可能原因:

没有跳回到 app 的情况,一般都是 URL Schemes 没写对。
你是微信支付的话,检查一下,Info.plist 里的 URL Schemes 是不是跟 charge 里 credential 内的一个 appId (也是你微信开放平台的 微信 appid )是否一致。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值