一、支付参数组装:
1 String[] parameters={ 2 "service="mobile.securitypay.pay"",//固定值 3 "partner="24243535353"",//商户号 4 "_input_charset="utf-8"", 5 "notify_url="http://sfsfs/dsdsd/notify/AlipayNotify.action"",//通知地址 6 "out_trade_no=""+orderid+""",//商户内部订单号 7 "subject=""+shopOrder.getHdbt()+""",//说明 8 "payment_type="1"",//固定值 9 "seller_id="323232@163.com"",//账户 10 "total_fee=""+truePaymoney+""",//支付金额(元) 11 "body="旅游商品"",//标题 12 "it_b_pay="30m"" 13 };
signAllString(parameters)
二、配置文件
私钥的生成请参考官网https://doc.open.alipay.com/doc2/detail.htm?treeId=58&articleId=103242&docType=1
然后将私钥配置到AlipayConfig,公钥在支付宝的商户端配置。
public class AlipayConfig { //↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ // 合作身份者ID,以2088开头由16位纯数字组成的字符串 public static String partner = "208834334343"; public static String key = "sdfsfs"; public static String service = "mobile.securitypay.pay"; public static String seller_id = "sdfsdfsf@163.com"; public static String private_key = ""; // 商户的公钥钥 public static String public_key =""; // 支付宝的公钥,无需修改该值(不要删除也不要修改,在接收通知的时候需要进行签名认证) public static String ali_public_key= ""; // 调试用,创建TXT日志文件夹路径 public static String log_path = "D:\"; // 字符编码格式 目前支持 gbk 或 utf-8 public static String input_charset = "utf-8"; // 签名方式 不需修改 public static String sign_type = "RSA"; }
三、支付参数RSA签名
1 private String signAllString(String [] array){ 2 StringBuffer sb = new StringBuffer(""); 3 for (int i = 0; i < array.length; i++) { 4 if(i==(array.length-1)){ 5 sb.append(array[i]); 6 }else{ 7 sb.append(array[i]+"&"); 8 } 9 } 10 System.out.println(sb.toString()); 11 String sign = ""; 12 try { 13 sign = URLEncoder.encode(RSA.sign(sb.toString(), AlipayConfig.private_key, "utf-8"), "utf-8"); 14 } catch (UnsupportedEncodingException e) { 15 // TODO Auto-generated catch block 16 e.printStackTrace(); 17 } 18 sb.append("&sign=""+sign+""&"); 19 sb.append("sign_type="RSA""); 20 21 return sb.toString();//将该字符串返回到手机端就就可以调用APP支付接口进行支付了 22 }