逻辑参数属性什么的了不多说,自己去支付宝开发文档上看,博主这边只使用了那些必需的参数,其他要加的自己后续加上。上代码
首先导入支付宝
<dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>3.7.89.ALL</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>23.0</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.53</version> </dependency>
接着实现方法
import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.request.AlipayTradeRefundRequest; import com.alipay.api.request.AlipayTradeWapPayRequest; import com.alipay.api.response.AlipayTradeRefundResponse; import com.alipay.api.response.AlipayTradeWapPayResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class H5PayDto { @ResponseBody @GetMapping("/zfbpay") public String pay() throws AlipayApiException { String appid ="APPID"; String privateKey ="开发者私钥"; String Ali_publicKey ="支付宝公钥"; //这里的参数属性根据自己的实际配置来填 AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",appid,privateKey,"json","utf-8",Ali_publicKey,"RSA"); AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest(); request.setBizContent("{" + "\"body\":\"Iphone6 16G\"," + "\"subject\":\"标题\"," + "\"out_trade_no\":\"2021070922001473791438611504\"," + "\"total_amount\":1.00," + "\"quit_url\":\"回调地址\"," + "\"product_code\":\"QUICK_WAP_PAY\"}"); //默认 AlipayTradeWapPayResponse response = alipayClient.pageExecute(request); System.out.println(response.getBody()); if(response.isSuccess()){ System.out.println("调用成功"); } else { System.out.println("调用失败"); } return response.getBody(); } @ResponseBody @GetMapping("/Zfbrefund") public String Zfbrefund() throws AlipayApiException { String appid ="APPID"; String privateKey ="开发者私钥"; String Ali_publicKey ="支付宝公钥"; AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",appid,privateKey,"json","utf-8",Ali_publicKey,"RSA"); AlipayTradeRefundRequest request = new AlipayTradeRefundRequest(); request.setBizContent("{" + "\"out_trade_no\":\"2021070922001473791438611503\"," + //订单日期一定要记得 // "\"trade_no\":\"2014112611001004680073956707\"," + "\"refund_amount\":1.00," + "\"refund_reason\":\"正常退款\" }"); AlipayTradeRefundResponse response = alipayClient.execute(request); System.out.println(response.getMsg()+" ---------- "+response.getBody()+"-------- "+response.getSubMsg()); if(response.isSuccess()){ System.out.println("调用成功"); } else { System.out.println("调用失败"); } return "ok"; } }
其他一些小问题列下 先是密钥私钥这些。
然后在我们请求返回的支付宝信息中,如果直接打开,他会提示你签名错误,公钥和私钥不匹配,这个是有个原因在于你直接使用浏览器打开,需要将这个信息写入html中,从html中打开。如何还提示参数或者啥的问题,再可以一个个的去排除。
项目地址:添加链接描述