美文网首页
Android接入支付宝支付

Android接入支付宝支付

作者: Wang_Mr | 来源:发表于2019-07-16 12:49 被阅读0次
    • 流程

    常用的接入方式和架构建议

    示例

    1.下单 2.返回订单信息 3.唤起支付宝钱包
    4.支付 5.返回支付结果
    6.返回支付结果
    • 集成

    1.将alipaySdk-15.6.4-20190611174341.aar包放在您的应用工程的libs目录下

    导入aar包
    2.在项目的 build.gradle中,添加下面的内容
    allprojects {
        repositories {
    
            // 添加下面的内容
            flatDir {
                dirs 'libs'
            }
    
            // ... jcenter() 等其他仓库
        }
    }
    
    
    dependencies {
    
        // 添加下面的内容
        implementation (name: 'alipaySdk-15.6.4-20190611174341', ext: 'aar')
    
        // ... 其他依赖项
    }
    

    3.在AndroidManifest文件中添加如下权限

    <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" />
    

    4.支付接口调用( PayTask 支付对象调用payV2()方法进行支付)

    /**
      * @param orderInfo 接口返回的订单信息
      */
    protected void pay(final Activity activity, final String orderInfo) {
    
        Runnable payRunnable = new Runnable() {
    
            @Override
            public void run() {
                PayTask alipay = new PayTask(activity);
                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();
    }
    

    5.同步返回结果

    @SuppressLint("HandlerLeak")
    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")) {
                          // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
                         
                      } else {
                          // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
                           
                      }
                    break;
                }
            }
        }
    };
    

    6.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;
        }
    }
    

    6.沙箱联调

    // 在使用 SDK 时,在支付接口前调用如下方法
    EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);
    
    沙箱联调

    相关文章

      网友评论

          本文标题:Android接入支付宝支付

          本文链接:https://www.haomeiwen.com/subject/vtdzkctx.html