• 支付宝授权


    首先从应用服务器获取验证字符串,然后去支付宝请求验证

        private void startAliAuth(final String info) {
            Runnable authRunnable = new Runnable() {
    
                @Override
                public void run() {
                    AuthTask authTask = new AuthTask(WithdrawApplyActivity.this);
                    Map<String, String> result = authTask.authV2(info, true);
    
                    Message msg = new Message();
                    msg.what = 1;
                    msg.obj = result;
                    mHandler.sendMessage(msg);
                }
            };
            Thread authThread = new Thread(authRunnable);
            authThread.start();
        }

    获取验证结果,并上报给应用服务器

        private Handler mHandler = new Handler() {
            public void handleMessage(Message msg) {
                if (msg.what == 1) {
                    AuthResult authResult = new AuthResult((Map<String, String>) msg.obj, true);
                    if (TextUtils.equals(authResult.getResultStatus(), "9000")) {
                        if (authResult.getResultCode().equals("200")) {
                            showProgressDialog("正在绑定账户");
                            //TODO 将authResult.getResult()上报给应用服务器
                        } else {
                            DadaToast.showToast(context, "授权失败");
                        }
                    } else if (authResult.getResultStatus().equals("6001")) {
                        DadaToast.showToast(context, "用户取消");
                    } else if (authResult.getResultStatus().equals("4000")) {
                        DadaToast.showToast(context, "支付宝异常");
                    } else if (authResult.getResultStatus().equals("6002")) {
                        DadaToast.showToast(context, "网络连接出错");
                    } else {
                        DadaToast.showToast(context, "授权失败");
                    }
                }
            }
        };

    完成验证 

    public class AuthResult {
    
        private String resultStatus;
        private String result;
        private String memo;
        private String resultCode;
        private String authCode;
        private String alipayOpenId;
    
        public AuthResult(Map<String, String> rawResult, boolean removeBrackets) {
            if (rawResult == null) {
                return;
            }
    
            for (String key : rawResult.keySet()) {
                if (TextUtils.equals(key, "resultStatus")) {
                    resultStatus = rawResult.get(key);
                } else if (TextUtils.equals(key, "result")) {
                    result = rawResult.get(key);
                } else if (TextUtils.equals(key, "memo")) {
                    memo = rawResult.get(key);
                }
            }
    
            String[] resultValue = result.split("&");
            for (String value : resultValue) {
                if (value.startsWith("alipay_open_id")) {
                    alipayOpenId = removeBrackets(getValue("alipay_open_id=", value), removeBrackets);
                    continue;
                }
                if (value.startsWith("auth_code")) {
                    authCode = removeBrackets(getValue("auth_code=", value), removeBrackets);
                    continue;
                }
                if (value.startsWith("result_code")) {
                    resultCode = removeBrackets(getValue("result_code=", value), removeBrackets);
                    continue;
                }
            }
    
        }
    
        private String removeBrackets(String str, boolean remove) {
            if (remove) {
                if (!TextUtils.isEmpty(str)) {
                    if (str.startsWith(""")) {
                        str = str.replaceFirst(""", "");
                    }
                    if (str.endsWith(""")) {
                        str = str.substring(0, str.length() - 1);
                    }
                }
            }
            return str;
        }
    
        @Override
        public String toString() {
            return "resultStatus={" + resultStatus + "};memo={" + memo + "};result={" + result + "}";
        }
    
        private String getValue(String header, String data) {
            return data.substring(header.length(), data.length());
        }
    
        /**
         * @return the resultStatus
         */
        public String getResultStatus() {
            return resultStatus;
        }
    
        /**
         * @return the memo
         */
        public String getMemo() {
            return memo;
        }
    
        /**
         * @return the result
         */
        public String getResult() {
            return result;
        }
    
        /**
         * @return the resultCode
         */
        public String getResultCode() {
            return resultCode;
        }
    
        /**
         * @return the authCode
         */
        public String getAuthCode() {
            return authCode;
        }
    
        /**
         * @return the alipayOpenId
         */
        public String getAlipayOpenId() {
            return alipayOpenId;
        }
    }
  • 相关阅读:
    Python接口测试学习笔记(五)
    Python接口测试学习笔记(四)
    Python接口测试学习笔记(三)
    Python接口测试学习笔记(二)
    Caused by: java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'.
    Linux虚拟机安装MySQL8.0数据库
    剑指offer题解02-10
    Git使用的常用命令
    使用IDEA整合SSM框架
    IntelliJ IDEA 连接数据库 详细过程
  • 原文地址:https://www.cnblogs.com/wenhui92/p/6360975.html
Copyright © 2020-2023  润新知