Android app对接支付宝电子发票功能

        上一篇介绍了 对接微信电子发票的功能  里面大致介绍了业务逻辑  环境配置 和一部分核心代码  https://www.jianshu.com/p/51810ed2f0fc   今天来实现对接支付宝的电子发票功能

业务场景差不多  第三方app唤醒 支付宝的电子发票列表 选择发票 导入第三方app  现在让我们跟着官方文档来进行开发吧

    1  请求链接

支付宝的电子发票功能 是通过外部scheme链接来调用的  请求链接可以通过webview的方式加载  其中请求链接 由两部分组成 根据官方文档的说明  https://docs.open.alipay.com/10691/bv8s88  完整的链接包括有   发票输出链接(调用支付宝app的链接)+ 发票输出回调链接 (支付宝把选择的数据返回给app) 构造请求链接 有特定的组合要求      支付宝发票输出组件固定链接地址为:/www/invoiceSelect.htm?scene=#发票输出业务场景#&einvMerchantId=#企业标志#&serverRedirectUrl=#步骤1中urlEncode后的发票输出回调地址#

参数说明

    //唤起支付宝固定链接

String url="https://render.alipay.com/p/s/i?appId=20000920&startMultApp=YES&url=";

        //ISV回调地址

        String isvUrl="http://html.qingyuko.com/ticket2.html";

        //编码之后的ISV回调地址

        String encodeIsvUrl=UrlUtils.encode(isvUrl);

        //发票输出组件固定链接

        String alipayUrl="/www/invoiceSelect.htm?scene=INVOICE_EXPENSE&einvMerchantId=9131000074027295XF&serverRedirectUrl="+encodeIsvUrl;

        //编码之后的发票输出组件链接

        String encodeAlipayUrl=UrlUtils.encode(alipayUrl);

        //唤起发票输出组件的完整链接

        String alipayLandingUrl=url+encodeAlipayUrl;

注意url中的appid是固定的支付宝发票功能的数据 不是我们申请的那个appid  ,其中配置发票回调的链接可以使用scheme协议的方式  提前在需要接收数据的activity 的mainfest文件中 配置 相关数据

mainfest配置文件

其中xxx 就是schme协议中链接地址 一般都是应用的名称缩写,这样配置好之后 回调链接地址为xxx://  最后组合好之后的链接格式如下图所示 

请求发票链接

    2 加载链接  

    一般可以使用webview进行加载 本人的项目中因为使用了cordova的框架  cordova的框架对于外部链接有诸多限制  最明显的便是白名单的拦截  在调试的过程中出现了  URL blocked by whitelist  所以需要对链接进行筛选  

webview的链接加载

        需要在shouldOverrideUrlLoading的方法中对 链接进行拦截处理

                    else if (url.startsWith("alipays://")){

try {

// scheme跳转到支付宝

        final Intent intent =new Intent(Intent.ACTION_VIEW,

            Uri.parse(url));

        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK

            | Intent.FLAG_ACTIVITY_SINGLE_TOP);

        startActivity(intent);

    }catch (Exception e) {

// 防止没有安装的情况

        e.printStackTrace();

    }

return true;

}

alipays:// 就是支付宝app的scheme协议中应用名称 这个是固定写死的  

经过这两个步骤就能够打开支付宝的发票列表界面了

3  选择发票数据回调

    

    

你可能感兴趣的:(Android app对接支付宝电子发票功能)