您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

java对接支付宝支付项目怎么实现

2024/3/1 10:33:08发布27次查看
java对接支付宝支付演示现在有不少的项目都需要对接支付,这里主要是进行讲解对接支付宝h5支付
废话不多说 上代码
引入支付宝官方的sdk
<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-easysdk --> <dependency> <groupid>com.alipay.sdk</groupid> <artifactid>alipay-easysdk</artifactid> <version>2.2.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java --> <dependency> <groupid>com.alipay.sdk</groupid> <artifactid>alipay-sdk-java</artifactid> <version>4.10.124.all</version> </dependency>
编写调用支付的方法
@requestmapping("/test") public void dopost(httpservletrequest httprequest, httpservletresponse httpresponse) throws servletexception, ioexception { //商户号 string app_id=""; //私钥 string app_private_key=""; //编码 string charset="utf-8"; //公钥 string alipay_public_key=""; //我是沙箱环境 所有请求地址是沙箱版 alipayclient alipayclient = new defaultalipayclient("https://openapi.alipaydev.com/gateway.do", app_id, app_private_key, "json", charset, alipay_public_key, "rsa2"); //获得初始化的alipayclient alipaytradewappayrequest alipayrequest = new alipaytradewappayrequest();//创建api对应的request //这里主要是设置回调 也就是支付成功之后你要做什么操作的地址 alipayrequest.setreturnurl("http://domain.com/callback/return_url.jsp"); alipayrequest.setnotifyurl("http://domain.com/callback/notify_url.jsp");//在公共参数中设置回跳和通知地址 /** * @description: * @author: hwk * @date: 2022/6/14 16:34 * @param: out_trade_no 订单编号 * total_amount 付款金额 * subject 商品名称 * product_code 支付方式 如手机网站 pc网站 app支付等 **/ jsonobject jsonobject = new jsonobject(); jsonobject.put("out_trade_no", "264484811515156"); jsonobject.put("total_amount", "66"); jsonobject.put("subject", "测试支付"); jsonobject.put("product_code", "quick_wap_way"); alipayrequest.setbizcontent(jsonobject.tojsonstring()); string form=""; try { form = alipayclient.pageexecute(alipayrequest).getbody(); } catch (alipayapiexception e) { e.printstacktrace(); } //因为我不会写前端 所以直接输出测试 如果在正式环境中 建议直接return 返回的from表单 httpresponse.setcontenttype("text/html;charset=" + charset); httpresponse.getwriter().write(form);//直接将完整的表单html输出到页面 httpresponse.getwriter().flush(); httpresponse.getwriter().close(); } //支付回调 @requestmapping("/test1") public void alipaynotify() { map<string, string> params = getallrequestparam(request); string tradestatus = params.get("trade_status"); if ("trade_success".equals(tradestatus)) { system.out.println("支付成功"); }else { system.out.println("支付失败"); } } private map<string, string> getallrequestparam(final httpservletrequest request) { map<string, string> res = new hashmap<>(8); enumeration<?> temp = request.getparameternames(); while (temp.hasmoreelements()) { string en = (string) temp.nextelement(); string value = request.getparameter(en); res.put(en, value); } return res; }
入参正式支付的时候 可以用string json等接收 我这里只是演示
成功演示图
讲解一下实际支付的时候所需要的参数吧除去appid 公钥 私钥什么的
你正常支付所需要的参数无非 就是商品的id(主要是用于根据商品id查询商品的名称价格等后续调用支付的时候需要)、购买人
然后查询到商品的详情 set到对应的参数里面 去调用支付宝sdk 来生成from表单
你们可以在回调里面进行支付成功之后的一些操作
比如说:购买的是会员 然后在支付成功之后去给他进行开通会员或者续费会员
有一点要提醒你们 发起支付前创建的订单一定要是未支付 在回调里面判断用户是否成功
如果有用户主动查询是否支付成功的操作 建议根据订单号先去数据库查询是否等于支付成功 如果不等于去官方给的接口去查是否支付成功 这样做的好处就是有的时候回调慢了一点 用户主动去查询如果是支付成功不会造成返回支付失败
以上就是java对接支付宝支付项目怎么实现的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product