内网穿透之一个运维人员的故事,避免躺坑

当我开始作为Java软件程序员的时候,我深深地感受到了一个小屌丝的身份。公司的研发服务需要具备支付宝和微信在线支付功能,而支付回调中需要一个固定的公网地址。这个公网地址可以通过域名和80、443端口来访问。但是我买不起阿里云的服务器,这让我陷入了一种困境。

为了解决这个问题,我上网查找了各种开源方案。我曾经使用过花生壳,但是我发现它每个月限制流量,这并不是一个理想的解决方案。

终于,我发现了神卓互联这个品牌。我发现它比其他的内网穿透厂商要好得多。它的技术非常稳定,速度也很快。我开始在我的应用程序中使用神卓互联,发现它非常适合我们的应用程序。

通过使用神卓互联,我们终于解决了这个难题。我可以放心地使用神卓互联了。我们公司的研发服务非常顺利,而我也终于不再是一个小屌丝了。

Java支付回调案例

import com.alipay.api.AlipayApiException;
import com.alipay.api.internal.util.AlipaySignature;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
 
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
 
@RestController
public class PayController {
 
    private static final String ALIPAY_PUBLIC_KEY = "<ALIPAY_PUBLIC_KEY>"; // 支付宝公钥
    private static final String CHARSET = "UTF-8"; // 字符编码
 
    @PostMapping("/notify")
    public String notify(@RequestParam Map<String, String> params, HttpServletRequest request) {
        try {
            // 验证签名
            boolean isVerified = AlipaySignature.rsaCheckV1(params, ALIPAY_PUBLIC_KEY, CHARSET, "RSA2");
 
            if (isVerified) {
                // 处理支付成功逻辑
                String outTradeNo = params.get("out_trade_no");
                String tradeNo = params.get("trade_no");
                // ... 处理支付成功的业务逻辑
 
                // 返回成功响应
                return "success";
            } else {
                // 签名验证失败
                return "fail";
            }
        } catch (AlipayApiException e) {
            // 异常处理
            return "error";
        }
    }
}

在上述代码中,我们使用了Spring Boot框架,并在@RestController注解的类中实现了一个处理支付回调的方法。该方法接收一个HttpServletRequest对象和一个@RequestParam注解的Map参数,其中Map参数包含支付宝回调请求中的所有参数。

在方法中,我们首先使用支付宝SDK提供的AlipaySignature.rsaCheckV1()方法验证支付宝回调请求的签名是否正确。如果签名验证通过,则表示支付成功,我们可以在方法中处理支付成功的业务逻辑。否则,签名验证失败,我们应该返回"fail"响应。

请注意,在该示例代码中,我们将支付宝公钥和字符编码定义为常量,并在AlipaySignature.rsaCheckV1()方法中使用。您需要将它们替换为您自己的支付宝公钥和字符编码。

此外,请确保在处理支付成功的业务逻辑时,您应该使用幂等性操作,以确保不会重复处理同一个支付订单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值