連連支付 (參考: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> //遵守協(xié)議
@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 - 創(chuàng)建訂單
/*
正式環(huán)境 認證支付測試商戶號 201408071000001543
MD5 key 201408071000001543test_20140812
正式環(huán)境 快捷支付測試商戶號 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為必傳項糟秘,需要關聯(lián)商戶里的用戶編號,一個user_id下的所有支付銀行卡,身份證必須相同
// demo中需要開發(fā)測試自己填入user_id, 可以先用自己的手機號作為標示天通,正式上線請使用商戶內的用戶編號
NSMutableDictionary *param = [NSMutableDictionary dictionary];
NSDateFormatter *dateFormater = [[NSDateFormatter alloc] init];
[dateFormater setDateFormat:@"yyyyMMddHHmmss"];
NSString *simOrder = [dateFormater stringFromDate:[NSDate date]];
// TODO: 請開發(fā)人員修改下面訂單的所有信息克滴,以匹配實際需求
[param setDictionary:@{
@"sign_type":signType,
//簽名方式 partner_sign_type 是 String RSA 或者 MD5
@"busi_partner":@"101001",
//商戶業(yè)務類型 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) 商戶系統(tǒng)唯一訂單號
@"name_goods":@"訂單名",
//商品名稱 name_goods 否 String(40)
@"info_order":simOrder,
//訂單附加信息 info_order 否 String(255) 商戶訂單的備注信息
@"valid_order":@"10080",
//分鐘為單位着帽,默認為10080分鐘(7天)罩阵,從創(chuàng)建時間開始,過了此訂單有效時間此筆訂單就會被設置為失敗狀態(tài)不能再重新進行支付启摄。
// @"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,
//商戶用戶唯一編號 否 該用戶在商戶系統(tǒng)中的唯一編號傅是,要求是該編號在商戶系統(tǒng)中唯一標識該用戶
// @"flag_modify":@"1",
//修改標記 flag_modify 否 String 0-可以修改,默認為0, 1-不允許修改 與id_type,id_no,acct_name配合使用,如果該用戶在商戶系統(tǒng)已經實名認證過了喧笔,則在綁定銀行卡的輸入信息不能修改帽驯,否則可以修改
// @"card_no":@"6227001540670034271",
//銀行卡號 card_no 否 銀行卡號前置,卡號可以在商戶的頁面輸入
// @"no_agree":@"2014070900123076",
//簽約協(xié)議號 否 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
// 訂單支付結果返回尼变,主要是異常和成功的不同狀態(tài)
// TODO: 開發(fā)人員需要根據實際業(yè)務調整邏輯
- (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: 協(xié)議號
}
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 注釋取消