App支付寶登錄授權


一、在支付寶開放平台申請App應用,並且配置后台信息

     https://openhome.alipay.com/platform/appManage.htm#/apps

     填寫自己的申請信息

 

 

添加應用功能

 

 

 

開發者在開發過程中,可以添加自己需要的功能到“功能列表”。不同的功能會有不同的使用條件,如果某個功能的使用條件為簽約,則使用者在使用此功能前,需要簽約對應的產品。自研型應用和第三方應用的簽約方式略有差異,具體簽約方式可參考 簽約功能。 

配置應用環境

https://docs.open.alipay.com/200/105310

 

 

  

 密鑰生成:使用工具生成

 https://docs.open.alipay.com/291/105971

 提交應用審核

二、支付寶登錄流程圖

 

步驟一:使用App進行授權確認:

           調用原生支付寶Sdk喚醒支付寶進行授權:https://docs.open.alipay.com/218/105325/

 

           備注:參數說明:

         app_id:

         

 

 

         pid:

         

 

         taget_id:后台自定義參數,自己測試也可以隨便定義;

         RSA2_PRIVATE和RSA_PRIVATE為簽名方式的私鑰,在申請配置信息會有 

public static final String RSA2_PRIVATE = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwgg"

        

         一般放在后台,測試可以放到移動端進行測試;

        Android端集成SDK進行

        1.調用方法   

  /**
     * 支付寶賬戶授權業務示例
     */
    private Activity mContext;
    private OnAliCallBack onAliCallBack;

    public void startAuthorization(final Activity mContext, OnAliCallBack onAliCallBack) {
        this.onAliCallBack = onAliCallBack;
        this.mContext = mContext;
        if (TextUtils.isEmpty(PID) || TextUtils.isEmpty(APPID)
                || (TextUtils.isEmpty(RSA2_PRIVATE) && TextUtils.isEmpty(RSA_PRIVATE))
                || TextUtils.isEmpty(TARGET_ID)) {
            Toast.makeText(mContext, "參數不全", Toast.LENGTH_SHORT).show();
            return;
        }

        /*
         * 這里只是為了方便直接向商戶展示支付寶的整個支付流程;所以Demo中加簽過程直接放在客戶端完成;
         * 真實App里,privateKey等數據嚴禁放在客戶端,加簽過程務必要放在服務端完成;
         * 防止商戶私密數據泄露,造成不必要的資金損失,及面臨各種安全風險;
         *
         * authInfo 的獲取必須來自服務端;
         */
        boolean rsa2 = (RSA2_PRIVATE.length() > 0);
        Map<String, String> authInfoMap = OrderInfoUtil2_0.buildAuthInfoMap(PID, APPID, TARGET_ID, rsa2);
        String info = OrderInfoUtil2_0.buildOrderParam(authInfoMap);
        Log.e("ALi", info);
        String privateKey = rsa2 ? RSA2_PRIVATE : RSA_PRIVATE;
        String sign = OrderInfoUtil2_0.getSign(authInfoMap, privateKey, rsa2);
        final String authInfo = info + "&" + sign;
        Runnable authRunnable = new Runnable() {
            @Override
            public void run() {
                // 構造AuthTask 對象
                AuthTask authTask = new AuthTask(mContext);
                // 調用授權接口,獲取授權結果
                Map<String, String> result = authTask.authV2(authInfo, true);
                Message msg = new Message();
                msg.what = SDK_AUTH_FLAG;
                msg.obj = result;
                mHandler.sendMessage(msg);
            }
        };
        // 必須異步調用
        Thread authThread = new Thread(authRunnable);
        authThread.start();
    }

 

   

2.回調信息

private static final int SDK_AUTH_FLAG = 2;
    @SuppressLint("HandlerLeak")
    private Handler mHandler = new Handler() {
        @SuppressWarnings("unused")
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case SDK_AUTH_FLAG: {
//                    @SuppressWarnings("unchecked")
                    AuthResult authResult = new AuthResult((Map<String, String>) msg.obj, true);
                    String resultStatus = authResult.getResultStatus();
                    // 判斷resultStatus 為“9000”且result_code
                    // 為“200”則代表授權成功,具體狀態碼代表含義可參考授權接口文檔
                    if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                        // 獲取alipay_open_id,調支付時作為參數extern_token 的value
                        // 傳入,則支付賬戶為該授權賬戶
                        Toast.makeText(mContext, "授權成功", Toast.LENGTH_SHORT).show();
                    } else {
                        // 其他狀態值則為授權失敗
                        Toast.makeText(mContext, "授權失敗", Toast.LENGTH_SHORT).show();
                    }
                    break;
                }
                default:
                    break;
            }
        }

        ;
    };

 

    

       3.授權成功之后,通過authResult.getAuthCode()  請求后台,后台通過authcode獲取Token請求用戶信息,把需要信息傳給移動端

       移動端Demo如下:PostOfficeTwo

 

 

 

   

       

 

 
        

 

    

 

 

 

 

 

 

 

     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM