美文网首页
支付宝支付简介

支付宝支付简介

作者: 3Q竹林 | 来源:发表于2017-06-06 10:41 被阅读46次
支付宝支付

具体实现代码如下:

public void requestPay() {

    //请求网络获取预订单authInfo(信息已经过服务器签名,这就要求服务器端也需要集成alipay的sdk才能实现)。。。

        final String authInfo = info + "&" + sign;
            Runnable authRunnable = new Runnable() {
                @Override
                public void run() {
                    // 构造AuthTask 对象
                    AuthTask authTask = new AuthTask(PayDemoActivity.this);
                    // 调用授权接口,获取授权结果
                    Map<String, String> result = authTask.authV2(authInfo, true);

                    Message msg = new Message();
                    msg.what = SDK_AUTH_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: {
            @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")) {
                // 该笔订单是否真实支付成功,需要依赖服务端的异步通知,或直接都使用后台的结果数据
                requestResult();
            } else {
                // 该笔订单真实的支付结果,需要依赖服务端的异步通知。
                Toast.makeText(PayDemoActivity.this, "支付失败", Toast.LENGTH_SHORT).show();
            }
            break;
        }
        case SDK_AUTH_FLAG: {
            @SuppressWarnings("unchecked")
            AuthResult authResult = new AuthResult((Map<String, String>) msg.obj, true);
            String resultStatus = authResult.getResultStatus();

            // 判断resultStatus 为“9000”且result_code
            // 为“200”则代表授权成功,具体状态码代表含义可参考授权接口文档
            if (TextUtils.equals(resultStatus, "9000") && TextUtils.equals(authResult.getResultCode(), "200")) {
                // 获取alipay_open_id,调支付时作为参数extern_token 的value
                // 传入,则支付账户为该授权账户
                Toast.makeText(PayDemoActivity.this,
                        "授权成功\n" + String.format("authCode:%s", authResult.getAuthCode()), Toast.LENGTH_SHORT)
                        .show();
            } else {
                // 其他状态值则为授权失败
                Toast.makeText(PayDemoActivity.this,
                        "授权失败" + String.format("authCode:%s", authResult.getAuthCode()), Toast.LENGTH_SHORT).show();
            }
            break;
        }
        default:
            break;
        }
    };
};

验证:在返回数据resultStatus为9000的情况下,解析result结果:
1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号;
2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额);
3、校验通知中的seller_id(或seller_email) 是否为out_trade_no这笔单据对应的操作方(有时,一个商户会有多个seller_id/seller_email);
4、验证app_id是否为该商户本身。上述1、2、3、4有任何一个验证不通过,则表明同步校验结果是无效的,否则认定买家付款不成功。
简单做法:完全依赖服务端异步通知,直接调用后台的结果接口;

补充:

/**
 * get the sdk version. 获取SDK版本号(若需要)
 * 
 */
public void getSDKVersion() {
    PayTask payTask = new PayTask(this);
    String version = payTask.getVersion();
    Toast.makeText(this, version, Toast.LENGTH_SHORT).show();
}  

格外提醒:
微信需要配置应用签名:d7a7a6a72b7627be785495b6b842dda8
支付宝需要配置密钥(公钥)
官网地址:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.DJdm6Z&treeId=204&articleId=106079&docType=1

.

相关文章

  • 支付宝支付简介

    支付宝支付 具体实现代码如下: 验证:在返回数据resultStatus为9000的情况下,解析result结果:...

  • Android:App Links实践-2020-08-03

    需求简介 从原生App通过Scheme的方式拉起支付宝(alipay://xxx.xxx.xx),然后由支付宝再拉...

  • 支付宝pc支付集成

    支付宝初步集成(采用struts集成)调用流程 1.pc端支付原理简介:客户端提交订单后,点击确认付款,支付宝根据...

  • 超详细Android接入支付宝支付实现,有图有真相

    接上篇android接入微信支付文章,这篇我们带你来接入支付宝支付服务 简介 首先要说明的是个人感觉接入支付宝比微...

  • 开源项目收集

    Springboot开源项目收集 支付服务 简介:支付服务:支付宝、微信、银联详细 代码案例,目前已经1800+S...

  • Android支付宝支付集成

    Android支付宝支付 标签: android Android支付宝支付使用的流程介绍 支付宝流程介绍 支付宝流...

  • ## [iOS 支付宝支付]

    [iOS开发系列-支付宝支付] 概述 开发中支付通常都会集成支付宝支付,下面讲解支付宝的整体流程。 集成支付宝支付...

  • 三方支付流程总结

    支付宝支付和微信支付 支付宝支付流程图: 支付宝支付: 当我们选择点击了支付宝支付按钮开始 1.app选择商品进行...

  • iOS支付

    支付宝支付 支付宝支付支付宝补充 微信支付 微信支付 内购 iOS开发 内购流程

  • 奖品合集

    支付宝44.44x12 支付宝200x1 支付宝121x1 支付宝111x1 支付宝100x1 支付宝88x1 支...

网友评论

      本文标题:支付宝支付简介

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