android studio 支付宝支付功能

第一步 :官网下载Demo(alipay_sdk包下的alipaySdk-20180601 配置给自己项目的libs包下)
https://docs.open.alipay.com/54/104509/
第二步 :AndroidManifest.xml 下配置

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

支付宝需要的配置调用h5的页面

<activity
    android:name="com.alipay.sdk.app.H5PayActivity"
    android:configChanges="orientation|keyboardHidden|navigation|screenSize"
    android:exported="false"
    android:screenOrientation="behind"
    android:windowSoftInputMode="adjustResize|stateHidden" >
</activity>
 <activity
    android:name="com.alipay.sdk.app.H5AuthActivity"
    android:configChanges="orientation|keyboardHidden|navigation"
    android:exported="false"
    android:screenOrientation="behind"
    android:windowSoftInputMode="adjustResize|stateHidden" >
</activity>

在这里插入图片描述

第三步在自己的activity中点击支付的按钮

private void payment() {
    Runnable authRunnable = new Runnable() {
        @Override
        public void run() {
            // 构造AuthTask 对象
            AuthTask authTask = new AuthTask(RushMoney.this);
            // 调用授权接口,获取授权结果  str是后台返给你的支付信息
            Map<String, String> result = authTask.authV2(str, true);
            Message msg = new Message();
            msg.what = SDK_PAY_FLAG;
            msg.obj = result;
            mHandler.sendMessage(msg);
        }
    };

    // 必须异步调用
    Thread authThread = new Thread(authRunnable);
    authThread.start();
}

这个是处理支付宝返给我们的支付结果

@SuppressLint("HandlerLeak")
    private Handler mHandler = new Handler() {
        @SuppressWarnings("unused")
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case SDK_PAY_FLAG: {
                    PayResult payResult = new PayResult((Map<String, String>) msg.obj);
                    String resultInfo = payResult.getResult();// 同步返回需要验证的信息
                    String resultStatus = payResult.getResultStatus();

                    if (TextUtils.equals(resultStatus, "9000")) {
                        ruleVImp.sigleToast("支付成功");
                    } else {
                        // "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服				务端异步通知为准(小概率状态)
                        if (TextUtils.equals(resultStatus, "8000")) {
                            ruleVImp.sigleToast("支付结果确认中");
                        } else if (TextUtils.equals(resultStatus, "6001")) {
                            ruleVImp.sigleToast("支付取消");
                        } else if (TextUtils.equals(resultStatus, "6002")) {
                            ruleVImp.sigleToast("网络异常");
                        } else if (TextUtils.equals(resultStatus, "5000")) {
                            ruleVImp.sigleToast("重复请求");
                        } else {
                            // 其他值就可以判断为支付失败
                            ruleVImp.sigleToast("支付失败");
                        }
                    }
                    break;
                }
            }
        }
    };

第四步:需要自己创建一个实体类来解析支付宝传给我们的反馈信息

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;
    }
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值