美文网首页
金融魔方红包接入文档

金融魔方红包接入文档

作者: 我了个卡 | 来源:发表于2017-01-10 17:57 被阅读0次

    金融魔方红包接入文档


    一、更新说明

    本文匹配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;
    

    相关文章

      网友评论

          本文标题:金融魔方红包接入文档

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