Java 支付寶之APP支付服務端 (二)
阿新 • • 發佈:2019-01-31
/** * 支付寶請求交易 * * @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()); } }