金融魔方红包接入文档

金融魔方红包接入文档


一、更新说明

本文匹配Framework版本:V1.4.1 (更新时间: 2016/12/20

更新内容【建议更新

  • 1.Scheme参数可配置

二、产品功能说明

金融魔方IM红包SDK是一款实现App快速集成发单聊红包、发群聊红包、拆红包并查看交易记录等功能的SDK。

三、压缩包内容

包名为jrmf-iOS-IMSDK
【注:jmrfLib文件夹中的JYangToolKit.framework为金融魔方SDK支持工具,若您集成了金融魔方的多款产品,例如红包、支付等,引入其中一个JYangToolKit.framework即可】

  • jrmfLib文件夹:SDK文件夹,直接导入项目中
  • word文件:说明文档
  • demo文件夹:示例
  • AlipaySDK文件夹:支付宝SDK

四、集成流程详解

1.启动Xcode,把iOS包中jrmfLib文件夹拷贝到项目文件夹下,并导入到项目工程中。
【注1:导入文件夹时,一定要勾选Add to targets,否则https证书会访问不到。】

【注2:金融魔方https证书jrmf.cer,多个SDK引入一个即可】

金融魔方红包接入文档_第1张图片
Markdown

2.Build Settings 中 Other Linker Flags 添加 –ObjC

3.需要在App项目的plist手动添加以下key和value来支持支付宝ATS,其余网络请求均为https

NSAppTransportSecurity
    
        NSExceptionDomains
        
            alipay.com
            
                NSIncludesSubdomains
                
                NSTemporaryExceptionAllowsInsecureHTTPLoads
                
                NSTemporaryExceptionMinimumTLSVersion
                TLSv1.0
                NSTemporaryExceptionRequiresForwardSecrecy
                
            
            alipayobjects.com
            
                NSIncludesSubdomains
                
                NSTemporaryExceptionAllowsInsecureHTTPLoads
                
                NSTemporaryExceptionMinimumTLSVersion
                TLSv1.0
                NSTemporaryExceptionRequiresForwardSecrecy
                
            
        
    

4.支持支付宝支付,需将AlipaySDK文件夹如上导入,并在Build Phases选项卡的Link Binary With Libraries中,增加以下依赖:


金融魔方红包接入文档_第2张图片
Markdown

5.在AppDelegate.m文件中,增加头文件引用。

#import 

6.应用注册scheme,在plist文件中定义URL types ,值在instanceJrmfPaySDK方法中传递。

7.在@implementation AppDelegate中增加如下代码

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    
    if ([url.host isEqualToString:@"safepay"]) {
        //跳转支付宝钱包进行支付,处理支付结果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            
            NSLog(@"App Delegate 8.0 result = %@",resultDic);
            if ([[resultDic objectForKey:@"resultStatus"] isEqualToString:@"9000"]) {
                [JrmfPacket doActionAlipayDone];
            }
        }];
    }
    return YES;
}

// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options
{
    if ([url.host isEqualToString:@"safepay"]) {
        //跳转支付宝钱包进行支付,处理支付结果
        [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
            
            NSLog(@"App Delegate 9.0 result = %@",resultDic);
            if ([[resultDic objectForKey:@"resultStatus"] isEqualToString:@"9000"]) {
                [JrmfPacket doActionAlipayDone];
            }
        }];
    }
    return YES;
}

五、客户端调用

【注:demo中‘huanqiu’为测试渠道,对thirdToken未做校验。】


1.在需要调起framework时引入头文件

#import 

2.启动初始化

在didFinishLaunchingWithOptions函数中,进行红包参数初始化:

/**
 JrmfSDK 注册方法

 @param partnerId   渠道名称(我们公司分配给你们的渠道字符串)
 @param envName     红包名称
 @param seheme      支付宝回调Scheme【保证格式的正确性】
 @param isOnLine    是否正式环境 YES:正式环境    NO:测试环境
 */
+ (void)instanceJrmfPacketWithPartnerId:(NSString *)partnerId EnvelopeName:(NSString *)envName SchemeUrl:(NSString *)scheme appMothod:(BOOL)isOnLine;

3.示例方法 - 发红包

/**
 *  发红包
 *
 *  @param viewController 当前视图
 *  @param thirdToken     三方签名令牌
 *  @param isGroup        是否为群组红包
 *  @param receiveID      接受者ID(单人红包:接受者用户唯一标识;群红包:群组ID,唯一标识)
 *  @param userName       发送者昵称
 *  @param userHeadLink   发送者头像链接
 *  @param userId         发送者ID
 *  @param groupNum       群人数(个人红包可不传)
 *
 *  @discussion      A.三方签名令牌(服务端计算后给到app,服务端算法为md5(custUid+appsecret))
 *  @discussion      B.用户头像字符串限制在260个字符内【外网可访问】【下同】

 */

    JrmfPacket * jrmf = [[JrmfPacket alloc] init];
    jrmf.delegate = self;
    [jrmf doActionPresentSendRedEnvelopeViewController:self thirdToken:thirdToken withGroup:YES receiveID:KReceiveID sendUserName:KUserName sendUserHead:@"" sendUserID:kUserID groupNumber:@"55"];

