发布时间:2022-12-10 09:13:56 文章来源:互联网
微博 微信 QQ空间

支付宝见此文: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:];

另一视角

换一换