- 配置文件和异步回调不需要改变,请参考:https://my.oschina.net/xpx/blog/1863944
- 补充下app支付接口:
@PostMapping(value = "/aliPay" , produces = "application/json;charset=UTF-8") public R aliPay(@RequestBody PayParam payParam){ // 用订单号查询订单相关信息 PayOrder payOrder = iPayOrderService.selectByPayNo(payParam.getOutTradeNo()); if(null == payOrder){ return R.error("订单信息有误"); } //实例化客户端 AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.GATEWAYURL,AlipayConfig.APP_ID,AlipayConfig.MERCHANT_PRIVATE_KEY,AlipayConfig.FORMART,AlipayConfig.CHARSET,AlipayConfig.ALIPAY_PUBLIC_KEY,AlipayConfig.SIGN_TYPE); //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称,alipay.trade.app.pay AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest(); //SDK已经封装掉了公共参数,这里只需要传入业务参数, //以下方法为SDK的model入参方式(model和biz_content同时存在的情况下取biz_content). AlipayTradeAppPayModel model = new AlipayTradeAppPayModel(); //商品描述 model.setBody(AlipayConfig.BODY); //订单主题 model.setSubject(AlipayConfig.SUBJECT + payOrder.getUserNumber()); //订单号 model.setOutTradeNo(payOrder.getPayNumber()); //设置订单超时 model.setTimeoutExpress(AlipayConfig.TIME_OUT_EXPRESS); //设置付款金额 model.setTotalAmount(payOrder.getPayAmount().toString()); model.setProductCode(AlipayConfig.PRODUCT_CODE); request.setBizModel(model); request.setNotifyUrl(AlipayConfig.NOTIFY_URL); R r = R.ok(); try{ AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); r.put("data",response.getBody()); return r; }catch (AlipayApiException e){ log.error("调用阿里支付失败{}",e.getMessage()); return R.error("调用阿里支付失败"); } }
- 说下私钥和公钥的生成
- 进入https://openhome.alipay.com/platform/keyManage.htm,设置公钥
- 下载公钥自动生成地址https://os.alipayobjects.com/download/secret_key_tools_RSA256_win.zip
- 下载后解压有说明使用,运行:支付宝RAS密钥生成器SHAwithRSA2048_V1.0.bat 即可
- 用文本编辑器打开复制中间部分上传
- 下载校验公钥地址:https://os.alipayobjects.com/download/sign_tools_RSA256_win.zip
- 解压后运行:支付宝报文签名生成器SHA256withRSA2048_V1.0.bat
- 将之前生成的私钥文件rsa_private_key_pkcs8.pem用文本编辑器打开,复制到左边,然后生成右边的数据复制到网页的验证公钥中
- 如果提示匹配成功则完成
- 将私钥信息复制到代码支付信息中:http://www.5ixuexiwang.com/str/compress.php,这个网址可以去除空格换行
- 上传成功后会生成支付宝公钥,复制里面的公钥到代码中即可
-
搞定