JavaEE 支付宝支付

613 阅读3分钟

JavaEE 支付宝支付

开发文档大全

支付宝已经更新添封装好的签名方法,可以在自己的项目中直接调用进行签名,减少了自己手动签名产生的问题,主要是在进行方法调用时注意传参的要求,尤其是公钥使用的是支付宝的公钥,而不是APP的公钥。

支付宝支付使用SDK进行对接API,会比微信好很多,已经封装好了,不同请求对象对应不同响应对象。

1. 支付宝—双对称加密

支付宝与微信的不同之处:

  1. 微信是通过xml以及签名进行数据保护
  2. 支付宝是通过双对称加密进行数据保护

支付宝双对称加密:

  1. 用户先使用 RSA密钥工具 生成自身一对用户的对称秘钥(公钥和秘钥)
  2. 将公钥上传到支付宝(在创建应用时便会让用户提供)
  3. 支付宝会根据上传到公钥生成一对 支付宝的对称秘钥(公钥和秘钥)

支付宝双对称加密使用方式:

  1. 用户加签 的时候是用 用户的私钥
  2. 用户解密 的时候是用 支付宝的公钥
  3. 支付宝加签 的时候是用 支付宝的私钥
  4. 支付宝解密 的时候是用 用户的公钥

详情图解:

支付宝双对称加密

2. 支付宝常用API接口

支付API:

  • app支付接口2.0
  • 手机网站支付接口2.0
  • 统一收单交易退款查询
  • 统一收单交易结算接口
  • 统一收单交易关闭接口
  • 统一收单交易撤销接口
  • 统一收单交易退款接口
  • 统一收单线下交易预创建
  • 统一收单交易创建接口
  • 统一收单交易支付接口
  • 统一收单线下交易查询

3. Java Instance

普通调用示例

//实例化客户端
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.open.public.template.message.industry.modify 
AlipayOpenPublicTemplateMessageIndustryModifyRequest request = new AlipayOpenPublicTemplateMessageIndustryModifyRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数
//此次只是参数展示,未进行字符串转义,实际情况下请转义
request.setBizContent("  {" +
"    \"primary_industry_name\":\"IT科技/IT软件与服务\"," +
"    \"primary_industry_code\":\"10001/20102\"," +
"    \"secondary_industry_code\":\"10001/20102\"," +
"    \"secondary_industry_name\":\"IT科技/IT软件与服务\"" +
" }");
AlipayOpenPublicTemplateMessageIndustryModifyResponse response = alipayClient.execute(request); 
//调用成功,则处理业务逻辑
if(response.isSuccess()){
	//.....
}

app支付接口2.0

AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
request.setBizContent("{" +
"\"timeout_express\":\"90m\"," +
"\"total_amount\":\"9.00\"," +
"\"seller_id\":\"2088102147948060\"," +
"\"product_code\":\"QUICK_MSECURITY_PAY\"," +
"\"body\":\"Iphone6 16G\"," +
"\"subject\":\"大乐透\"," +
"\"out_trade_no\":\"70501111111S001111119\"," +
"\"time_expire\":\"2016-12-31 10:05\"," +
"\"goods_type\":\"0\"," +
"\"promo_params\":\"{\\\"storeIdType\\\":\\\"1\\\"}\"," +
"\"passback_params\":\"merchantBizType%3d3C%26merchantBizNo%3d2016010101111\"," +
"\"royalty_info\":{" +
"\"royalty_type\":\"ROYALTY\"," +
"        \"royalty_detail_infos\":[{" +
"          \"serial_no\":1," +
"\"trans_in_type\":\"userId\"," +
"\"batch_no\":\"123\"," +
"\"out_relation_id\":\"20131124001\"," +
"\"trans_out_type\":\"userId\"," +
"\"trans_out\":\"2088101126765726\"," +
"\"trans_in\":\"2088101126708402\"," +
"\"amount\":0.1," +
"\"desc\":\"分账测试1\"," +
"\"amount_percentage\":\"100\"" +
"          }]" +
"    }," +
"\"extend_params\":{" +
"\"sys_service_provider_id\":\"2088511833207846\"," +
"\"hb_fq_num\":\"3\"," +
"\"hb_fq_seller_percent\":\"100\"," +
"\"industry_reflux_info\":\"{\\\\\\\"scene_code\\\\\\\":\\\\\\\"metro_tradeorder\\\\\\\",\\\\\\\"channel\\\\\\\":\\\\\\\"xxxx\\\\\\\",\\\\\\\"scene_data\\\\\\\":{\\\\\\\"asset_name\\\\\\\":\\\\\\\"ALIPAY\\\\\\\"}}\"," +
"\"card_type\":\"S0JP0000\"" +
"    }," +
"\"sub_merchant\":{" +
"\"merchant_id\":\"19023454\"," +
"\"merchant_type\":\"alipay: 支付宝分配的间连商户编号, merchant: 商户端的间连商户编号\"" +
"    }," +
"\"enable_pay_channels\":\"pcredit,moneyFund,debitCardExpress\"," +
"\"store_id\":\"NJ_001\"," +
"\"specified_channel\":\"pcredit\"," +
"\"disable_pay_channels\":\"pcredit,moneyFund,debitCardExpress\"," +
"\"settle_info\":{" +
"        \"settle_detail_infos\":[{" +
"          \"trans_in_type\":\"cardSerialNo\"," +
"\"trans_in\":\"A0001\"," +
"\"summary_dimension\":\"A0001\"," +
"\"amount\":0.1" +
"          }]" +
"    }," +
"\"invoice_info\":{" +
"\"key_info\":{" +
"\"is_support_invoice\":true," +
"\"invoice_merchant_name\":\"ABC|003\"," +
"\"tax_num\":\"1464888883494\"" +
"      }," +
"\"details\":\"[{\\\"code\\\":\\\"100294400\\\",\\\"name\\\":\\\"服饰\\\",\\\"num\\\":\\\"2\\\",\\\"sumPrice\\\":\\\"200.00\\\",\\\"taxRate\\\":\\\"6%\\\"}]\"" +
"    }," +
"\"ext_user_info\":{" +
"\"name\":\"李明\"," +
"\"mobile\":\"16587658765\"," +
"\"cert_type\":\"IDENTITY_CARD\"," +
"\"cert_no\":\"362334768769238881\"," +
"\"min_age\":\"18\"," +
"\"fix_buyer\":\"F\"," +
"\"need_check_info\":\"F\"" +
"    }," +
"\"business_params\":\"{\\\"data\\\":\\\"123\\\"}\"" +
"  }");
AlipayTradeAppPayResponse response = alipayClient.pageExecute(request);
if(response.isSuccess()){
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}