Java后臺獲取支付寶支付唯一訂單號
/*** 支付寶小程序支付*/@PostMapping(value = "/xcxPayZFBTHREE")@ResponseBodypublic Map<String,Object> xcxPayZFBTHREE(@RequestBody byte[] req) {HashMap<String, Object> objectObjectMap = new HashMap<>();JSONObject json = JSONObject.parseObject(new String(req, Charset.forName("UTF-8")));System.out.println("請求參數"+json);String ip = "127.0.0.1";String money = null;String remark = null;AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",小程序appid,應用私鑰,"json","UTF-8",支付寶公鑰,"RSA2");//獲得初始化的AlipayClient//設置請求參數AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();JSONObject map=new JSONObject();//訂單號map.put("out_trade_no",訂單號);//金額 這里的金額是以元為單位的可以不轉換但必須是字符串map.put("total_amount",金額);//描述map.put("subject",remark);//用戶唯一標識id 這里必須使用buyer_id 參考文檔map.put("buyer_open_id",支付寶小程序的openid);//對象轉化為json字符串String jsonStr=map.toString();//商戶通過該接口進行交易的創建下單request.setBizContent(jsonStr);//回調地址 是能夠訪問到的域名加上方法名request.setNotifyUrl(回調地址);String orderStr=null;try {//使用的是executeAlipayTradeCreateResponse response = alipayClient.execute(request);orderStr=response.getTradeNo();System.out.println("支付返回結果訂單號"+response.getTradeNo());} catch (Exception e) {e.printStackTrace();}objectObjectMap.put("status","0000");objectObjectMap.put("orderStr",orderStr);return objectObjectMap;}
支付寶小程序支付成功回調地址?
/*** 異步通知-----支付寶小程序* 這里面可以寫判斷支付成功之后的及具體業務需求*/@RequestMapping(value = "/payNotifyZFBSIX", method = {RequestMethod.POST, RequestMethod.GET})@ResponseBodypublic String payNotifyZFBSIX(HttpServletRequest request) {System.out.println("支付通知=1" + request);/*** 這種方式效率高一點*///簽名方式String sign_type="RSA2";//對待簽名字符串數據通過&進行拆分Map requestParams = request.getParameterMap();LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();//把拆分數據放在map集合內for (Object o : requestParams.keySet()) {String name = (String) o;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] + ",";}map.put(name, valueStr);}System.out.println("支付通知=1" + map);try {
// boolean b = AlipaySignature.rsaCertCheckV1(map, publicKey, "utf-8", sign_type);String out_trade_no = map.get("out_trade_no");System.out.println("支付訂單號:"+out_trade_no);String trade_status = map.get("trade_status");System.out.println("支付狀態:"+out_trade_no);if("TRADE_SUCCESS".equals(trade_status)){}System.out.println(map.toString());} catch (Exception e) {System.out.println("支付寶異步驗簽失敗:{}"+e.getMessage());}return null;}
支付寶小程序前端喚起支付窗口
pay(e){var that=this;my.tradePay({// orderStr: e.orderStr ,//支付請求參數字符串tradeNO : e //支付請求參數字符串}, function(result) {if (result.resultCode === '9000') {console.log('支付成功');} else if (result.resultCode === '6001') {console.log('用戶取消支付');} else {console.log('支付失敗');}// that.subMess()}, function(error) {//支付失敗回調函數uni.showToast({title: '支付失敗'});});},