Springboot整合支付宝支付加内网穿透工具实现本地回调

项目中咱们集成了支付宝,用户可使用支付宝来进行支付javascript

项目测试时,咱们固然也须要一套测试环境对支付流程进行测试java

若是咱们使用线上的支付宝配置进行测试,那么咱们必须使用真实货币进行支付git

而且支付的金额会进入生产环境的支付宝绑定银行卡中,形成诸多不便github

这里,支付宝为测试提供了一个沙箱环境,使咱们可使用虚拟货币进行支付测试spring

这篇文章就来详细说一下支付宝沙箱环境的配置和使用typescript


首先建立支付宝配置文件类:express

@Configuration@Datapublic class AliPayConfig {
/** * 应用ID,您的APPID,收款帐号既是您的APPID对应支付宝帐号 */ @Value("${sdk.alipay.appID}") private String appID;
/** * 商户私钥,您的PKCS8格式RSA2私钥 */ @Value("${sdk.alipay.merchantPrivateKey}") private String merchantPrivateKey;
/** * 支付宝公钥 */ @Value("${sdk.alipay.alipayPublicKey}") private String alipayPublicKey;
/** * 签名方式 */ @Value("${sdk.alipay.signType}") private String signType;
/** * 网关 */ @Value("${sdk.alipay.gatewayUrl}") private String gatewayUrl;
/** * 编码 */ @Value("${sdk.alipay.charset}") private String charset;
/** * 异步通知地址 */ @Value("${sdk.alipay.notifyUrl}") private String notifyUrl;
/** * 类型 */ @Value("${sdk.alipay.format}") private String format;
/** * 商户号 */ @Value("${sdk.alipay.sysServiceProviderId}") private String sysServiceProviderId;

登录支付宝开放平台进行沙箱环境配置json

注意:沙箱环境的支付宝网关、公钥私钥都和正式不一样,如今作的是沙箱环境的模拟支付
springboot

生成RSA密钥:https://docs.open.alipay.com/291/106074上传应用公钥并获取支付钥:https://docs.open.alipay.com/291/105972/使用应用私钥生成请求签名:https://docs.open.alipay.com/291/105974/使用支付宝公钥验签:https://docs.open.alipay.com/291/106074/下载密匙生成工具:https://docs.open.alipay.com/291/105971

而后生成密钥:
ruby

生成公钥 私钥之后把公钥上传到支付宝,在开发者配置中点击 RSA2(SHA256)密钥

以下图:


上传成功以后点击查看支付宝公钥,注意这里不要搞反了在配置文件中咱们要的是支付宝给咱们的公钥不是咱们刚刚生成的公钥!

配置成功,如今配置项目

打开配置文件添加配置:

商户私钥就是刚刚生成的私钥支付宝公钥不是咱们生成的公钥,是支付宝给咱们的公钥切记 否则签名校验会不经过

添加生成支付代码,简单建立支付没有加参数和业务代码:

 @Override public String payWithAliPay() throws AlipayApiException { /** * 业务代码 */ String order_no = UUID.randomUUID().toString(); //77777777 String body = ""; String total_fee = "999.99"; //真实金钱 AlipayClient alipayClient = new DefaultAlipayClient(aliPayConfig.getGatewayUrl(), aliPayConfig.getAppID(), aliPayConfig.getMerchantPrivateKey(), aliPayConfig.getFormat(), aliPayConfig.getCharset(), aliPayConfig.getAlipayPublicKey(), aliPayConfig.getSignType()); //得到初始化的AlipayClient AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();//建立API对应的request类 JSONObject jsonObject = new JSONObject(); /** * 订单号 */ jsonObject.put("out_trade_no", order_no); /** * 支付金额 */ jsonObject.put("total_amount", total_fee); jsonObject.put("body", ""); /** * 订单主题 */ jsonObject.put("subject", "测试支付宝支付"); /** * 订单支付有效时间 */ jsonObject.put("timeout_express", "90m"); request.setBizContent(jsonObject.toString()); request.setNotifyUrl(aliPayConfig.getNotifyUrl()); AlipayTradePrecreateResponse response = alipayClient.execute(request); System.err.print(response.getBody()); //根据response中的结果继续业务逻辑处理 if (response.getMsg().equals("Success")) { String qrcode = response.getQrCode(); return qrcode;// return qrcode; } return "请求失败";
}

返回结果:

https://qr.alipay.com/bax06188ujygeuazvcah0008

生成二维码,这里就不使用代码生成了


下载沙箱支付宝进行扫描:


支付宝支付是须要回调的

推荐一个内网穿透工具Ngrok

使用方法:

把地址copy到项目的支付宝回调地址中便可


GIT地址:https://github.com/sunluomeng/springboot-alipay


有问题的话能够在公众号内留言,我会第一时间回复

或者回复“内网” 得到工具





长按识别二维码,了解更多




                                              

                                         


本文分享自微信公众号 - 乱敲代码(lqcoder)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索