美文网首页tool for workiOS要做的小项目
支付宝支付接入(Android/IOS(swift)/Java后

支付宝支付接入(Android/IOS(swift)/Java后

作者: 草丛里的黄盖 | 来源:发表于2018-11-08 19:21 被阅读5次

    本文章仅作为个人笔记

    接入方式可以参考支付宝登录接入

    • IOS端(swift):

      • 主要接入和代码可参考支付宝登录接入

                //从服务器获取支付签名字符串,这里在后面服务器代码里会说明,交给服务器处理即可
                var signStr = getAliPayPaySignStrFromService()
                //调起支付宝客户端支付页面
                AliPayUtils.pay(signStr: signStr, aliPayBack: AliPayPayBack())
                //创建回调方法类
                struct AliPayPayBack: AliPayBack {
                    func finish(_ result: String?) {
                        //支付成功,这里将result提交给服务器处理同时刷新本地ui状态。
                    }
                
                    func failed() {
                        //支付失败,刷新本地ui状态。
                    }
                }
        
    • Android端:

      • 主要接入和代码可参考支付宝登录接入

      • AliPayUtils支付使用方式:

                    //去服务器获取支付签名字符串(伪代码),这里可以上传需要购买的商品信息给服务器处理
                    String signStr = getSignStr();
                    AliPayUtils.startPay(DemoActivity.this , signStr, new AliPayUtils.Back() {
                        @Override
                        public void success(String result) {
                            //支付成功回调,将返回的数据result上传至服务器处理。
                        }
                    
                        @Override
                        public void failed() {
                            //支付失败回调
                        }
                    });
        
    • java后台:

      • 主要接入和代码可参考支付宝登录接入

      • 客户端获取支付签名时调用AliPayUtils.getPayStr()方法,第一个参数为订单金额(例:"0.10"),第二个参数为商品名称,第三个参数为自己的订单号,此时可以保存订单号挂钩相关信息,方便后面用户支付成功进行关联处理。

      • 支付成功后客户端上传的字符串可转换成AlipayTradeAppPayResponse对象。

      • 这里贴上部分订单处理代码(requestPay为客户端上传字符串转对象):

            AlipayTradeQueryResponse alipayTradeQueryResponse = null;
            if (requestPay != null && requestPay.getAlipayTradeAppPayResponse() != null) {
                for (int index = 0; alipayTradeQueryResponse == null && index < 3; index++) {
                    if (index != 0) {//这里为了防止订单处于处理中,给支付宝3s时间。可自行调节。
                        Thread.sleep(1000);
                    }
                    alipayTradeQueryResponse = AliPayUtils.getPayInfo(requestPay.getAlipayTradeAppPayResponse().getOutTradeNo()
                            , requestPay.getAlipayTradeAppPayResponse().getTradeNo());
                }
                if (alipayTradeQueryResponse != null) {
                    if ("10000".equals(alipayTradeQueryResponse.getCode())) {
                        String orderNumber = requestPay.getAlipayTradeAppPayResponse().getOutTradeNo();
                        //去数据库查找订单信息,这里为个人代码处理。
                        OrderHistory orderHistory = orderHistoryMapper.getOrderHistoryByOrderNumber(orderNumber);
                        if (orderHistory == null) {
                            //订单不存在,可以进行自己的处理。
                        } else {
                            //该订单已经存在
                        }
                    } else {
                        throw new Exception(alipayTradeQueryResponse.getSubMsg());
                    }
                } else {
                    log.error("alipayTradeQueryResponse is null.requestPay=" + JSON.toJSONString(requestPay));
                }
            }
        

    相关文章

      网友评论

        本文标题:支付宝支付接入(Android/IOS(swift)/Java后

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