支付宝手机唤起app支付
生活随笔
收集整理的這篇文章主要介紹了
支付宝手机唤起app支付
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1:調用支付寶接口,獲取的結果from表單給前端
2:將返回的結果發送給前端,前端觸發submin表番
3:用戶支付完成會觸發 異步和同步
//手機喚起支付寶 //傳參public AlipayTradeWapPayResponse payPhone(OrderDto orderDto) throws AlipayApiException {AlipayClient alipayClient = new DefaultAlipayClient(payMent.getGatewayUrl(), payMent.getAppId(), payMent.getRsaPrivateKey(), payMent.getFormat(), payMent.getCharset(), payMent.getAlipayPublicKey(), payMent.getSignType());AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();request.setNotifyUrl(payMent.getNotifyUrl());request.setReturnUrl(payMent.getReturnUrl());JSONObject bizContent = new JSONObject();bizContent.put("out_trade_no", orderDto.getOrderNo());bizContent.put("total_amount", orderDto.getTotalAmount());bizContent.put("subject", orderDto.getProductName());bizContent.put("product_code", "QUICK_WAP_WAY");request.setBizContent(bizContent.toString());AlipayTradeWapPayResponse response = alipayClient.pageExecute(request);if (response.isSuccess()) {System.out.println("調用成功");} else {System.out.println("調用失敗");}return response;}2:同步觸發不做業務邏輯處理 ,異步觸發做業務邏輯處理
//支付寶異步通知改變訂單狀態@PostMapping("/notify")public String notify(HttpServletRequest request) throws Exception {log.info("異步通知開始");//獲取異步傳來的數據Map<String, String> map = new HashMap<String, String>();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] + ",";} // //亂碼解決,這段代碼在出現亂碼時使用 // try { // valueStr = new String(valueStr.getBytes(), "utf-8"); // } catch (UnsupportedEncodingException e) { // e.printStackTrace(); // }map.put(name, valueStr);}System.out.println("支付結果---:" + map.toString());//調用SDK驗證簽名boolean signVerified = false;try {signVerified = AlipaySignature.rsaCheckV1(map, payMent.getAlipayPublicKey(), payMent.getCharset(), payMent.getSignType());} catch (Exception e) {e.printStackTrace();}if (signVerified) {System.out.println("支付結果---:" + map.toString());String trad_no = map.get("out_trade_no");//根據交易流水號查詢交易信息//交易成功if ("TRADE_SUCCESS".equals(map.get("trade_status"))) {//邏輯處理// orderService.updateOrderByOrderNo(trad_no);}return "success";}return "failure";}//支付寶異步通知改變訂單狀態@GetMapping("/PhoneReturn")public ModelAndView PhoneReturn(HttpServletRequest request) throws Exception {log.info("同步驗簽");//獲取異步傳來的數據Map<String, String> map = new HashMap<String, String>();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] + ",";}//亂碼解決,這段代碼在出現亂碼時使用。如果mysign和sign不相等也可以使用這段代碼轉化//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "gbk");map.put(name, valueStr);}log.info("支付結果---:" + map.toString());//調用SDK驗證簽名boolean signVerified = false;try {signVerified = AlipaySignature.rsaCheckV1(map, payMent.getAlipayPublicKey(), payMent.getCharset(), payMent.getSignType());} catch (Exception e) {e.printStackTrace();}ModelAndView view = new ModelAndView();RedirectView redirectView = new RedirectView(payMent.getReturnPhoneUrl());redirectView.setExpandUriTemplateVariables(false);redirectView.setExposeModelAttributes(false);view.setView(redirectView);view.addObject("order", "finish");return view;}總結
以上是生活随笔為你收集整理的支付宝手机唤起app支付的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: echart 广州3d_echarts绘
- 下一篇: 浏览器如何在f12中查看接口地址_IE浏