客戶方APP嵌入拉卡拉提供的webview或者LKLWebObject方法類
本文介紹客戶方APP嵌入拉卡拉提供的webview或者LKLWebObject方法類:
示例代碼
#pragma mark - WKScriptMessageHandler
/// 通過接收J(rèn)S傳出消息的name進(jìn)行捕捉的回調(diào)方法
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
if ([message.name isEqualToString: @"LKLWebObject"]) {
NSDictionary *bodyInfo = message.body;
NSString *methodName = bodyInfo[@"method"]?bodyInfo[@"method"]: @"";
if ([methodName isEqualToString: @"jumpAlipay"]) {//跳轉(zhuǎn)支付寶
NSString *url = bodyInfo[@"url"];
[self jumpToAlipayWithUrl: url];
}
else if ([methodName isEqualToString:@"jumpWxApplet"]) {
[self jumpToWechatMiniPrograme: bodyInfo];
}
else if ([methodName isEqualToString:@"closeWindow"]) {
//做相關(guān)業(yè)務(wù)操作 例如:跳轉(zhuǎn)或返回到指定頁面
}
}
}
/*
跳轉(zhuǎn)支付寶
注意:必須在info.plist中增加alipayqr白名單(LSApplicationQueriesSchemes下增加)
*/
-(void)jumpToAlipayWithUrl:(NSString *)url {
if (![[UIApplication sharedApplication]canOpenURL: [NSURL URLWithString:url]]) {//未安裝
[self.view makeToast:@"請先下載“支付寶”客戶端"];
return;
}
if (@available(iOS 10.0, *)) {
[[UIApplication sharedApplication] openURL: [NSURL URLWithString:url] options:@{
}
completionHandler:nil];
}
else {
// Fallback on earlier versions
[[UIApplication sharedApplication]openURL: [NSURL URLWithString:url]];
}
}
//跳轉(zhuǎn)微信小程序
/*
dic中需要包含的數(shù)據(jù)
username
path
wxAppid
universalLink
programType
*/
-(void)jumpToWechatMiniPrograme:(NSDictionary *)dic {
NSString *userName = dic[@"userName"];
NSString *path = dic[@"path"];
NSString *universalLink = dic[@"universalLink"];
int programType = [NSString stringWithFormat: @"%@",dic[@"programType"]].intValue;
[self jumpWxApplet: userName programPath:path universalLink:universalLink programType:programType];
}
//跳轉(zhuǎn)小程序Wechat_Applet
-(void)jumpWxApplet:(NSString *)userName programPath:(NSString *)path universalLink:(NSString *)universalLink programType:(int)programType {
if ([WXApi isWXAppInstalled]) {
//微信注冊
/*
* @param appid 微信開發(fā)者ID
* @param universalLink 微信開發(fā)者Universal Link
*/
if ([WXApi registerApp: APP_ID universalLink:universalLink]) {
WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
//拉起的小程序的username
launchMiniProgramReq.userName = userName;
launchMiniProgramReq.path = path;
//拉起小程序的類型
launchMiniProgramReq.miniProgramType = programType;
return [WXApi sendReq: launchMiniProgramReq completion:^(BOOL success) {
NSLog(@"sendReq result %d",success);
}];
}
else {
}
}
else {
[self.view makeToast: @"請下載“微信”完成注冊"];
}
}復(fù)制
closeWindoe方法觸發(fā)條件:
closeWindow方法觸發(fā)條件:
收銀臺模板配置支付完成頁標(biāo)識為直接跳至客戶上送的地址,且收銀臺下單接口不上送callback_url;收銀臺H5查詢到訂單狀態(tài)為終態(tài)時觸發(fā);
訂單終態(tài):付款成功、已過期、支付失敗等
注意:訂單支付狀態(tài)APP應(yīng)以自行查詢后臺接口為準(zhǔn)
收銀臺下單
webview打開收銀臺H5頁面
收銀臺H5獲取商戶支付權(quán)限
選擇支付寶支付
收銀臺H5預(yù)下單
收銀臺H5調(diào)用webview提供的jumpAlipay方法打開支付寶付款(scheme方式)
選擇微信支付
收銀臺H5調(diào)用webview提供的jumpWxApplet方法打開拉卡拉收款寶小程序 微信官方文檔
收款寶小程序做預(yù)下單付款
代碼下載
銀聯(lián)統(tǒng)一收銀臺
使用銀聯(lián)統(tǒng)一收銀臺下單支付方式(銀聯(lián)支付, 手機(jī)Pay) 需接入如下SDK:
工程配置
在工程
info.plist設(shè)置中添加一個URL Types回調(diào)協(xié)議,用于在支付完成后返回商戶客戶端。請注意URL Schemes需要是唯一的,與app對應(yīng)。
也可在TARGETS的info->URL Types進(jìn)行配置
SDK使用
引入支付
sdk,cocoapods引入pod 'LKLPaymentSdk'在需要調(diào)用支付控件接口的代碼文件內(nèi)引用頭文件
import<LKLPaymentSdk/UPPaymentControl.h>注意:(注意:如果工程的 compile source as 選項的值不是 Objective–C++,則引用此頭文件的文件類型都要改為.mm)
webview注冊協(xié)議,初始化LKLUnionCashier
在代理方法中監(jiān)聽對應(yīng)方法:
startPay開始支付;startSEPay手機(jī)支付(iOS目前Apple pay不支持);tn為銀聯(lián)生成返回的參數(shù);serverMode01為銀聯(lián)測試環(huán)境,00為銀聯(lián)生產(chǎn)環(huán)境;mobileBrand獲取手機(jī)品牌;
支付回調(diào)會在Appdelegate中的openURL方法中返回,可通過通知或代理等方法將支付結(jié)果回傳到支付頁面,然后回傳給js(這里用的是通知)
支付結(jié)果以收銀臺系統(tǒng)后臺回調(diào)結(jié)果為準(zhǔn)
Appdelegate的openURL將支付結(jié)果url(如果之前有其他平臺,要區(qū)分開),傳給LKLUnionCashier





