java app支付_支付宝APP支付(基于Java实现支付宝APP支付)

本文档介绍了如何使用Java实现在应用程序中集成支付宝APP支付功能。通过创建`AlipayClient`实例,设置请求参数,如订单号、商品标题、金额等,并调用`AlipayTradeAppPayRequest`进行预下单操作。同时,提供了回调处理方法,用于验证支付结果并进行后续业务处理。
摘要由CSDN通过智能技术生成

importcom.alipay.api.AlipayApiException;importcom.alipay.api.AlipayClient;importcom.alipay.api.DefaultAlipayClient;importcom.alipay.api.domain.AlipayTradeAppPayModel;importcom.alipay.api.internal.util.AlipaySignature;importcom.alipay.api.request.AlipayTradeAppPayRequest;importcom.alipay.api.request.AlipayTradeQueryRequest;importcom.alipay.api.response.AlipayTradeAppPayResponse;importcom.alipay.api.response.AlipayTradeQueryResponse;importcom.aone.app.common.ali.pay.AlipayConfig;importcom.aone.app.service.AliAppPayService;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importorg.springframework.util.StringUtils;importjava.util.HashMap;importjava.util.Map;

@Servicepublic class AliAppAppPayServiceImpl implementsAliAppPayService {private static final Logger logger = LoggerFactory.getLogger("AliAppAppPayServiceImpl");/*** 预下单

*@paramtype

*@paramout_trade_no

*@parammoney

*@return

*/

public MapaliPay(String type,String out_trade_no,String money){

Map map=newHashMap();

map.put("code", "201");

map.put("msg", "解析失败");

map.put("orderString", "");//实例化客户端

AlipayClient alipayClient = newDefaultAlipayClient(AlipayConfig.URL,AlipayConfig.APPID, AlipayConfig.PRIVATE_KEY,AlipayConfig.FORMAT,AlipayConfig.CHARSET,AlipayConfig.PUBLIC_KEY,AlipayConfig.SIGNTYPE);//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay

AlipayTradeAppPayRequest request = newAlipayTradeAppPayRequest();//SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。

AlipayTradeAppPayModel model = newAlipayTradeAppPayModel();

model.setBody("支付");//对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。

model.setSubject("App支付宝支付");//商品的标题/交易标题/订单标题/订单关键字等

model.setOutTradeNo(out_trade_no);//商户网站唯一订单号

model.setTimeoutExpress("30m");//该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。//注:若为空,则默认为15d。

model.setTotalAmount("0.01");//订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]

model.setProductCode("QUICK_MSECURITY_PAY");//销售产品码,商家和支付宝签约的产品码,为固定值 QUICK_MSECURITY_PAY

model.setPassbackParams(type); //公用参数(附加数据)

request.setBizModel(model);

request.setNotifyUrl(AlipayConfig.notify_url);try{//这里和普通的接口调用不同,使用的是sdkExecute

AlipayTradeAppPayResponse response =alipayClient.sdkExecute(request);//System.out.println(response.getBody());//就是orderString 可以直接给客户端请求,无需再做处理。//@TODO 返回支付所需参数

map.put("code", "200");

map.put("msg", "ok");

map.put("orderString", response.getBody());returnmap;

}catch(AlipayApiException e) {

e.printStackTrace();

}returnmap;

}/*** 回调

*@paramparams*/

public void notify(Mapparams){try{//调用SDK验证签名

boolean flag=AlipaySignature.rsaCheckV1(params, AlipayConfig.PUBLIC_KEY, AlipayConfig.CHARSET, AlipayConfig.SIGNTYPE);

logger.info("验签结果:{}", flag);if(flag){

logger.info("支付状态为:{}", params.get("trade_status"));//签名通过

if("TRADE_SUCCESS".equals(params.get("trade_status"))){//支付成功//付款金额

String amount = params.get("buyer_pay_amount");//商户订单号

String out_trade_no = params.get("out_trade_no");//支付宝交易号

String trade_no = params.get("trade_no");//公用参数(附加数据)

String passback_params = params.get("passback_params");//@TODO 数据库操作 推送操作

if(StringUtils.isEmpty(passback_params)){

logger.info("附加数据类型为:{}", passback_params);

}else{//@TODO 预支付下单后回调的逻辑

}

}

}

}catch(AlipayApiException e) {

logger.info("==================验签失败 !");

e.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值