您现在的位置是:主页 > news > 不用编程做APP和响应式网站/优化关键词排名软件

不用编程做APP和响应式网站/优化关键词排名软件

admin2025/6/4 21:17:36news

简介不用编程做APP和响应式网站,优化关键词排名软件,山东网站建设开发维护,wordpress 下载模块Java 支付宝之APP支付服务端 (二)Entrance 支付宝的API文档在上一篇中,集成第三方支付的流程:下单,异步通知,查询,还涉及到提现,退款,关闭订单等,我们以后在介绍。目前先介绍前三个。…

不用编程做APP和响应式网站,优化关键词排名软件,山东网站建设开发维护,wordpress 下载模块Java 支付宝之APP支付服务端 (二)Entrance 支付宝的API文档在上一篇中,集成第三方支付的流程:下单,异步通知,查询,还涉及到提现,退款,关闭订单等,我们以后在介绍。目前先介绍前三个。…

Java 支付宝之APP支付服务端 (二)

Entrance 支付宝的API文档

在上一篇中,集成第三方支付的流程:下单,异步通知,查询,还涉及到提现,退款,关闭订单等,我们以后在介绍。目前先介绍前三个。

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

AAffA0nNPuCLAAAAAElFTkSuQmCC

一、支付宝统一下单请求交易

/**

* 支付宝请求交易

*

* @param bean

* @return

*/

@RequestMapping(value=Route.Payment.ALI_PAY,method=RequestMethod.POST)

@ResponseBody

public Response pay(@PathVariable("userId") int userId,@PathVariable("amount") String amount) {

log.info("infoMsg:--- 支付宝请求交易开始");

Response resp = this.getReponse();

try {

//----------------请求参数------------------//

ThirdPayBean payBean = thirdPayService.findByPayId(18);

Assert.notNull(payBean);

String notify_url = payBean.getReturn_url();

String APP_ID = payBean.getMer_no(); //支付宝商戶号

String mer_key = payBean.getMer_key(); //支付宝公钥|商户私钥

String public_key = mer_key.split("|")[0];

String private_key = mer_key.split("|")[1];

String ALIPAY_PUBLIC_KEY = MD5_UTIL.convertMD5(MD5_UTIL.convertMD5(public_key));

String APP_PRIVATE_KEY = MD5_UTIL.convertMD5(MD5_UTIL.convertMD5(private_key));

String passbackParams = userId + "|" + "18"; //拓展参数

//实例化客户端

AlipayClient alipayClient = new DefaultAlipayClient(alipay_Url, APP_ID, APP_PRIVATE_KEY, "JSON", "UTF-8", ALIPAY_PUBLIC_KEY, "RSA2");

//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay

AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();

//SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。

AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();

model.setSubject("循心科技");

model.setOutTradeNo(OrderGeneratedUtils.getOrderNo());

model.setTimeoutExpress("30m");

model.setTotalAmount(amount);

model.setProductCode("QUICK_MSECURITY_PAY");

model.setPassbackParams(passbackParams);

request.setBizModel(model);

request.setNotifyUrl(notify_url);

//这里和普通的接口调用不同,使用的是sdkExecute

AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);

// System.out.println(response.getBody());//就是orderString 可以直接给客户端请求,无需再做处理。

//生成账单

boolean result = rechargeRecordService.generatedBills(response.getBody(),passbackParams);

if(!result) {

log.error("订单生成失败");

}

log.info("infoMsg:--- 支付宝请求交易结束");

return resp.success(response.getBody());

} catch (AlipayApiException e) {

log.error("errorMsg:--- 支付宝请求交易失败" + e.getMessage());

return resp.failure(e.getMessage());

}

}

二、支付宝支付通知地址

/**

* 支付宝支付通知地址

*

* @param request

* @return

*/

@RequestMapping(value=Route.Payment.ALI_PAY_NOTIFY,method=RequestMethod.POST)

@ResponseBody

