js 解决Safari浏览器中实现支付宝网页支付无法拉取支付宝APP的问题

在Android设备上,网页能正常拉起支付宝APP支付,但iOS Safari浏览器不行。通过修改支付页面的跳转方式,不直接返回页面,而是获取订单成功后的<a>标签href,使用window.location.href=url来访问,成功解决了Safari中无法拉起支付宝APP的问题。
摘要由CSDN通过智能技术生成

简单介绍项目情况:

支付宝支付

第三方公司提供支付接口,返回结果是一个加密的完整的网页。

自己写的下单业务这些。但是在页面上实现支付过程的时候,在Android手机上面无论哪种类型的浏览器都能实现自动拉取支付宝APP进行支付

返回结果:

result:{"payOrderId":"P0020190604110618000381","sign":"8288C95DB8A511E82B08FBB4FC1EA260","resCode":"SUCCESS","payParams":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9InpoLWNtbi1IYW5zIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSx1c2VyLXNjYWxhYmxlPTAiPgogICAgPHRpdGxlPuWOu+aUr+S7mDwvdGl0bGU+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHA6Ly9jZG4uYm9vdGNzcy5jb20vd2V1aS8xLjEuMS9zdHlsZS93ZXVpLm1pbi5jc3MiPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwOi8vY2RuLmJvb3Rjc3MuY29tL2pxdWVyeS13ZXVpLzEuMC4xL2Nzcy9qcXVlcnktd2V1aS5taW4uY3NzIj4KPC9oZWFkPgo8Ym9keSBvbnRvdWNoc3RhcnQ+CjxkaXYgY2xhc3M9IndldWktbXNnIj4KICAgIDxkaXYgY2xhc3M9IndldWktbXNnX19pY29uLWFyZWEiPgogICAgICAgIDxpbWcgc3JjPSJodHRwOi8vd3d3Lnlseng2Ni5jb20vcGF5aWNvbi96ZmIucG5nIiBzdHlsZT0idHJhbnNmb3JtOnNjYWxlKDAuNSkiLz4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0id2V1aS1mb3JtLXByZXZpZXciPgogICAgICAgIDxkaXYgY2xhc3M9IndldWktZm9ybS1wcmV2aWV3X19oZCI+CiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0id2V1aS1mb3JtLXByZXZpZXdfX2xhYmVsIj7ku5jmrL7ph5Hpop08L2xhYmVsPgogICAgICAgICAgICA8ZW0gY2xhc3M9IndldWktZm9ybS1wcmV2aWV3X192YWx1ZSI+wqUgMTAwLjAwPC9lbT4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJ3ZXVpLWZvcm0tcHJldmlld19fYmQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3ZXVpLWZvcm0tcHJldmlld19

要使用SpringBoot实现拉起支付功能,需要先接入相应的支付渠道或支付平台,例如支付宝、微信支付等。接入成功后,可以在SpringBoot编写相应的控制器和服务类,实现拉起支付的功能。 以下是一个使用SpringBoot实现支付宝支付的示例代码: 首先,在pom.xml文件添加支付宝SDK的依赖: ```xml <dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>3.3.0.ALL</version> </dependency> ``` 接着,在application.properties文件配置支付宝相关的参数: ```properties # 支付宝网关 alipay.gatewayUrl=https://openapi.alipay.com/gateway.do # 应用ID alipay.appId=应用ID # 商户私钥 alipay.merchantPrivateKey=商户私钥 # 支付宝公钥 alipay.alipayPublicKey=支付宝公钥 # 编码格式 alipay.charset=UTF-8 # 签名类型 alipay.signType=RSA2 ``` 然后,编写一个支付控制器: ```java @RestController @RequestMapping("/api/pay") public class PayController { @Autowired private AlipayConfig alipayConfig; @Autowired private AlipayService alipayService; @PostMapping("/alipay") public String alipay(@RequestParam("orderId") String orderId, @RequestParam("amount") String amount) { AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest(); alipayRequest.setReturnUrl(alipayConfig.getReturnUrl()); alipayRequest.setNotifyUrl(alipayConfig.getNotifyUrl()); AlipayTradePayModel model = new AlipayTradePayModel(); model.setOutTradeNo(orderId); model.setTotalAmount(amount); model.setSubject("订单支付"); model.setProductCode("FAST_INSTANT_TRADE_PAY"); alipayRequest.setBizModel(model); try { return alipayService.pageExecute(alipayRequest).getBody(); } catch (AlipayApiException e) { e.printStackTrace(); } return null; } } ``` 其,AlipayConfig是一个配置类,用于读取配置文件支付宝相关参数;AlipayService是一个支付服务类,用于调用支付宝API实现支付功能。 最后,在启动类上添加@EnableAutoConfiguration和@ComponentScan注解,启动SpringBoot应用程序即可。 以上仅是一个简单的示例,实际应用还需要考虑安全性、异常处理等问题
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值