day66
内网穿透
NatApp
NATAPP-内网穿透 基于ngrok的国内高速内网映射工具
开启您的内网穿透之旅
下载安装后,注册一个账号,可以免费使用内网穿透,不稳定,也可以自行选择收费版本
在下载好app的同级目录,放置一个config.ini文件,作为该程序的配置文件,自行加载,双击运行即可得到一个内网穿透后的地址,默认端口是8080
支付宝支付
使用支付宝进行支付
支付宝开放平台 (alipay.com)
在该官网上打开控制台,找到沙箱
沙箱应用 - 开放平台 (alipay.com)
密钥工具下载 - 支付宝文档中心 (alipay.com)
分别下载工具,生成秘钥,到最后的匹配成功
package com.saas.util; import com.alibaba.fastjson.JSONObject; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.request.AlipayTradePagePayRequest; import com.saas.entity.Order; public class AlipayTools {public static String pay(Order order){ //准备接入的配置String appId = "自己的appid"; // String serverUrl = "https://openapi.alipaydev.com/gateway.do"; // 早期版本的支付宝支付的urlString serverUrl = "https://openapi-sandbox.dl.alipaydev.com/gateway.do"; // 最新的支付宝支付urlString rsa2 = "RSA2";String alipayPublicKey = "自己的支付宝公钥";String charset = "UTF-8";String privateKey = "私钥";String json = "json";AlipayClient alipayClient = new DefaultAlipayClient(serverUrl, appId, privateKey, json, charset, alipayPublicKey, rsa2);//request对象AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();//商家的post请求接口request.setNotifyUrl("http://hda4zd.natappfree.cc/PaySuccess");//自行设置的回调地址--post请求//商家的get请求接口request.setReturnUrl("http://hda4zd.natappfree.cc/PaySuccess");//自行设置的回调地址--get请求 JSONObject bizContent = new JSONObject();bizContent.put("out_trade_no", order.getOid());bizContent.put("total_amount", order.getAmount());bizContent.put("subject", order.getOdesc());bizContent.put("body", order.getBak());bizContent.put("product_code", "FAST_INSTANT_TRADE_PAY");request.setBizContent(bizContent.toJSONString());String form= "" ;try {form = alipayClient.pageExecute(request).getBody(); //调用SDK生成表单} catch (AlipayApiException e) {e.printStackTrace();} return form;} }package com.saas.day65; import com.saas.entity.Order; import com.saas.util.AlipayTools; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.UUID; @WebServlet("/PayServlet") public class PayServlet extends HttpServlet { @Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setContentType("text/html;charset=utf-8"); Order o = new Order(); o.setOid(UUID.randomUUID().toString());o.setAmount(9.9);o.setOdesc("测试订单");o.setUid(1);o.setBak("测试订单"); String pay = AlipayTools.pay(o); resp.getWriter().write(pay);} }package com.saas.day65; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/PaySuccess") public class PaySuccessServlet extends HttpServlet { @Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.sendRedirect("success.jsp");} }