支付宝见此文:IOS整合支付宝H5支付实现跳转和回调
序列
最近有个需求,iOS客户端不能集成支付宝和微信的App支付SDK(为了防止苹果审核测试SDK),所以用到了H5支付。虽然微信和支付宝的H5支付文档上都写着不要在app里用H5支付,而是用app支付,但总有办法的。
本文介绍H5微信支付如何从App跳转到微信ios支付宝支付成功后回调,以及如何从微信跳回到App。支付宝看这篇文章:
IOS集成支付宝H5支付实现跳转回调解决方案
效果为:App微信支付(成功、失败或取消)App
介词准备
本项目使用WKWebView,pre-action是后端小伙伴处理微信H5支付订单链接,客户收到订单链接后的操作。
下单链接为微信支付下单-统一下单API返回的mweb_url,格式为prepaid_id=wx 20242444321 ca 0631331346 package=1405458241。
运营流程
1.添加url scheme,将微信加入白名单
添加 URL 方案。在 xcodeproj 文件的信息选项卡底部的 URL 类型中设置。注意该URL的一级域名需要和微信商户后台设置的一级域名一致(微信商户平台-产品中心-开发配置-H5支付)。比如在微信商户中设置,那么URL scheme可以设置为. 此功能使一个 H5 支付系统可以轻松集成到多个应用程序中。如果只有一个app需要H5支付,也可以直接填和微信后台一样的。
2019 年 4 月 10 日更新
如上填写,则URL scheme只能设置为其三级域名,如a2。或相同
将WeChat URL Scheme WeChat 和 WeChat 添加到项目白名单中。将以上两个字符串添加到xcodeproj文件的“信息”选项卡中“自定义iOS目标属性”的lsapplicationqueriecodes中。如果没有lsapplicationqueriecodes,类型为Array,则手动输入添加。
2.WKWebView加载链接
添加协议 WKNavigationDelegate 和 WKUIDelegate。
创建一个 WKWebView 并加载 unity 订单链接。
- (void)buildWKWebView {
WKWebView * webView = [[WKWebView alloc] initwithframe: cgrectmake(0, NAV_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT - NAV_HEIGHT)];
[自己。查看 addsubview: WebView];
webview.navigationdelegate = self;
网络视图。UIDelegate=自我
NSURL * pay URl = [NSURL URltering: self. 支付字符串];
nsmutable rlrequest *request = [nsmutable rlrequest with URL : pay URL];
[请求设置值:@'a1.://wxpaycallback/' for Httpheaderfield:@'Referer'];
[WebView LoadRequest: 请求];
}
这里self.payString为微信H5支付后台统一下单链接,格式为prepaid_id=wx 20242444321 ca 0631331346 package=1405458041。
我们要做的就是根据文档给这个请求添加一个请求头Referer。关键是这是一个 1 。://wxpaycallback/ 不仅满足微信检测后台设置的商户一级域名,还把这个链接做成一个URL Scheme,这样跳转到微信客户端后,就可以顺利跳转到您自己的应用程序(无论是否支付成功)。其中宿主wxpaycallback/可以任意设置,方便在AppDelegate中回跳后部署业务逻辑。当然,如果你不需要在AppDelegate中接收action,而是跳回支付界面进行后续处理ios支付宝支付成功后回调,那么你可以只设置URL schema 1 。:// 到上一步。
2019 年 4 月 10 日更新
经过测试,应用中的H5支付其实是按照以下步骤进行的
@' ./CGI-bin/mmpayweb-bin/check mweb'
下面的参数redirect_url起到支付后跳回App的作用,Referer只起到验证微信的作用。
所以referrer只需设置微信H5支付注册域名的子域名即可,如
[请求设置值:@'a1.' 对于 HttpHeaderfield:@'Referer'];
3.实现代理方法拦截链接跳转到微信
- (see) webview 3330 (wkwebview *) webview decision policy navigation action 3330 (wknavigation action *) navigation action decision processor 3330 (see (^) (wknavigation action policy)) 决策处理器[
nsr-request *request = 导航操作。问:
nsstring *estring=[导航动作。问。网址。byrnemovingpercomputercoded] 的字符串字符串];
// huwkwebview 嘿嘿嘿嘿嘿嘿嘿嘿嘿嘿对吧对吧?方案(网址方案)
if([operation hasprefix 3330@' 339 /CGI-bin/mmpayweb-bin/check mwebb]![estring hasprefix 3330[nsstring stringwith format 3330@]redirect_url= 3330 //wxppaycallback/ ']]]
确定处理方案(wknavigation操作策略取消);
nsstring *redirect_url = 无:
如果([包含 3360@'redirect_url='])]
struct redirect_scope = [重新路由范围字符串:@'reroute_url'];
redirect_url = [[ 提取 substringthindex 3330 重定向范围。location] string bypending ring 3330 [n string with format 3330@] redirect_url=a1. oicq区。com 3330//wx支付回调/'];
} 别的
redirect_url=[estring stringbypending ring 3330[nstring stringwith format 3330@]redirect_url=a1。Otchisong。com 3330//wxppaycallback/'];
}
nsmutualurlRequest *新请求=[nsmutualurlRequest with URL 3330[NSRL URL 3330 redirect URL]缓存策略 3330n ourrequestprotocachepolicytimerouterval:];
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
