支付宝支付接入(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)); } }
-