Android调用支付宝付款

/**
 * 支付宝付款流程
 *
 * @param vipTime  调接口拿到支付宝返回的alipay
 */
private void getOrderInfo(String vipTime) {
    Api.getDefault(ApiType.DOMAIN).AliPayVIP(String.valueOf(chooseMoney), vipTime)
            .enqueue
                    (new Callback<AliPayBean>() {

                        private String alipay;

                        @Override
                        public void onResponse(Call<AliPayBean> call, Response<AliPayBean>
                                response) {
                            if (response.code() == 200) {
                                if (response.body() != null) {
                                    alipay = response.body().getBody().getAlipay();
                                    //支付宝返回的alipay
                                    if (alipay != null) {
                                       //付款
                                        pay(alipay);
                                    } else {
                                        ToastUtil.showNorToast("没有订单信息");
                                    }
                                }
                            }
                        }

                        @Override
                        public void onFailure(Call<AliPayBean> call, Throwable t) {
                            ToastUtil.showErrorToast();
                        }
                    });
}

/**
 * 调起支付宝付款
 *
 * @param orderInfo
 */
private static final int SDK_PAY_FLAG = 1;

private void pay(final String orderInfo) {
    Runnable payRunnable = new Runnable() {

        @Override
        public void run() {
            PayTask alipay = new PayTask(getActivity());
            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();
}

@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")) {
                    // 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
                    ToastUtil.showNorToast("支付成功");
                    btBuy.setVisibility(View.GONE);
                    // TODO: 2018/8/15 查看票证
                    //支付成功
                } else {

                   //想拿其他状态在这里处理
                }
                break;
            }
            default:
                break;
        }
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值