[转载]移动支付SDK2.0应用小结 – ponos – 博客园.
临时接受支付宝支付任务,最初研究旧版本,后来发现新版本更简单明了优化,使用最新版的,看见旧版的写出来的人多,新版的少,咱这最精炼的通过实践滴,与大家共同进步。
1.下载移动支付接口SDK2.0标准版,解压取出:
(1)从客户端alipay-sdk-common文件夹中取出alipaysdk.jar 、alipaysecsdk.jar 、alipayutdid.jar放入新建项目libs中,Android4.0之后只要放入免手动导入,低于这个版本的按旧方法手动导入。
(2)从客户端Demo中取出Base64.java 、Result.java、SignUtils.java放在src中,对应支持的。
2.权限开通:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
3.支付接口调用:
/** * 通过支付宝支付订单 *void * @exception * @since 1.0.0 */ public void pay(final String orderInfo, final String sign){ threadManager.startTaskThread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub // 构造PayTask 对象 PayTask alipay = new PayTask(activity); //拼接成完整支付信息(订单+签名) final String payInfo = orderInfo + "&sign=\"" + sign + "\"" + "&" + getSignType(); // 调用支付接口 String result = alipay.pay(payInfo); payResult = Base64.encode(result.getBytes()); Result rtl = new Result(result); //解析支付结果 //TextUtils.equals(resultStatus, "9000") //支付结果错误码: /*9000:订单支付成功 *8000:正在处理中("支付结果确认中") 代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态) *4000:订单支付失败 *6001:用户中途取消 *6002:网络连接出错 */ final String resultStatus = rtl.resultStatus; //支付错误码 GoloLog.d(ALIPAY_PAY_KEY, "get alipay result status: "+ resultStatus); if (activity != null) { activity.runOnUiThread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub if (TextUtils.equals(resultStatus, "9000")) { //9000:订单支付成功 Toast.makeText(activity, "支付成功", Toast.LENGTH_SHORT).show(); }else { // 判断resultStatus 为非“9000”则代表可能支付失败 // “8000” 代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态) if (TextUtils.equals(resultStatus, "8000")) { Toast.makeText(activity, "支付结果确认中", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(activity, "支付失败", Toast.LENGTH_SHORT).show(); } } } }); } } }); }
4.个人界面调用:
orderInfo 订单内容 strsign 签名 //支付宝支付 private void toAlipay() { // TODO Auto-generated method stub String orderInfo = OrderBean.getOrderInfo(); String strsign = OrderBean.getOrderSign(); alipayPayHandler.pay(orderInfo, strsign); }