| | |
| | | import com.alipay.api.AlipayClient; |
| | | import com.alipay.api.DefaultAlipayClient; |
| | | import com.alipay.api.domain.AlipayTradeAppPayModel; |
| | | import com.alipay.api.domain.AlipayTradeCreateModel; |
| | | import com.alipay.api.request.AlipayTradeAppPayRequest; |
| | | import com.alipay.api.response.AlipayTradeAppPayResponse; |
| | | import com.alipay.config.AlipayConfig; |
| | | |
| | | import com.alipay.api.request.AlipayTradeCreateRequest; |
| | | import com.alipay.api.response.AlipayTradeCreateResponse; |
| | | import com.jpay.alipay.AliPayApi; |
| | | import com.jpay.alipay.AliPayApiConfig; |
| | | import com.jpay.alipay.AliPayApiConfigKit; |
| | | import com.ruoyi.order.util.alipay.config.AlipayConfig; |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | |
| | | |
| | | //实例化客户端 |
| | | private static AlipayClient alipayClient = new DefaultAlipayClient(serverUrl, APP_ID, APP_PRIVATE_KEY, format, charset, ALIPAY_PUBLIC_KEY, signType); |
| | | |
| | | |
| | | |
| | | private static AliPayApiConfig aliPayApiConfig = null; |
| | | |
| | | static { |
| | | aliPayApiConfig = AliPayApiConfig.New() |
| | | .setAppId(APP_ID) |
| | | .setCharset("UTF-8") |
| | | .setPrivateKey(APP_PRIVATE_KEY) |
| | | .setAlipayPublicKey(ALIPAY_PUBLIC_KEY) |
| | | .setServiceUrl("https://openapi.alipay.com/gateway.do") |
| | | .setSignType("RSA2") |
| | | .build(); |
| | | } |
| | | |
| | | /** |
| | | * @throws AlipayApiException |
| | |
| | | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | try { |
| | | |
| | | AliPayApiConfigKit.setThreadLocalAppId(APP_ID); |
| | | AliPayApiConfigKit.setThreadLocalAliPayApiConfig(aliPayApiConfig); |
| | | |
| | | //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay |
| | | AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest(); |
| | |
| | | request.setBizModel(model); |
| | | request.setNotifyUrl(NOTIFY_URL); |
| | | // 这里和普通的接口调用不同,使用的是sdkExecute |
| | | AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request); |
| | | String string = response.getBody(); |
| | | |
| | | int one = string.lastIndexOf("&"); |
| | | String s=string.substring(0,(one)); |
| | | |
| | | map.put("orderInfo", s); |
| | | System.out.println(java.net.URLDecoder.decode(s, "UTF-8")); |
| | | System.out.println(java.net.URLDecoder.decode(response.getBody(), "UTF-8")); |
| | | String orderInfo = ""; |
| | | orderInfo = AliPayApi.startAppPay(model, NOTIFY_URL); |
| | | |
| | | |
| | | map.put("orderInfo", orderInfo); |
| | | map.put("Type",2); |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return map; |
| | | } |
| | | |
| | | |
| | | public static Map<String, Object> jsApiPay(String subject, String body, Double price, |
| | | String out_trade_no, String openId) throws AlipayApiException { |
| | | // 构造请求参数以调用接口 |
| | | AlipayTradeCreateRequest request = new AlipayTradeCreateRequest(); |
| | | AlipayTradeCreateModel model = new AlipayTradeCreateModel(); |
| | | |
| | | // 设置商户订单号 |
| | | model.setOutTradeNo(out_trade_no); |
| | | |
| | | // 设置产品码 |
| | | model.setProductCode("JSAPI_PAY"); |
| | | |
| | | // 设置小程序支付中 |
| | | model.setOpAppId(APP_ID); |
| | | |
| | | // 设置订单总金额 |
| | | model.setTotalAmount(price.toString()); |
| | | |
| | | // 设置业务扩展参数 |
| | | // ExtendParams extendParams = new ExtendParams(); |
| | | // extendParams.setTradeComponentOrderId("2023060801502300000008810000005657"); |
| | | // model.setExtendParams(extendParams); |
| | | |
| | | // 设置可打折金额 |
| | | // model.setDiscountableAmount("80.00"); |
| | | |
| | | // 设置订单标题 |
| | | model.setSubject(subject); |
| | | |
| | | // 设置订单附加信息 |
| | | model.setBody(body); |
| | | |
| | | // uid参数未来计划废弃,存量商户可继续使用,新商户请使用openid。请根据应用-开发配置-openid配置选择支持的字段。 |
| | | // model.setBuyerId("2088102146225135"); |
| | | |
| | | // 设置买家支付宝用户唯一标识 |
| | | model.setBuyerOpenId(openId); |
| | | |
| | | // 设置商户门店编号 |
| | | // model.setStoreId("NJ_001"); |
| | | |
| | | request.setBizModel(model); |
| | | request.setNotifyUrl(NOTIFY_URL); |
| | | // 第三方代调用模式下请设置app_auth_token |
| | | // request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->"); |
| | | |
| | | AlipayTradeCreateResponse response = alipayClient.execute(request); |
| | | System.out.println(response.getBody()); |
| | | Map<String, Object> map = new HashMap<>(); |
| | | if (response.isSuccess()) { |
| | | System.out.println("调用成功"); |
| | | |
| | | map.put("outTradeNo", response.getOutTradeNo()); |
| | | map.put("tradeNo", response.getTradeNo()); |
| | | map.put("Type", 2); |
| | | } else { |
| | | System.out.println("调用失败"); |
| | | // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接 |
| | | // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response); |
| | | // System.out.println(diagnosisUrl); |
| | | } |
| | | return map; |
| | | } |
| | | |
| | | } |