开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
文档中心
网页&移动应用 
支付产品
当面付
订单码支付
app支付
接入指南
基础功能
扩展功能
集成工具
api 列表
相关资料
手机网站支付
电脑网站支付
商家扣款
预授权支付
刷脸付
支付 mcp 和插件服务
私域产品
公域产品
营销产品
资金产品
会员产品
信用产品
安全产品
广告产品
其他通用产品
开发 > 服务端 > 支付产品 > app支付 > 接入指南 >  > 手机网站支付转 app 支付
已更新
文档更新记录 >
收藏
订阅更新
我的文档
设置
接入检测
即可查看检测结果)
若有未通过的接入检测项,接口将无法调通
当开发者已完成 后可以通过 native 凯发k8官方网娱乐官方的支付方式唤起支付宝 app。
为了节约开发成本,商家在自有app内嵌h5页接入手机网站支付,由于手机网站支付的网络依赖比较严重,通常需要经过更多的验证, 这样会降低支付的成功率。为了能够帮助商家使用 native-h5 混合 app 以极低的接入成本 极大的 提升支付成功率,平台推出了手机网站支付转 native 凯发k8官方网娱乐官方的支付方式,商家下载使用 支付宝标准版 sdk 内置的功能完成手机网站支付。
注意:若未安装支付宝app参考下图,点击下载支付宝app付款下载之后再进行支付。

下面以淘宝为例对比手机网站支付和手机网站转 native 支付的流程。
1 手机网站支付流程
在手机端浏览器中访问淘宝凯发k8官方网娱乐官方主页 www.taobao.com,在页面挑选商品并进行付款,点击 立即支付 进入付款详情页面(h5 页面)。
1.1 ios

1.2 android

2 手机网站转 native 支付流程
并运行 demo,将 demo app 安装到手机上即可体验该流程,并在 demo 中打开淘宝凯发k8官方网娱乐官方主页  www.taobao.com,挑选商品并进行付款。
注意:请确保手机上安装了支付宝客户端。
2.1 ios
点击 urlpay > openurl,输入 www.taobao.com 并点击 go,然后在淘宝凯发k8官方网娱乐官方主页选中商品并付款。

2.2 android
点击 网页支付转native 然后在淘宝凯发k8官方网娱乐官方主页选中商品并付款。

3 对比总结
手机网站支付与手机网站转 native 支付的主要区别为:
如果用户手机安装了支付宝客户端,手机网站转 native 凯发k8官方网娱乐官方的支付方式将跳转到支付宝客户端中进行订单支付,用户体验和支付成功率均优于手机网站凯发k8官方网娱乐官方的支付方式。除此之外,还能使用手机网站支付没有提供的指纹支付、手环支付、手表支付、免密支付等功能。
如果用户手机没有安装支付宝客户端,将在 sdk 提供的 web-view 中打开 h5 页面进行支付。即便如此,由于 sdk 与服务端的交互携带账号信息,仍比不携带任何账号信息的普通手机网站支付体验更好。
4 如何实现手机网站转native支付
要实现上述功能需接入支付宝提供的 sdk。接入过程十分简单,可以以上述 demo 为参考,该 demo 程序只有一个功能:创建一个 web-view,在 web-view 中拦截每个 url,然后调用 sdk 提供的接口检查该 url 是否是有效的支付宝订单支付 url,如果是则将该 url 传给 sdk 提供的支付接口进行支付。
5 ios 接入说明
5.1 配置
步骤1:启动 ide(如 xcode),把 ios 包中的压缩文件中以下文件拷贝到项目文件夹下,并导入到项目工程中。
在 build phases 选项卡的 link binary with libraries 中,增加以下依赖:

其中,需要注意的是:
如果是 xcode 7.0 之后的版本,需要添加 libc .tbd、libz.tbd。
如果是 xcode 7.0 之前的版本,需要添加 libc .dylib、libz.dylib(如下图)。