4.示例方法 - 拆红包

/**
 *  拆红包
 *
 *  @param viewController   当前视图
 *  @param thirdToken       三方签名令牌
 *  @param userName         当前操作用户姓名
 *  @param userHeadLink     头像链接
 *  @param userId           当前操作用户ID
 *  @param envelopeId       红包ID
 *  @param isGroup          是否为群组红包 
 *
 *  @discussion      三方签名令牌(服务端计算后给到app,服务端算法为md5(custUid+appsecret))
 */

    JrmfPacket * jrmf = [[JrmfPacket alloc] init];
    jrmf.delegate = self;
    [jrmf doActionPresentOpenViewController:self thirdToken:@"三方令牌" withUserName:@"用户昵称" userHead:@"用户头像链接" userID:@"用户ID" envelopeID:@"红包ID" isGroup:YES];

5.示例方法 - 昵称、头像更新

/**
 *  用户信息更新
 *
 *  aram userId             用户ID(app用户的唯一标识)
 *  @param userName         用户昵称
 *  @param userHeadLink     用户头像
 *  @param thirdToken       三方签名令牌
 *  @param completionAction 回调函数
 *
 *  @discussion      A.用户昵称、头像可单独更新,非更新是传nil即可,但不可两者同时为nil;三方签名令牌(服务端计算后给到app,服务端算法为md5(custUid+appsecret))
 *                   B.头像的URL连接字符不要过长,不超过256个字符为宜。(所有头像链接都需要限制)【注:外网可访问】【下同】
 */

    [JrmfPacket updateUserMsgWithUserId:@"用户ID" userName:@"用户昵称" userHead:@"用户头像链接" thirdToken:@"三方令牌" completion:^(NSError *error, NSDictionary *resultDic) {
        NSLog(@"---------更新用户信息---------");
        if (error) {
            NSLog(@"error.msg = %@", error.localizedDescription);
        }
        else {
            if ([[resultDic objectForKey:@"respstat"] isEqualToString:@"0000"]) {
                NSLog(@"更新成功");
            }
            else {
                NSLog(@"%@", [resultDic objectForKey:@"respsmsg"]);
            }
        }
    }];

6.根据红包ID查看红包领取详情

/**
 查看红包领取详情

 @param userId          用户ID
 @param packetId        红包ID
 @param thirdToken      三方签名令牌
 */
    JrmfPacket * jrmf = [[JrmfPacket alloc] init];
    [jrmf doActionPresentPacketDetailInViewWithUserID:@"用户ID" packetID:@"红包ID" thirdToken:@"三方令牌"];

7.查看收支明细

/**
 查看收支明细

 @param userId          用户ID
 @param thirdToken      三方签名令牌
 */
    JrmfPacket * jrmf = [[JrmfPacket alloc] init];
    [jrmf doActionPresentPacketListInViewWithUserID:@"用户ID" thirdToken:@"三方令牌"];

8.配置信息

/**
 *  发红包/钱包 页面标题字号 Default:18.f
 */
@property (nonatomic, assign) float titleFont;

/**
 *  发红包/钱包 页面'标题栏'颜色 支持@“#123456”、 @“0X123456”、 @“123456”三种格式
 */
@property (nonatomic, strong) NSString * packetRGB;

/**
 *  发红包/钱包 页面'标题'颜色 支持@“#123456”、 @“0X123456”、 @“123456”三种格式
 */
@property (nonatomic, strong) NSString * titleColorRGB;

六、红包功能代理说明

注:当遵循代理进入发送红包页面后,可在遵循代理页面实现该函数。

@protocol jrmfManagerDelegate 
/**
 *  红包发送回调
 *
 *  @param envId    红包ID
 *  @param envName  红包名称
 *  @param envMsg   描述信息
 *  @param jrmfStat 发送状态
 */
- (void)dojrmfActionDidSendEnvelopedWithID:(NSString *)envId Name:(NSString *)envName Message:(NSString *)envMsg Stat:(jrmfSendStatus)jrmfStat;
/**
 *  成功领取了一个红包回调
 *
 *  @param isDone 是否为最后一个红包;YES:领取的为最后一个红包;NO:红包未被领取完成
 *
 *  @discussion     此函数调用时,一定是成功领取了一个红包;只有红包个数>=2的时候,isDone才有效,群红包个数为1个时,默认为NO
 */
- (void)dojrmfActionOpenPacketSuccessWithGetDone:(BOOL)isDone;
  • jrmfStat 值意义
typedef enum jrmfSendStatus {
    kjrmfStatCancel = 0,     // 取消发送,用户行为
    kjrmfStatSucess = 1,     // 红包发送成功
    kjrmfStatUnknow,         // 其他
}jrmfSendStatus;

你可能感兴趣的:(金融魔方红包接入文档)