Java 支付宝支付,退款,单笔转账到支付宝账户(支付宝订单退款)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 支付宝支付,退款,单笔转账到支付宝账户(支付宝订单退款)相关的知识,希望对你有一定的参考价值。
上一篇写到支付宝的支付,这代码copy下来就能直接用了, 我写学习文档时会经常贴 官方参数文档的案例地址, 因为我觉得 请求参数,响应参数说明 官方文档整理的很好,毕竟官方不会误导大家.
我学一个新技术的时候最喜欢做的就是把案例代码copy到自己的项目里面跑一遍, 然后再一 一分析每段代码的作用.
昨天忘说了 别忘了引入支付宝的SDK :
在这里说一下,一般接入第三方都会有第三方的SDK包,要把他们放在自己项目里我们才能接入他们的API.
支付宝SDK下载地址: https://docs.open.alipay.com/54/103419/
然后我们需要把这个jar包引入到所需要的地方,这里不做过多的描述。
1.查看支付订单
该接口提供所有支付宝支付订单的查询,商户可以通过该接口主动查询订单状态,获取这个订单的信息.
重要参数 Out_Trade_No : 商户网站唯一订单号,也就是自己项目生成订单号 Trade_No 支付宝交易号, 是支付宝端给这个交易生成的订单交易号.
贴代码:
/** * * 说明:查看支付订单 * @param Out_Trade_No 商户网站唯一订单号 * @param Trade_No 支付宝交易号 * @return 公共响应参数 code,msg 响应参数: https://docs.open.alipay.com/api_1/alipay.trade.query * @author 许奥伦 * @time:2018年12月11日 下午2:19:44 */ @Override public String queryPayment(String Out_Trade_No,String Trade_No) { //填写自己创建的app的对应参数 AlipayClient alipayClient = new DefaultAlipayClient("支付宝网关", "appid", "私钥", "json", "utf-8", "公钥","RSA2"); AlipayTradeQueryRequest alipay_request = new AlipayTradeQueryRequest(); AlipayTradeQueryModel model=new AlipayTradeQueryModel(); model.setOutTradeNo(Out_Trade_No); model.setTradeNo(Trade_No); alipay_request.setBizModel(model); try { AlipayTradeQueryResponse alipay_response = alipayClient.execute(alipay_request); String queryPaymentStr = alipay_response.getBody(); System.out.println(queryPaymentStr); return queryPaymentStr; } catch (AlipayApiException e) { e.printStackTrace(); } return null; }
会返回 订单金额,订单状态,买家支付宝账号等很多数据, 官方参数字典: https://docs.open.alipay.com/api_1/alipay.trade.query
2.支付宝订单退款
当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给买家,支付宝将在收到退款请求并且验证成功之后,按照退款规则将支付款按原路退到买家帐号上。 交易超过约定时间(签约时设置的可退款时间)的订单无法进行退款 支付宝退款支持单笔交易分多次退款,多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。一笔退款失败后重新提交,要采用原来的退款单号。总退款金额不能超过用户实际支付金额
/** * * 说明: 支付宝订单退款 * @param out_trade_no 订单编号 * @param trade_no 支付宝订单交易号 * @param refund_amount 退款金额 不得大于订单金额 * @param refund_reason 退款说明 * @param out_request_no 标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传。 * @return 公共返回参数 code,msg, 响应参数实例: https://docs.open.alipay.com/api_1/alipay.trade.refund * @author 许奥伦 * @time:2018年12月11日 下午2:29:13 */ @Override public String alipayRefund(String out_trade_no, String trade_no, String refund_amount, String refund_reason, String out_request_no) {
//填写自己创建的app的对应参数 AlipayClient alipayClient = new DefaultAlipayClient("支付宝网关", "appid", "私钥", "json", "utf-8", "公钥","RSA2");
//订单编号 支付宝交易号不为空 if(out_trade_no!=null&& trade_no!=null) { AlipayTradeRefundRequest alipay_request = new AlipayTradeRefundRequest(); AlipayTradeRefundModel model=new AlipayTradeRefundModel(); model.setOutTradeNo(out_trade_no); model.setTradeNo(trade_no); model.setRefundAmount(refund_amount); model.setRefundReason(refund_reason); model.setOutRequestNo(out_request_no); alipay_request.setBizModel(model); try { AlipayTradeRefundResponse alipay_response = alipayClient.execute(alipay_request); String alipayRefundStr = alipay_response.getBody(); System.out.println(alipayRefundStr); return alipayRefundStr; } catch (AlipayApiException e) { e.printStackTrace(); } } return null; }
会返回公共参数 code,msg 等状态提示你 退款成功或者退款失败 官方响应参数: https://docs.open.alipay.com/api_1/alipay.trade.refund/
个人觉得没有什么比 简洁,通俗,易懂,有注释的代码能让读者更容易看懂的了.
然后我还接触到一个功能就是单笔转账到支付宝账户, 因为客户说 如果能直接提现到支付宝 或者微信 就暂时不做提现到银行卡的操作, 所以就直接从商户支付宝单笔转账到用户支付宝里实现了这个功能, 有时间 再贴出来.( ? 3?)
以上是关于Java 支付宝支付,退款,单笔转账到支付宝账户(支付宝订单退款)的主要内容,如果未能解决你的问题,请参考以下文章