1 import com.alipay.api.AlipayApiException;
2 import com.alipay.api.AlipayClient;
3 import com.alipay.api.DefaultAlipayClient;
4 import com.alipay.api.request.AlipayFundTransToaccountTransferRequest;
5 import com.alipay.api.request.AlipayTradeRefundRequest;
6 import com.alipay.api.response.AlipayFundTransToaccountTransferResponse;
7 import com.alipay.api.response.AlipayTradeRefundResponse;
8 import org.springframework.stereotype.Service;
9
10 @Service
11 public class AlipayToOther {
12 //支付宝网关(固定)
13 public static String URL = "https://openapi.alipay.com/gateway.do";
14 //APPID即创建应用后生成
15 public static String APP_ID = "";
16 //开发者应用私钥,由开发者自己生成
17 public static String APP_PRIVATE_KEY = "";
18 //参数返回格式,只支持json
19 public static String FORMAT = "json";
20 //请求和签名使用的字符编码格式,支持GBK和UTF-8
21 public static String CHARSET = "UTF-8";
22 //支付宝公钥,由支付宝生成
23 public static String ALIPAY_PUBLIC_KEY = "";
24 //商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2
25 public static String SIGN_TYPE = "";
26
27
28 /**
29 * 转账给他人
30 * @param outbizno 商户转账唯一订单号
31 * @param payeeaccount 收款方账户
32 * @param amount 转账金额,单位:元。 只支持2位小数,小数点前最大支持13位,金额必须大于等于0.1元。
33 * @param payeerealname 收款方真实姓名
34 * @param remark 转账备注
35 * @return
36 */
37 public static AlipayFundTransToaccountTransferResponse Transfer(String outbizno,String payeeaccount,String amount,String payeerealname,String remark){
38 AlipayClient alipayClient = new DefaultAlipayClient(URL,APP_ID,APP_PRIVATE_KEY,FORMAT,CHARSET,ALIPAY_PUBLIC_KEY,SIGN_TYPE);
39 AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();
40 request.setBizContent("{" +
41 " \"out_biz_no\":\""+outbizno+"\"," +
42 " \"payee_type\":\"ALIPAY_LOGONID\"," +
43 " \"payee_account\":\""+payeeaccount+"\"," +
44 " \"amount\":\""+amount+"\"," +
45 " \"payer_show_name\":\"转账显示名称\"," +
46 " \"payee_real_name\":\""+payeerealname+"\"," +
47 " \"remark\":\""+remark+"\"," +
48 " }");
49 AlipayFundTransToaccountTransferResponse response = null;
50 try {
51 response = alipayClient.execute(request);
52 } catch (AlipayApiException e) {
53 e.printStackTrace();
54 }
55 return response;
56 }
57
58 /**
59 * 退款
60 * @param outtradeno 订单支付时传入的商户订单号,不能和 trade_no同时为空。
61 * @param tradeno 支付宝交易号,和商户订单号不能同时为空
62 * @param refundamount 需要退款的金额
63 * @param refundreason 退款的原因说明
64 * @param outrequestno 标识一次退款请求,同一笔交易多次退款需要保证唯一,如需部分退款,则此参数必传。
65 * @param operatorid 商户的操作员编号
66 * @return
67 */
68 public static AlipayTradeRefundResponse Refund(String outtradeno,String tradeno,String refundamount,String refundreason,String outrequestno,String operatorid){
69 AlipayClient alipayClient = new DefaultAlipayClient(URL,APP_ID,APP_PRIVATE_KEY,FORMAT,CHARSET,ALIPAY_PUBLIC_KEY,SIGN_TYPE);
70 AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
71 request.setBizContent("{" +
72 "\"out_trade_no\":\""+outtradeno+"\"," +
73 "\"trade_no\":\""+tradeno+"\"," +
74 "\"refund_amount\":"+refundamount+"," +
75 "\"refund_currency\":\"\"," +
76 "\"refund_reason\":\""+refundreason+"\"," +
77 "\"out_request_no\":\""+outrequestno+"\"," +
78 "\"operator_id\":\""+operatorid+"\"," +
79 "\"store_id\":\"\"" +
80 " }");
81 AlipayTradeRefundResponse response = null;
82 try {
83 response = alipayClient.execute(request);
84 } catch (AlipayApiException e) {
85 e.printStackTrace();
86 }
87 return response;
88 }
89
90 }