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

本文章仅作为个人笔记

接入方式可以参考支付宝登录接入
  • 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));
      	    }
      	}
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值