金融魔方红包接入文档

金融魔方红包接入文档


一、更新说明

本文匹配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引入一个即可】

Markdown

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

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

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>alipay.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSTemporaryExceptionMinimumTLSVersion</key>
                <string>TLSv1.0</string>
                <key>NSTemporaryExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
            <key>alipayobjects.com</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
                <true/>
                <key>NSTemporaryExceptionMinimumTLSVersion</key>
                <string>TLSv1.0</string>
                <key>NSTemporaryExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
        </dict>
    </dict>

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


Markdown

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

#import <AlipaySDK/AlipaySDK.h>

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<NSString*, id> *)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 <JrmfPacketKit/JrmfPacket.h>

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 <NSObject>
/**
 *  红包发送回调
 *
 *  @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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容