android 支付宝支付

思路:十分简单,调用支付宝提供的官方方法,搞定。

第一步:

下载支付宝官方的sdk,导入项目中:https://docs.open.alipay.com/54/104509


(忽略adapter-rxjava-2.0.0-beta3.jar这个包,与支付无关)


第二步:加入build.grade中

compile files('libs/alipaySdk-20180601.jar')

(注意包的时间,必须鱼libs下相对应)

第三步:调用支付宝方法,payV2()是重点:

 Runnable payRunnable = new Runnable() {

                            @Override
                            public void run() {
                                PayTask alipay = new PayTask(HospitalYmOrderDetailActivity.this);

//                                String result = alipay.payV2(orderInfo,true);

                                Map<String, String> result = alipay.payV2(orderInfo,true);

                                Message msg = new Message();
                                msg.what = SDK_PAY_FLAG;
                                msg.obj = result;
                                mHandler.sendMessage(msg);
                            }
                        };
                        // 必须异步调用
                        Thread payThread = new Thread(payRunnable);
                        payThread.start();
其中payV2的两个参数orderInfo,true,都不用我们管,orderInfo是服务器生成的,true写死就可以,官方解释true: 用户在商户app内部点击付款,是否需要一个loading做为在钱包唤起之前的过渡,这个值设置为true,将会在调用pay接口的时候直接唤起一个loading,直到唤起H5支付页面或者唤起外部的钱包付款页面loading才消失。(建议将该值设置为true,优化点击付款到支付唤起支付页面的过渡过程。)

到此成功。

给出Handler和它用到的一个实体类代码:

Handler:

private Handler mHandler = new Handler() {
    @SuppressWarnings("unused")
    public void handleMessage(Message msg) {
        switch (msg.what) {
            case SDK_PAY_FLAG: {
                @SuppressWarnings("unchecked")
                PayResult payResult = new PayResult((Map<String, String>) msg.obj);
                /**
                 对于支付结果,请商户依赖服务端的异步通知结果。同步通知结果,仅作为支付结束的通知。
                 */
                String resultInfo = payResult.getResult();// 同步返回需要验证的信息
                String resultStatus = payResult.getResultStatus();
                // 判断resultStatus 为9000则代表支付成功
                if (TextUtils.equals(resultStatus, "9000")) {
                    // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
                    Toast.makeText(HospitalYmOrderDetailActivity.this, "支付成功", Toast.LENGTH_SHORT).show();

                    Intent intent = new Intent();



                } else {
                    // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
                    Toast.makeText(HospitalYmOrderDetailActivity.this, "支付失败", Toast.LENGTH_SHORT).show();
                }
                break;
            }
            default:
                break;
        }
    };
};

payResult:

public class PayResult {
   private String resultStatus;
   private String result;
   private String memo;

   public PayResult(Map<String, String> rawResult) {
      if (rawResult == null) {
         return;
      }

      for (String key : rawResult.keySet()) {
         if (TextUtils.equals(key, "resultStatus")) {
            resultStatus = rawResult.get(key);
         } else if (TextUtils.equals(key, "result")) {
            result = rawResult.get(key);
         } else if (TextUtils.equals(key, "memo")) {
            memo = rawResult.get(key);
         }
      }
   }

   @Override
   public String toString() {
      return "resultStatus={" + resultStatus + "};memo={" + memo
            + "};result={" + result + "}";
   }

   /**
    * @return the resultStatus
    */
   public String getResultStatus() {
      return resultStatus;
   }

   /**
    * @return the memo
    */
   public String getMemo() {
      return memo;
   }

   /**
    * @return the result
    */
   public String getResult() {
      return result;
   }
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值