300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 微信支付开发java开发_微信公众号支付开发全过程 (java 版)

微信支付开发java开发_微信公众号支付开发全过程 (java 版)

时间:2023-10-13 01:59:18

相关推荐

微信支付开发java开发_微信公众号支付开发全过程 (java 版)

微信公众号支付开发全过程 (java 版)

一, 微信官方文档微信支付开发流程 (公众号支付)

首先我们到微信支付的官方文档的开发步骤 https://pay./wiki/doc/api/jsapi.php?chapter=7_3 部分查看一下需要的设置. [图片上传失败...(image-5eb825-1531014079742)]

因为微信支付需要较高的权限, 只有认证了得服务号才有使用微信支付接口的权限, 我们个人很难申请到, 所以需要向其他朋友借用账号.

来到文档的业务流程 https://pay./wiki/doc/api/jsapi.php?chapter=7_4 部分, 查看微信支付的流程 (我觉得这个还是需要十分仔细的了解和查看的, 这有助于你理解微信开发的流程).

然后, 访问微信支付接口是要传递的参数很多, 见统一下单 https://pay./wiki/doc/api/jsapi.php?chapter=9_1 [图片上传失败...(image-df7051-1531014079742)]

通过查看上面的这些微信支付的官方文档之后, 我相信你对这些应该有了一定的了解了, 但是还是觉得微信支付的开发十分的麻烦, 所以我们接下来使用第三方的 sdk 来开发.

二, 微信支付第三方 sdk 开发 (公众号支付)

这个是公众号支付, 我们使用 ** /Pay-Group/best-pay-sdk/blob/master/doc/borrowAccount.md **, 这个 SDK 使用 PayRequest 和 PayResponse 对请求接口和相应结果做了大量的封装, 主要需要动态传入的参数是 openid(用户唯一标识) 和 orderId. 接下来我们看看如何开发.

1, 配置// 微信公众账号支付配置

WxPayH5ConfigwxPayH5Config=newWxPayH5Config();

wxPayH5Config.setAppId("xxxxx");

wxPayH5Config.setAppSecret("xxxxxxxx");

wxPayH5Config.setMchId("xxxxxx");

wxPayH5Config.setMchKey("xxxxxxx");

wxPayH5Config.setNotifyUrl("http://xxxxx");

// 支付类, 所有方法都在这个类里

BestPayServiceImplbestPayService=newBestPayServiceImpl();

bestPayService.setWxPayH5Config(wxPayH5Config);

2, 发起支付PayRequestpayRequest=newPayRequest();

payRequest.setPayTypeEnum(BestPayTypeEnum.WXPAY_H5);

payRequest.setOrderId("123456");

payRequest.setOrderName("微信公众账号支付订单");

payRequest.setOrderAmount(0.01);

payRequest.setOpenid("openid_xxxxxx");

bestPayService.pay(payRequest);

3, 异步回调

bestPayService.asyncNotify();

这就是这个 sdk 所说的 10 行代码解决微信支付.

支付完成后, 微信会返回给把支付结果以一段支付 xml 的数据返回给我们, 我们需要将这段数据传递给异步通知

url(notify_url)

, 来完成支付结果的验证 (验证签名, 验证支付状态), 这两步 SDK 都为我们做好了, 只需这样调用

bestPayService.asyncNotify(notifyData)

;, 完成验证后, 我们需要返回给微信这样一段数据:

告诉微信已完成验证, 不要再给我们发送异步通知的请求.

是不是还是不太清楚如何集成到项目? 没关系, 这个还有示例 demo, 可以更加明了的清楚.

三, demo 运行

demo 网址为: /Pay-Group/best-pay-demo

我们最主要的 controller 放在这里:@Controller

@Slf4j

publicclassPayController{

@Autowired

privateBestPayServiceImplbestPayService;

/**

* 发起支付

*/

@GetMapping(value="/pay")

publicModelAndViewpay(@RequestParam("openid")Stringopenid,

Mapmap){

PayRequestrequest=newPayRequest();

Randomrandom=newRandom();

// 支付请求参数

request.setPayTypeEnum(BestPayTypeEnum.WXPAY_H5);

request.setOrderId(String.valueOf(random.nextInt(1000000000)));

request.setOrderAmount(0.01);

request.setOrderName("最好的支付 sdk");

request.setOpenid(openid);

log.info("[发起支付] request={}",JsonUtil.toJson(request));

PayResponsepayResponse=bestPayService.pay(request);

log.info("[发起支付] response={}",JsonUtil.toJson(payResponse));

map.put("payResponse",payResponse);

returnnewModelAndView("pay/create",map);

}

/**

* 异步回调

*/

@PostMapping(value="/notify")

publicModelAndViewnotify(@RequestBodyStringnotifyData)throwsException{

log.info("[异步回调] request={}",notifyData);

PayResponseresponse=bestPayService.asyncNotify(notifyData);

log.info("[异步回调] response={}",JsonUtil.toJson(response));

returnnewModelAndView("pay/success");

}

}

这个可以自己去下载就可以, 下面看一下一下如何运行

项目说明

需要在 Jdk 版本 > 1.8 上运行 本项目采用 SpringBoot1.5.1 开发

项目结构src/main/java/com/github/lly835

PayDemoApplication.java

ServletInitializer.java

config

PayConfig.java// 支付密钥配置类

controller

PayController.java// 支付调用

运行示例

运行前需要先配置好密钥, 见 PayConfig.java 运行命令git clone /Pay-Group/best-pay-demo

cd best-pay-demo

mvn cleanpackage

java-jar target/*.war

浏览器访问

http://127.0.0.1:8080/pay

来源: https://juejin.im/post/5b416d91e51d451923442e36

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。