適用於個人開發者開發的APP中,讓用戶打賞給作者,實質上進行支付寶轉賬到指定賬號的功能。 一、打開‘支付寶’APP ,點擊'收款'功能 ,將收款碼(二維碼)圖片保存到手機上(進一步移到電腦上)。 二、找一個線上二維碼解析網頁工具,解析一下收款碼圖片。將最後一個/後面的字元串複製出來,這是需要使用的部 ...
適用於個人開發者開發的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/aehvyvf4taua18zo6e 最後那段 * @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); }