美文网首页
2018-06-04

2018-06-04

作者: degrty | 来源:发表于2018-06-04 22:26 被阅读20次

利用沙箱测试调用支付宝

今天我们来介绍下如何利用沙箱测试调用支付宝

首先登陆蚂蚁金服官网:https://docs.open.alipay.com
登陆的账号是用自己的支付宝账号,然后在首页导航栏找到开发接入,然后在下面找到沙箱

shaxiang.png

点击进去,他会自动帮你生成沙箱账号,里面包括一个买家账号和一个买家账号


sha.png

然后点击沙箱应用,他已经帮我自动生成appID,我们需要做的就是生成Rsa2


sha2.png

生成公钥和私钥的具体的步骤 https://docs.open.alipay.com/291/105971
记住私钥后面会用到。

下载支付宝客户端,并用买家账号登陆


sha3.png

下载官方demo,并导入到Androidstdio。
下载地址:https://docs.open.alipay.com/54/104509

然后我们需要在PayDemoActivity.class添加配置信息
步骤一

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pay_main);
                //添加下面这行代码,表示启用沙箱环境
        EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);
    }

步骤二

/** 支付宝支付业务:入参app_id */
    public static final String APPID = "沙箱应用的appId";
    
    /** 支付宝账户登录授权业务:入参pid值 */
    public static final String PID = "商家账号的UID";
    /** 支付宝账户登录授权业务:入参target_id值 */
    public static final String TARGET_ID = "";

    /** 商户私钥,pkcs8格式 */
    /** 如下私钥,RSA2_PRIVATE 或者 RSA_PRIVATE 只需要填入一个 */
    /** 如果商户两个都设置了,优先使用 RSA2_PRIVATE */
    /** RSA2_PRIVATE 可以保证商户交易在更加安全的环境下进行,建议使用 RSA2_PRIVATE */
    /** 获取 RSA2_PRIVATE,建议使用支付宝提供的公私钥生成工具生成, */
    /** 工具地址:https://doc.open.alipay.com/docs/doc.htm?treeId=291&articleId=106097&docType=1 */
    public static final String RSA2_PRIVATE = "私钥";
    public static final String RSA_PRIVATE = "";

注:TARGET_ID还不知道如何获得,官网给出的解释
https://tech.open.alipay.com/support/knowledge/index.htm?categoryId=24153&knowledgeId=201602074386&scrollcheck=1#/?_k=uizo6i

步骤三
运行程序,运行截图如下:


2.jpg
0.jpg

总结:
调用接口的详细流程图


1.jpg

主要流程
a.向服务器发送请求,服务器返回订单信息

/**
       * 这里只是为了方便直接向商户展示支付宝的整个支付流程;所以Demo中加签过程直接放在客户端完成;
       * 真实App里,privateKey等数据严禁放在客户端,加签过程务必要放在服务端完成;
       * 防止商户私密数据泄露,造成不必要的资金损失,及面临各种安全风险; 
       * 
       * orderInfo的获取必须来自服务端;
       */
      boolean rsa2 = (RSA2_PRIVATE.length() > 0);
      Map<String, String> params = OrderInfoUtil2_0.buildOrderParamMap(APPID, rsa2);
      String orderParam = OrderInfoUtil2_0.buildOrderParam(params);

      String privateKey = rsa2 ? RSA2_PRIVATE : RSA_PRIVATE;
      String sign = OrderInfoUtil2_0.getSign(params, privateKey, rsa2);
      final String orderInfo = orderParam + "&" + sign;

b.调用支付宝异步请求发起支付

Runnable payRunnable = new Runnable() {

          @Override
          public void run() {
              PayTask alipay = new PayTask(PayDemoActivity.this);
              Map<String, String> result = alipay.payV2(orderInfo, true);
              Log.i("msp", result.toString());
              
              Message msg = new Message();
              msg.what = SDK_PAY_FLAG;
              msg.obj = result;
              mHandler.sendMessage(msg);
          }
      };

      Thread payThread = new Thread(payRunnable);
      payThread.start();

c.处理回调结果

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

其实调用支付宝可以实现的功能还是很多的,更多详情就要看支付宝的官方API文档了

以上就是沙箱测试支付宝支付的所有代码了,如有帮助请点个赞吧!!!

如有问题,欢迎留言讨论!!!

相关文章

  • 2018-06-04

    2018-06-04 烟雨2 2018-06-04 17:34 · 字数 16 · 阅读 0 · 日记本 初夏河口...

  • 2018-06-05

    2018-06-04 戴师傅简书作者 2018-06-04 20:38 打开App (稻盛哲学学习会)打卡第74天...

  • 塑造阳光心态 享受工作生活

    老生常谈 反复念叨 2018-06-04下午·青岛远洋运输有限公司

  • One year,and forever

    2018-06-04 09:23 · 字数 886 · 阅读 11 · 2018.6.4 宜去厨吧吃大餐 忌吵架逃...

  • 宫颈糜烂

    宫颈糜烂…… 罗世玉 2018-06-04 18:42 打开App 宫颈糜烂,宫颈烂了…… 随着健康体检越来...

  • 日精进打卡(第332天)

    2018-06-04 姓名:李义 公司:........ 组别:259期利他二组 【知~学习】 背诵 六项精进大纲...

  • 23-2018周检视

    2018年第23周 起始时间:2018-06-04 结束时间:2018-06-10 一、目标完成情况...

  • 2018-06-05

    《六项精进》日精进打卡 韩领 2018-06-04 23:16 · 字数 603 · 阅读 1 · 日记本 姓名:...

  • 宫颈糜烂

    宫颈糜烂…… 简书作者:爱善天使罗世玉 2018-06-04 18:42 打开App 宫颈糜烂,宫颈烂了…… ...

  • 2018-10-07

    要做正确的事,也要把事做正确 远近先生 已关注 2018-06-04 09:31 · 字数 3347 · 阅读 4...

网友评论

      本文标题:2018-06-04

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