步骤2:在需要调用 alipaysdk 的文件中,增加头文件引用。
步骤3:配置支付宝客户端返回 url 处理方法。外部存在支付宝客户端,支付宝客户端将处理结果通过 url 返回。如示例 alisdkdemo\apappdelegate.m 文件中,增加引用代码:
@implementation  appdelegate 中增加如下代码:
5.2 接口调用说明
本 sdk 提供的所有接口均定义在 alipaysdk.h 中。sdk 中提供了若干接口,手机网站转 native 支付只用到其中一部分,本文未提到的接口无需关注。
5.2.1 调用提供的接口
app 支付最新版本 15.4.0 新增拦截 支付二合一接口(payinterceptorwithurl),该接口将原来的获取 h5 支付订单信息接口和支付接口进行了合并。接口的调用方式是先调用 defaultservice 获取 sdk 的实例,然后再调用单独提供的功能接口,以 payinterceptorwithurl 为例:
5.2.2 实现手机网站转app支付
1实现 uiwebviewdelegate 协议,拦截 h5 的 url。
2调用新增拦截 支付二合一接口(payinterceptorwithurl...)进行 url 拦截及支付转化;具体查看下文 拦截 支付二合一接口
5.3 拦截 支付二合一接口
本接口首先是个拦截器,拦截支付宝 h5 支付 url。其次是个凯发k8官方网娱乐官方的支付方式转化器,将手机网站凯发k8官方网娱乐官方的支付方式转化为 app 凯发k8官方网娱乐官方的支付方式。
5.3.1 示例代码
5.3.2 参数说明
参数名称
类型
说明
urlstr
nsstring *
手机网站支付的请求 url。
schemestr
nsstring *
接入方 app 注册的 url scheme,供支付完成后跳回接入方 app。
completionblock
objc(^completionblock)(nsdictionary *resultdic)
支付结束之后的回调,其中 completionblock 定义如下:objctypedef void(^completionblock)(nsdictionary \*resultdic);
5.3.3 同步拦截结果返回值说明
返回值类型
描述
bool
如果 urlstr 是有效的支付宝 h5 支付 url,则说明拦截转化成功,返回 yes,商户容器无需再加载该 url。
如果是无效的,则返回 no,商户容器需要继续加载该 url。
5.3.4 异步支付结果返回值说明
支付结束后 sdk 将回调 completionblock,并将支付结果 resultdic(nsdictionary *类型)作为参数传入该 block。resultdic 中主要包含两个字段,如下所示:
参数名称
参数类型
参数说明
resultcode
nsstring *
返回码,标识支付状态,含义如下:
9000——订单支付成功
8000——正在处理中
4000——订单支付失败
5000——重复请求
6001——用户中途取消
6002——网络连接出错
returnurl
nsstring *
支付结束后应当跳转的 url 地址。
5.3.5 接口使用方式
调用本接口对支付宝支付 url 进行拦截和支付转化。当接口调用完成后,该接口会返回一个 bool 类型的同步拦截结果:
如果同步结果返回值为 yes,说明传入的 url 为支付宝支付 url,支付宝 sdk 已经成功拦截该 url,并转化为 app 凯发k8官方网娱乐官方的支付方式,商户容器无需再加载该 url。
如果返回值为 no,说明传入的 url 并非支付宝支付 url,商户容器需要继续加载该url。
当支付结束后,会通过回调的方式返回异步支付结果:
如果返回的支付结果中的 resultcode 为 9000,则表示支付成功,接入方可以提示用户支付成功。
如果返回结果不是 9000,则无需做任何处理。当返回的 returnurl 不为空,建议接入方跳转到该 returnurl。
6 android接入说明
6.1 sdk 接入
以下内容可参考 alipay_demo 的实现。
1在主项目的 build.gradle 中,添加以下内容: 注意:只有"mavencentral"的仓库可以同步到依赖。如果发现获取不到依赖库,请确认下获取的链接是否有问题。可以尝试将mavencentral() 放到所有依赖库的第一个来保证优先从这个仓库获取依赖。
2在 app module 的 build.gradle 中,添加以下内容,将支付宝 sdk 作为项目依赖。
至此,支付宝 sdk 开发资源导入完成。
为正常完成良好的支付流程体验,支付宝 sdk 需要使用以下权限:
开发者需要在 androidmanifest 里配置以上 3 个权限,支付宝 sdk 在运行时需要进行网络连接,并在必要的时候判断网络连接的状态(4g/wi-fi)等来进行支付体验的优化。
6.2 接口调用说明
sdk中提供了若干接口,手机网站转 native 支付只用到其中一部分,本文未提到的接口无需关注。
6.2.1 调用提供的接口
app 支付最新版本 15.4.0 新增拦截 支付二合一接口(payinterceptorwithurl),该接口将原来的获取 h5 支付订单信息接口和支付接口进行了合并。
6.2.2 实现手机网站转native支付
1在接入方 app 中拦截 h5 的 url。
2调用新增拦截 支付二合一接口(payinterceptorwithurl...)进行 url 拦截及支付转化;具体可查看下方 拦截 支付二合一接口
6.3 拦截 支付二合一接口
本接口首先是个拦截器,拦截支付宝 h5 支付 url;其次是个凯发k8官方网娱乐官方的支付方式转化器,将手机网站凯发k8官方网娱乐官方的支付方式转化为app凯发k8官方网娱乐官方的支付方式。
6.3.1 示例代码
6.3.2 参数说明
参数名称
参数类型
参数说明
h5payurl
string
手机网站支付的请求 url。
isshowpayloading
boolean
是否出现 loading。
callback
h5paycallback
异步回调接口。
6.3.3 同步拦截结果返回值说明
返回值类型
描述
boolean
如果 h5payurl 是有效的支付宝 h5 支付 url,则说明拦截转化成功,返回 true,商户容器无需再加载该 url。
如果是无效的,则返回 false,商户容器需要继续加载该 url。
6.3.4 异步支付结果返回值说明
支付结束后 sdk 将回调 h5paycallback,并将支付结果 h5payresultmodel 作为参数传入该 callback。h5payresultmodel 中主要包含两个字段,如下所示:
参数名称
参数类型
参数说明
resultcode
string
返回码,标识支付状态,含义如下:
9000——订单支付成功
8000——正在处理中
4000——订单支付失败
5000——重复请求
6001——用户中途取消
6002——网络连接出错
returnurl
string
支付结束后应当跳转的 url 地址。
6.3.5 接口使用方式
调用本接口对支付宝支付 url 进行拦截和支付转化。当接口调用完成后,该接口会返回一个 boolean 类型的同步拦截结果。
如果同步结果返回值为 true,说明传入的 url 为支付宝支付 url,支付宝 sdk 已经成功拦截该 url,并转化为 app 凯发k8官方网娱乐官方的支付方式,商户容器无需再加载该 url。
如果返回值为 false,说明传入的 url 并非支付宝支付 url,商户容器需要继续加载该 url。
当支付结束后,会通过回调的方式返回异步支付结果。
如果返回的支付结果中的 resultcode 为 9000,则表示支付成功,接入方可以提示用户支付成功。
如果返回结果不是 9000,无需做任何处理。当返回的 returnurl 不为空,建议接入方跳转到该 returnurl。
7 harmony 单框架 接入说明
7.1 配置

7.2 接口调用说明
sdk 中提供了若干接口,手机网站转 native 支付只用到其中一部分,本文未提到的接口无需关注。 本接口首先是个拦截器,拦截支付宝 h5 支付 url;其次是个凯发k8官方网娱乐官方的支付方式转化器,将手机网站凯发k8官方网娱乐官方的支付方式转化为app凯发k8官方网娱乐官方的支付方式。
7.2.1 示例代码
7.2.2 参数说明
参数名称
类型
说明
h5payurl
string
手机网站支付的请求 url。
showpayloading
boolean
是否出现 loading。
callback
(result: map)
异步回调接口。
7.2.3 同步拦截结果返回值说明
返回值类型
描述
boolean
如果 h5payurl 是有效的支付宝 h5 支付 url,则说明拦截转化成功,返回 true,商户容器无需再加载该 url。
如果是无效的,则返回 false,商户容器需要继续加载该 url。
7.2.4 异步支付结果返回值说明
支付结束后 sdk 将回调 callback,并将支付结果 result 作为参数传入该 callback。result 中主要包含两个字段,如下所示:
参数名称
类型
说明
resultcode
string
返回码,标识支付状态,含义如下: 9000——订单支付成功 8000——正在处理中 4000——订单支付失败 5000——重复请求 6001——用户中途取消 6002——网络连接出错
returnurl
string
支付结束后应当跳转的 url 地址。
7.2.5 接口使用方式
调用本接口对支付宝支付 url 进行拦截和支付转化。当接口调用完成后,该接口会返回一个 boolean 类型的同步拦截结果。
如果同步结果返回值为 true,说明传入的 url 为支付宝支付 url,支付宝 sdk 已经成功拦截该 url,并转化为 app 凯发k8官方网娱乐官方的支付方式,商户容器无需再加载该 url。
如果返回值为 false,说明传入的 url 并非支付宝支付 url,商户容器需要继续加载该 url。当支付结束后,会通过回调的方式返回异步支付结果。
如果返回的支付结果中的 resultcode 为 9000,则表示支付成功,接入方可以提示用户支付成功。
如果返回结果不是 9000,无需做任何处理。当返回的 returnurl 不为空,建议接入方跳转到该 returnurl。
8 沙箱联调指南
沙箱环境是开放平台提供给开发者调试接口的环境,详情可查看沙箱环境。请开发者在使用 sdk 时,在支付接口前调用如下方法用于切换沙箱环境与生产环境,如果不使用此方法,默认使用生产环境。
方法调用位置如下图所示:

使用支付宝沙箱版客户端测试:在 开放平台控制台 > 沙箱 > 注意:在生产环境,必须将此代码注释。在沙箱调通接口后,必须在生产环境进行测试与验收,所有返回码及业务逻辑以生产环境为准。
内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图