ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【GooglePay支付】GooglePay支付通道对接(二)

2022-06-07 16:03:15  阅读:389  来源: 互联网

标签:google GooglePay 账号 -- 对接 API https 支付 setProperty


需求背景

  接上文:GooglePay支付通道对接(一) 本文主要整理和总结在对接过程中的出现的问题以及解决的办法

问题QA

  后端:SpringCloud + SpringBoot(版本号:2.1.x)+MySQL +Redis+Maven
  前端:安卓 APP
  Google 支付 Maven依赖

      <!--谷歌支付sdk-->
        <dependency>
            <groupId>com.google.apis</groupId>
            <artifactId>google-api-services-androidpublisher</artifactId>
            <version>v3-rev24-1.24.1</version>
        </dependency>

  问题1
    客户端购买完成,服务端验证purchaseToken时网络无法连通问题
    例如提示

Exception in thread ...... java.net.SocketTimeoutException: connect timed out
    ...省略...
    at com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:113)

  原因
    由于国内访问谷歌服务器以及相关的API被墙,导致出现连接失败
  解决方式
    方案一: 如果在服务器上调试,需要一台可以连接外网的服务器
    方案二: 如果在本地调试,需要先打开VPN,然后将以下配置添加代码中

        //下方的 1080端口 为 VPN所监听的本地的端口,详情可以打开自己的VPN查看
        Properties systemProperties = System.getProperties();
        systemProperties.setProperty("http.proxyHost", "127.0.0.1");
        systemProperties.setProperty("http.proxyPort", "1080");
        systemProperties.setProperty("https.proxyHost", "127.0.0.1");
        systemProperties.setProperty("https.proxyPort", "1080");
        systemProperties.setProperty("socksProxyHost", "127.0.0.1");
        systemProperties.setProperty("socksProxyPort", "1080");
        systemProperties.setProperty("http.nonProxyHosts","localhost");
        systemProperties.setProperty("https.nonProxyHosts","localhost");
        System.setProperty("sun.net.client.defaultConnectTimeout", String.valueOf(8000));// (单位:毫秒)
        System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2,SSLv3");        

  问题2
    订单支付成功,后端验证支付订单时提示
    Error 403: Google Play Android Developer API has not been used in project

  原因
    当前开发者账号没有关联安卓应用

  解决方式
    登录  谷歌开发者后台 https://play.google.com/console/developers
    左侧菜单栏:设置--API权限--Google Cloud项目
    查看 自己的项目是否有关联当前开发者账号 如果没有关联 ,则需要关联
    查看 Play Android Developer API 是否时启用状态,如果不是启用状态,则需要设置为启动
    

 

 

 

  问题3
    订单支付成功,后端验证支付订单时提示
    Error 403: The project id used to call the Google Play Developer API has not been linked in the Google Play Developer Console

  原因
    使用服务账号调用谷歌API时,服务账号与APP没有绑定关系

  解决方式
    
登录  谷歌开发者后台 https://play.google.com/console/developers
    左侧菜单栏:设置--API权限--服务账号
    1.查看当前开发者账号下是否有服务账号,以及调用查看订单的服务者账号在当前服务账号列表内,如果没有,可以新创建一个服务账号
    2.查看当前服务账号是否有权限,如果是做支付业务,则需要开通对应的权限,
      左侧菜单栏:用户和权限--->找到对应的服务者账号-->服务账号-->查看权限  见下图2
            权限-->账号权限   勾选财务相关的权限  见下图3
  

  问题4
    订单支付成功,后端验证支付订单时提示
    Error 401: The current user has insufficient permissions to perform the requested operation

  原因
    使用服务账号调用谷歌API时,当前服务者账号没有权限执行当前操作(查询操作)

  解决方式
    
登录  谷歌开发者后台 https://play.google.com/console/developers
    左侧菜单栏:
      所有应用-->选择自己的那个应用-->查看应用 见图1和图2
      商品-->查看商品-->修改名称或者说明    见图3
    

 

 

 

 

 

 

 

 

  问题5
    订单支付成功,后端验证支付订单时需要对身份进行认证
    认证方式这里有两种
    1.通过服务账号完成(结合Java SDK完成)
    2.通过Oauth2的方式,获取accessToken后,调用查询支付订单的restAPI完成

  解决方式
    
文档地址 https://developers.google.com/android-publisher/getting_started
    如何配置Oauth2和服务账号,见图1
  

 

 

 


    


参考资料

  https://blog.csdn.net/qq_37611096/article/details/118030549 
  https://icode.best/i/51498834207457
  https://www.likecs.com/show-66686.html
  https://blog.csdn.net/Blog_Sun/article/details/108261941                      
  https://www.dandelioncloud.cn/article/details/1439375725127360514   (连接问题)
  https://developers.google.com/android-publisher/getting_started (谷歌开发者API)
  https://developers.google.com/android-publisher  (谷歌API地址)

  

标签:google,GooglePay,账号,--,对接,API,https,支付,setProperty
来源: https://www.cnblogs.com/july-sunny/p/16273821.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有