欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-13 16:59:26
...

本文章仅作为个人笔记

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

  • 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));
      	    }
      	}