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 }