美文网首页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