移动支付SDK2.0应用小结

临时接受支付宝支付任务,最初研究旧版本,后来发现新版本更简单明了优化,使用最新版的,看见旧版的写出来的人多,新版的少,咱这最精炼的通过实践滴,与大家共同进步。

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);

 }

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。