Android打賞功能:支付寶轉賬


  適用於個人開發者開發的APP中,讓用戶打賞給作者,實質上進行支付寶轉賬到指定賬號的功能。

  一、打開‘支付寶’APP ,點擊'收款'功能 ,將收款碼(二維碼)圖片保存到手機上(進一步移到電腦上)。

  二、找一個在線二維碼解析網頁工具,解析一下收款碼圖片。將最后一個/后面的字符串復制出來,這是需要使用的部分

  三、添加如下的一個工具類

public class AlipayUtil {
    // 支付寶包名
    private static final String ALIPAY_PACKAGE_NAME = "com.eg.android.AlipayGphone";

    // 舊版支付寶二維碼通用 Intent Scheme Url 格式
    private static final String INTENT_URL_FORMAT = "intent://platformapi/startapp?saId=10000007&" +
            "clientVersion=3.7.0.0718&qrcode=https%3A%2F%2Fqr.alipay.com%2F{urlCode}%3F_s" +
            "%3Dweb-other&_t=1472443966571#Intent;" +
            "scheme=alipayqr;package=com.eg.android.AlipayGphone;end";

    /**
     * 打開轉賬窗口
     * 舊版支付寶二維碼方法,需要使用 https://fama.alipay.com/qrcode/index.htm 網站生成的二維碼
     * 這個方法最好,但在 2016 年 8 月發現新用戶可能無法使用
     *
     * @param activity Parent Activity
     * @param urlCode  手動解析二維碼獲得地址中的參數,例如 https://qr.alipay.com/aehvyvf4taxxxxxxx 最后那段
     * @return 是否成功調用
     */
    public static boolean startAlipayClient(Activity activity, String urlCode) {
        return startIntentUrl(activity, INTENT_URL_FORMAT.replace("{urlCode}", urlCode));
    }

    /**
     * 打開 Intent Scheme Url
     *
     * @param activity      Parent Activity
     * @param intentFullUrl Intent 跳轉地址
     * @return 是否成功調用
     */
    public static boolean startIntentUrl(Activity activity, String intentFullUrl) {
        try {
            Intent intent = Intent.parseUri(
                    intentFullUrl,
                    Intent.URI_INTENT_SCHEME
            );
            activity.startActivity(intent);
            return true;
        } catch (URISyntaxException e) {
            e.printStackTrace();
            return false;
        } catch (ActivityNotFoundException e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 判斷支付寶客戶端是否已安裝,建議調用轉賬前檢查
     *
     * @param context Context
     * @return 支付寶客戶端是否已安裝
     */
    public static boolean hasInstalledAlipayClient(Context context) {
        PackageManager pm = context.getPackageManager();
        try {
            PackageInfo info = pm.getPackageInfo(ALIPAY_PACKAGE_NAME, 0);
            return info != null;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
            return false;
        }
    }
}

  

  四、調用方法,傳入第二部獲取的字符串即可實現 用戶打開向指定支付寶賬戶轉賬的界面

          if (AlipayUtil.hasInstalledAlipayClient(this)){
                    AlipayUtil.startAlipayClient(this,"XXXXXXXXXXXXXXXX"); // 第二步獲取到的字符串
                }else{
                    TastyToast.makeText(this, "未檢測到支付寶,無法實現打賞功能", TastyToast.LENGTH_SHORT, TastyToast.CONFUSING);
                }

 


免責聲明!

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



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