基础API跳转
web-view
支付宝小程序想要跳转H5页面,之前只用过 web-view,内嵌H5,这种方式需要配置域名白名单,并且在外链域名的根目录放置校验文件,H5不是自有页面的话,就不能这样去实现。
<web-view
src="https://render.alipay.com/p/s/web-view/index"
onMessage="onmessage">
</web-view>
my.ap.openURL
相对于 web-view,还有一种跳转H5的方式, my.ap.openURL,不需要配置域名,但是非支付宝官网页面只有部分符合开放类目的小程序可以使用,且需要到开放平台配置 openURL 白名单。已知目标页面的 URL 或 scheme,可以使用 my.ap.openURL。
跳转到支付宝官方 H5 页面是不需要配置白名单的。
https://render.alipay.com/p/ 开头的 URL。
https://ds.alipay.com/?scheme= 开头的 URL。
my.ap.openURL({
// 请将 url 替换为后台加白过的跳转地址
url: 'https://please.replace.me/page',
success: (res) => console.log('openURL success'),
fail: (err) => my.alert({ title: 'openURL fail: ' + JSON.stringify(err) })
});
web-view 和 my.ap.openURL 两者比较
两者都有不同的权限要求,下面是从文档拷过来的优劣对比表格,可以对照着选用合适的方式。
跳转方式 优势 劣势
内嵌H5页面,使用 web-view 内嵌H5 流量归属于小程序本身。不限行业,无需审批。可以在H5页面上调用部分小程序的接口能力。 需要完成 H5域名配置
外跳H5页面,使用 my.ap.openURL 外跳H5 无需H5域名配置。可以免审跳转支付宝官方H5运营页面。 流量不再归属于小程序本身。跳转到非支付宝官方页面只针对部分行业开放,并且需要完成平台侧审批流程(官方H5运营页面无此限制)。
my.ap.navigateToAlipayPage
my.ap.navigateToAlipayPage 是用于跳转到支付宝官方业务或运营活动页面的 API。这里利用不需要配置白名单的域名和scheme语法可以实现跳转。
// 支付宝客户端的标准scheme为:alipays://platformapi/startapp?appId=H5App自身的appId
// 但如果是某些运营页之类的单独页面,没有自己的appId,
// 可以使用Nebula容器的通用浏览器模式appId=20000067 来启动,
// 同时将需要打开的H5页面url经过encode编码后设置到url参数内
const url = 'https://www.baidu.com';
// https://render.alipay.com/p/ 不需要配置白名单
// 开了个后门,在不需要配置白名单的链接后面拼上自己的链接
const link = 'https://render.alipay.com/p/s/i/?scheme=' + encodeURIComponent('alipays://platformapi/startapp?appId=20000067&url=' + encodeURIComponent(url));
my.ap.navigateToAlipayPage({
path: link
});
JSAPI跳转
JSAPI 是支付宝钱包提供的丰富的原生API功能,开发者可以使用它们方便调用支付宝提供的各种能力,达到媲美原生应用的体验,如页面跳转,支付功能等。
其中有一个跳转页面的API,pushWindow,用来打开一个新的页面,系统自带转场动画。
注意点
scheme 跳转请尽量使用 location.href 而不是 pushWindow。用 schema 的方式打开页面已经禁止使用,仅用于向下兼容老业务。
与 location.href 的区别,pushWindow 类同于 PC 浏览器的新开标签页,每个 window 都是一个新的标签页,因此原页面仅仅是被压到后台,状态始终保持,JS 也会继续运行。location.href 则是在当前标签页直接跳转。
JSAPI是给H5使用的,而不是支付宝小程序。
现有的功能代码这样使用,应该是因为白名单限制,基础API中的前两种方式都不适合,才被迫使用JSAPI和禁止使用的scheme的。navigateToAlipayPage 是最近新发的文章里才看到可以支持支付宝小程序跳转H5连接(无需添加白名单) 。但是 navigateToAlipayPage 也已经不维护,而是用 openURL 替代。
my.call('pushWindow', {
url: `alipays://platformapi/startapp?appId=20000067&url=${encodeURIComponent(
'https://xxxx')}`
});
在小程序直接使用https链接会导致页面访问受限,无法打开,用scheme的方式可以跳过限制。但是不应该这么做,只是单纯的记录一下有这种操作。
startApp
需要申请startApp权限,可以跳转任意URL
my.call('startApp', {
appId: '20000067',
param: {
url: 'https://xxx'
}
});
总结
综上,跳转方式需具体情况具体分析,选择能力范围内最适合的方式,尽量不要选择禁用和停止维护的方法。这里不讨论支付宝官方页面,对自己人并没有太多限制。
跳转方式 适用范围
web-view 方便在H5根目录下放置校验文件
my.ap.openURL 在限制类目范围内
my.ap.navigateToAlipayPage 无限制,但是此API已停止维护
pushWindow 无限制,但是pushWindow 禁止使用scheme的方式打开页面
startApp 可以申请到支付宝的startApp权限,很难
我需要使用ActiveMerchant库在我们的一个Rails应用程序中设置支付解决方案。尽管这个问题非常主观,但人们对主要网关(BrainTree、Authorize.net等)的体验如何?它必须:处理定期付款。有能力记入个人帐户。能够取消付款。有办法存储用户的付款详细信息(例如Authotize.netsCIM)。干杯 最佳答案 ActiveMerchant很棒,但在过去一年左右的时间里,我在使用它时发现了一些问题。首先,虽然某些网关可能会得到“支持”——但并非所有功能都包含在内。查看功能矩阵以确保完全支持您选择的网关-http
我在使用ExhuberantCtags跳转到Rubybang方法时遇到问题。我已经搜索过其他有类似问题的人,但找不到任何东西。可以使用以下小型Ruby类显示该问题的示例:classHellodefstartmethod!enddefmethod#Blahenddefmethod!#Blahendend当ctags-R.在此文件上运行时,生成的tags文件包含以下两行,表明这两种方法都是在生成时发现的:methodtest.rb/^defmethod$/;"fclass:Hellomethod!test.rb/^defmethod!$/;"fclass:Hello但是,如果我将光标放
前言微信支付是企业级项目中经常使用到的功能,作为后端开发人员,完整地掌握该技术是十分有必要的。一、申请流程和步骤图1-1注册微信支付账号获取微信小程序APPID获取微信商家的商户ID获取微信商家的API私钥配置微信支付回调地址绑定微信小程序和微信支付的关系搭建SpringBoot工程编写后台支付接口发布部署接口服务项目使用微信小程序或者UniAPP调用微信支付功能支付接口的封装配置jwt或者openid的token派发原生微信小程序完成支付对接二、注册商家2.1商户平台商家或者企业想要通过微信支付来进行商品的销售,必须先通过微信平台(pay.weixin.qq.com)去将商家进行注册。注册成
更新:我想通了。Ctrl-F仅在未选择我正在搜索的方法时有效。游标只需要在方法名中。我刚升级到TextMate2。当我选择一个方法并使用Ctrl+F转到它的定义时,我得到:>FailurerunningJumptoMethodDefinition这是痕迹:/Users/ilikepie/Library/ApplicationSupport/TextMate/Managed/Bundles/RubyonRails.tmbundle/Support/lib/rails/text_mate.rb:54:in`method_missing':undefinedmethod`current_li
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭8年前。Improvethisquestion使用Ruby(也许还有Rails)工作。是否有任何方法可以接受和管理Ruby或Rails的比特币支付?
我正在使用vim进行ruby、php和perl开发。有快捷方式%可以从block(子例程/函数/方法/if)的开头跳转到结尾,反之亦然。对我来说,ruby中的do/end标记上的%不起作用。我如何用vim做到这一点? 最佳答案 matchitplugin允许匹配的不仅仅是括号和注释。可以找到ruby版本here. 关于ruby-如何使用Vim从do跳转到Rubyblock的末尾?,我们在StackOverflow上找到一个类似的问题: https://
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion我想使用PaypalWebsitePaymentsStandard在我的Rails网站上实现支付解决方案。(参见https://www.paypal.com/IntegrationCenter/ic_standard_home.html
在我的网页上,我尝试按照手册使用JavaScript实现PayPal结帐:https://developer.paypal.com/docs/checkout/一切都适用于标准选项。例如,这很好用:paypal.Buttons({createOrder:function(data,actions){returnactions.order.create({purchase_units:[{amount:{currency_code:'EUR',value:'120.16'},description:'PurchaseUnittestdescription',custom_id:'6473
一、问题描述 微信小游戏的内购支付,接入的是米大师支付。先简单介绍下通用逻辑:1)、用户点击游戏内下单2)、客户端构造订单物品等参数并发给服务端3)、服务端接收后,生成唯一订单号等内部逻辑处理后,返回客户端下单需要的参数4)、客户端调用微信下单接口,wx.requestMidasPayment(Objectobject)|微信开放文档,并将结果上报给服务端5)、服务端根据客户端的支付上报结果,分时轮询对应订单的用户余额6)、对用户余额进行扣款,并修改对应订单状态7)、通知游戏服务端订单状态,并发货给用户初看,逻辑很清晰,没啥问题,但是第4步经常会返回错误的结果(客户端),比如没有返回(比
在我的HTML页面中,我需要检查是否安装了AdobeFlash播放器。如果没有,我想自动跳转到另一个HTML页面,告诉用户需要Flash播放器。我正在使用JavaScript检查Flash播放器是否可用,使用'JavaScriptFlashdetectionlibrary'.我的HTML页面的主体如下所示:if(!FlashDetect.installed){alert("Flash9.0.115isrequiredtoenjoythissite.");}......检测有效:我可以看到警报,但我没有找到跳转到另一个HTML页面的方法。有什么提示吗?编辑:有一些我没有提到但似乎有所