微信支付和支付寶支付H5集成無需添加SDK,支付完成并調(diào)起自己的APP

1、經(jīng)過2天的坑總結(jié)一下兩個支付集成:

瀏覽器alloc設(shè)置:

代理方法區(qū)分微信和支付寶跳轉(zhuǎn)

- (void)webView:(WKWebView*)webView decidePolicyForNavigationAction:(WKNavigationAction*)navigationAction decisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler {


? ? NSString*urlString = [[navigationAction.requestURL]absoluteString];

? ? urlString = [urlStringstringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];



? ? if([urlStringcontainsString:@"weixin://wap/pay?"]) {

? ? ? ? decisionHandler(WKNavigationActionPolicyCancel);

?? ? ? ? //解決wkwebview weixin://無法打開微信客戶端的處理

? ? ? ? NSURL*url = [NSURLURLWithString:urlString];

? ? ? ? BOOL bSucc = [[UIApplication sharedApplication]openURL:url];

? ? ? ? if(!bSucc) {

? ? ? ? ? ? [self showHint:@"未檢測到微信APP,請您先安裝"];

? ? ? ? }else

? ? ? ? {

? ? ? ? ? ? [[UIApplication sharedApplication]openURL:url options:@{UIApplicationOpenURLOptionUniversalLinksOnly: @NO} completionHandler:^(BOOL success) {

? ? ? ? ? ? }];

? ? ? ? }

? ? }else if ([urlString containsString:@"alipay://alipayclient/?"])

? ? {

? ? ? ? decisionHandler(WKNavigationActionPolicyCancel);


? ? ? ? urlString = [urlStringstringByReplacingOccurrencesOfString:@"alipays" withString:kPaySchemeURL];

? ? ? ? urlString=[urlStringstringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

? ? ? ? [NSCharacterSet URLQueryAllowedCharacterSet];

? ? ? ? NSURL*url = [NSURLURLWithString:urlString];

? ? ? ? BOOL bSucc = [[UIApplication sharedApplication]openURL:url];

? ? ? ? if(!bSucc) {

? ? ? ? ? ? [self showHint:@"未檢測到支付寶APP,請您先安裝"];

? ? ? ? }else

? ? ? ? {

? ? ? ? ? ? [[UIApplication sharedApplication]openURL:url options:@{UIApplicationOpenURLOptionUniversalLinksOnly: @NO} completionHandler:^(BOOL success) {

? ? ? ? ? ? }];

? ? ? ? }


? ? }else{

? ? ? ? decisionHandler(WKNavigationActionPolicyAllow);

? ? }

}

配置這些以后應(yīng)該能調(diào)起支付寶/微信了。

最后配置白名單:


這樣微信/支付寶支付完成會調(diào)起我們的應(yīng)用并在appdelegate里接到回調(diào):

發(fā)布通知到支付頁面,是否彈窗已完成支付

注意點(diǎn):
1、支付寶可獲取到是否支付成功標(biāo)識
2、微信無法獲取到支付結(jié)果,所以獲取到訂單編號,去本地服務(wù)器校驗

3、支付寶return_url是無效的,需要客戶端修改alipays為自己的白名單,其實(shí)就是fromAppUrlScheme對應(yīng)的數(shù)據(jù)

服務(wù)器要做的:?
1、微信h5可自定義支付返回結(jié)果,把客戶端的白名單和訂單編號一起返回

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。