iOS-连连支付

连连支付 (参考:http://open.lianlianpay.com/#cat=33----选择 LLPayDemo1230下载
http://open.lianlianpay.com/#cat=9 —-官方问题解决办法)
1、连连需要的SDK

连连SDK.png

2、连连支付需要的framework
连连framework.png

3、连连支付导入的代码

#import "LLPayUtil.h"
#import "LLPaySdk.h"
@interface ViewController () <LLPaySdkDelegate>  //遵守协议
@property (nonatomic, retain) NSMutableDictionary *orderDic;
@end

#pragma mark -  连连支付   订单支付
- (void)pay{
    
    self.orderDic = [self createOrder];
    
    LLPayUtil *payUtil = [[LLPayUtil alloc] init];
    
    // 进行签名
    NSDictionary *signedOrder = [payUtil signedOrderDic:self.orderDic
                                             andSignKey:kLLPartnerKey];
    
    [LLPaySdk sharedSdk].sdkDelegate = self;
    
    // TODO: 根据需要使用特定支付方式
    // 快捷支付
    [[LLPaySdk sharedSdk] presentQuickPaySdkInViewController:self withTraderInfo:signedOrder];
    
    // 认证支付
//    [[LLPaySdk sharedSdk] presentVerifyPaySdkInViewController:self withTraderInfo:signedOrder];
    
    // 预授权
    //[self.sdk presentPreAuthPaySdkInViewController:self withTraderInfo:signedOrder];
    
}
#pragma mark - 创建订单

/*
 正式环境 认证支付测试商户号  201408071000001543
 MD5 key  201408071000001543test_20140812
 
 正式环境 快捷支付测试商户号  201408071000001546
 MD5 key  201408071000001546_test_20140815
 */

// TODO: 修改两个参数成商户自己的配置
static NSString *kLLOidPartner = @"201408071000001546";   // 商户号
static NSString *kLLPartnerKey = @"201408071000001546_test_20140815";   // 密钥

- (NSMutableDictionary*)createOrder{
    
    
    NSString *partnerPrefix = @"LL"; // TODO: 修改成自己公司前缀
    
    NSString *signType = @"MD5";    // MD5 || RSA || HMAC
    
    NSString *user_id = @"asdbasdf1234"; //
    // user_id,一个user_id标示一个用户
    // user_id为必传项,需要关联商户里的用户编号,一个user_id下的所有支付银行卡,身份证必须相同
    // demo中需要开发测试自己填入user_id, 可以先用自己的手机号作为标示,正式上线请使用商户内的用户编号
    
    NSMutableDictionary *param = [NSMutableDictionary dictionary];
    
    NSDateFormatter *dateFormater = [[NSDateFormatter alloc] init];
    [dateFormater setDateFormat:@"yyyyMMddHHmmss"];
    NSString *simOrder = [dateFormater stringFromDate:[NSDate date]];
    
    // TODO: 请开发人员修改下面订单的所有信息,以匹配实际需求
    [param setDictionary:@{
                           @"sign_type":signType,
                           //签名方式   partner_sign_type   是   String  RSA  或者 MD5
                           @"busi_partner":@"101001",
                           //商户业务类型 busi_partner    是   String(6)   虚拟商品销售:101001
                           @"dt_order":simOrder,
                           //商户订单时间 dt_order    是   String(14)  格式:YYYYMMDDH24MISS  14位数字,精确到秒
                           //                           @"money_order":@"0.10",
                           //交易金额   money_order 是   Number(8,2) 该笔订单的资金总额,单位为RMB-元。大于0的数字,精确到小数点后两位。 如:49.65
                           @"money_order" : @"0.01",
                           
                           @"no_order":[NSString stringWithFormat:@"%@%@",partnerPrefix,  simOrder],
                           //商户唯一订单号    no_order    是   String(32)  商户系统唯一订单号
                           @"name_goods":@"订单名",
                           //商品名称   name_goods  否   String(40)
                           @"info_order":simOrder,
                           //订单附加信息 info_order  否   String(255) 商户订单的备注信息
                           @"valid_order":@"10080",
                           //分钟为单位,默认为10080分钟(7天),从创建时间开始,过了此订单有效时间此笔订单就会被设置为失败状态不能再重新进行支付。
                           //                           @"shareing_data":@"201412030000035903^101001^10^分账说明1|201310102000003524^101001^11^分账说明2|201307232000003510^109001^12^分账说明3"
                           // 分账信息数据 shareing_data  否 变(1024)
                           
                           @"notify_url":@"http://www.baidu.com",
                           //服务器异步通知地址  notify_url  是   String(64)  连连钱包支付平台在用户支付成功后通知商户服务端的地址,如:http://payhttp.xiaofubao.com/back.shtml
                           
                           
                           //                           @"risk_item":@"{\"user_info_bind_phone\":\"13958069593\",\"user_info_dt_register\":\"20131030122130\"}",
                           //风险控制参数 否 此字段填写风控参数,采用json串的模式传入,字段名和字段内容彼此对应好
                           @"risk_item" : [LLPayUtil jsonStringOfObj:@{@"user_info_dt_register":@"20131030122130"}],
                           @"user_id": user_id,
                           //商户用户唯一编号 否 该用户在商户系统中的唯一编号,要求是该编号在商户系统中唯一标识该用户
                           //                           @"flag_modify":@"1",
                           //修改标记 flag_modify 否 String 0-可以修改,默认为0, 1-不允许修改 与id_type,id_no,acct_name配合使用,如果该用户在商户系统已经实名认证过了,则在绑定银行卡的输入信息不能修改,否则可以修改
                           
                           //                           @"card_no":@"6227001540670034271",
                           //银行卡号 card_no 否 银行卡号前置,卡号可以在商户的页面输入
                           
                           //                           @"no_agree":@"2014070900123076",
                           //签约协议号 否 String(16) 已经记录快捷银行卡的用户,商户在调用的时候可以与pay_type一块配合使用
                           }];
    BOOL isIsVerifyPay = YES;
    
    if (isIsVerifyPay) {
        [param addEntriesFromDictionary:@{
                                          @"id_no":@"370782199312027016",//@"339005198403100026",
                                          //证件号码 id_no 否 String
                                          @"acct_name":@"安良浩",//@"测试号",
                                          //银行账号姓名 acct_name 否 String
                                          }];
    }
    param[@"oid_partner"] = kLLOidPartner;
    
    
    return param;
}
#pragma -mark 支付结果 LLPaySdkDelegate
// 订单支付结果返回,主要是异常和成功的不同状态
// TODO: 开发人员需要根据实际业务调整逻辑
- (void)paymentEnd:(LLPayResult)resultCode withResultDic:(NSDictionary *)dic
{
    NSString *msg = @"支付异常";
    switch (resultCode) {
        case kLLPayResultSuccess:
        {
            msg = @"支付成功";
            NSString* result_pay = dic[@"result_pay"];
            if ([result_pay isEqualToString:@"SUCCESS"])
            {
                //
                //NSString *payBackAgreeNo = dic[@"agreementno"];
                // TODO: 协议号
            }
            else if ([result_pay isEqualToString:@"PROCESSING"])
            {
                msg = @"支付单处理中";
            }
            else if ([result_pay isEqualToString:@"FAILURE"])
            {
                msg = @"支付单失败";
            }
            else if ([result_pay isEqualToString:@"REFUND"])
            {
                msg = @"支付单已退款";
            }
        }
            break;
        case kLLPayResultFail:
        {
            msg = @"支付失败";
        }
            break;
        case kLLPayResultCancel:
        {
            msg = @"支付取消";
        }
            break;
        case kLLPayResultInitError:
        {
            msg = @"sdk初始化异常";
        }
            break;
        case kLLPayResultInitParamError:
        {
            msg = dic[@"ret_msg"];
        }
            break;
        default:
            break;
    }
    
    NSString *showMsg = [msg stringByAppendingString:[LLPayUtil jsonStringOfObj:dic]];
    
    [[[UIAlertView alloc] initWithTitle:@"结果"
                                message:showMsg
                               delegate:nil
                      cancelButtonTitle:@"确认"
                      otherButtonTitles:nil] show];
}

注意:①、修改一下Demo里面的代码就可以运行

连连支付_注意.png

②、我只接触过快捷支付和认证支付,可以这样进行调用
跳转支付.png

只做了上面的操作还是会报错误的,需要进行下面的操作
连连支付问题1.png

另外需要注意:
假如你只使用md5,hmac,请不用添加,libRsaCrypto.a,并把LLPayUtil.h里面的 kLLPayUtilNeedRSASign 注释
假如你使用rsa, 请全部添加,并 把LLPayUtil.h里面的 kLLPayUtilNeedRSASign 注释取消

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,370评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,579评论 18 139
  • 支付 1.支付宝和银联的支付流程 常用的支付方式有: 1、支付宝支付 https://openhome.alipa...
    丶逐渐阅读 1,670评论 3 11
  • 五月天,台湾摇滚乐团,由乐队团长兼吉他手怪兽、主唱阿信、吉他手石头、贝斯玛莎和鼓手冠佑组成,前身为“So Band...
    Echo丽阅读 1,240评论 15 10
  • 连续的阴雨,清冷的天气! 早起雨停,爸爸和舅舅开始帮外公种树了✌ 猜猜这是啥花儿? 待到明年春暖花开之时,必将满园...
    悠水立方阅读 130评论 0 0