public Response alipay_notify(HttpServletRequest request) {

log.info("infoMsg:--- 支付宝验证异步通知信息开始");

Response resp = this.getReponse();

try {

//----------------请求参数------------------//

ThirdPayBean payBean = thirdPayService.findByPayId(18);

Assert.notNull(payBean);

String mer_key = payBean.getMer_key(); //支付宝公钥|商户私钥

String public_key = mer_key.split("|")[0];

String ALIPAY_PUBLIC_KEY = MD5_UTIL.convertMD5(MD5_UTIL.convertMD5(public_key));

//获取支付宝POST过来反馈信息

Map params = new HashMap();

Map requestParams = request.getParameterMap();

for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {

String name = (String) iter.next();

String[] values = (String[]) requestParams.get(name);

String valueStr = "";

for (int i = 0; i < values.length; i++) {

valueStr = (i == values.length - 1) ? valueStr + values[i]

: valueStr + values[i] + ",";

}

//乱码解决,这段代码在出现乱码时使用。

//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");

params.put(name, valueStr);

}

//切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。

//boolean AlipaySignature.rsaCheckV1(Map params, String publicKey, String charset, String sign_type)

boolean flag = AlipaySignature.rsaCheckV1(params, ALIPAY_PUBLIC_KEY, "utf-8","RSA2");

if(flag) {

//TODO 账变,修改状态,到账提醒

Double amount = Double.parseDouble(params.get("amount"));

String passbackParams = params.get("passbackParams");

String order_no = params.get("out_trade_no");

boolean result = rechargeRecordService.updateBill(amount,passbackParams,order_no);

if(result) {

System.out.println("订单更新成功");

}

}

log.info("infoMsg:--- 支付宝验证异步通知信息结束");

return resp.success();

} catch (AlipayApiException e) {

log.info("infoMsg:--- 支付宝验证异步通知信息结束" + e.getMessage());

return resp.failure(e.getMessage());

}

}

三、支付宝单笔提现

/**

* 支付宝单笔提现

*

* @param userId

* @param amount

* @return

*/

@RequestMapping(value=Router.Payment.ALI_PAY_TRANSFER,method=RequestMethod.POST)

@ResponseBody

public Response alipay_transfer(@PathVariable("userId") int userId,@PathVariable("amount") String amount) {

String message = "";

log.info("infoMsg:--- 支付宝提现开始");

Response resp = this.getReponse();

try {

//----------------请求参数------------------//

ThirdPayBean payBean = thirdPayService.findByPayId(18);

Assert.notNull(payBean);

String APP_ID = payBean.getMer_no(); //支付宝商戶号

String mer_key = payBean.getMer_key(); //支付宝公钥|商户私钥

String public_key = mer_key.split("|")[0];

String private_key = mer_key.split("|")[1];

String ALIPAY_PUBLIC_KEY = MD5_UTIL.convertMD5(MD5_UTIL.convertMD5(public_key));

String APP_PRIVATE_KEY = MD5_UTIL.convertMD5(MD5_UTIL.convertMD5(private_key));

String passbackParams = userId + "|" + "18"; //拓展参数

String orderNo = OrderGeneratedUtils.getOrderNo();

AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do";,APP_ID,APP_PRIVATE_KEY,"JSON","utf-8",ALIPAY_PUBLIC_KEY,"RSA2");

AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();

AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();

//转账参数拼装 TODO

model.setSubject("循心科技");

model.setOutTradeNo(orderNo);

model.setTimeoutExpress("30m");

model.setProductCode("QUICK_MSECURITY_PAY");

request.setBizModel(model);

AlipayFundTransToaccountTransferResponse response = alipayClient.execute(request);

String body = response.getBody();

//解析返回值

message = rechargeRecordService.createTransfer(body,passbackParams);

if(message.equalsIgnoreCase("Success")) {

boolean result = transferRecordService.saveTransRecord(body,amount,passbackParams);

if(result) {

log.info("infoMsg:--- 支付宝提现成功");

}

}else {

log.error("errorMsg:--- 支付宝提现失败" + message);

}

log.info("infoMsg:--- 支付宝提现结束");

return resp.success();

} catch (AlipayApiException e) {

log.error("errorMsg:--- 支付宝提现失败" + e.getMessage());

return resp.failure(message + e.getMessage());

}

}

四、支付宝订单查询

/**

* 支付宝支付订单查询

*

* @param request

* @return

*/

@RequestMapping(value=Route.Payment.ALI_PAY_QUERY,method=RequestMethod.POST)

@ResponseBody

public Response alipay_query(HttpServletRequest req) {

log.info("infoMsg:--- 支付宝订单查询开始");

Response resp = this.getReponse();

try {

AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do";,"app_id","your private_key","json","GBK","alipay_public_key","RSA2");

AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();

request.setBizContent("{" +

"\"out_trade_no\":\"20150320010101001\"," +

"\"trade_no\":\"2014112611001004680 073956707\"" +

" }");

AlipayTradeQueryResponse response;

response = alipayClient.execute(request);

if(response.isSuccess()){

System.out.println("调用成功");

} else {

System.out.println("调用失败");

}

log.info("infoMsg:--- 支付宝订单查询结束");

return resp.success();

} catch (AlipayApiException e) {

log.error("errorMsg:--- 支付宝订单查询失败");

return resp.failure(e.getMessage());

}

}

ps: 总结,作为IT巨头,支付宝的文档总结得是很给力的。在开放平台下载相关jar宝 友情链接