
一,微信官方文件微信支付开发流程(公共账户支付)
首先,我们进入微信支付官方文档的开发步骤,以检查所需的设置.
[图像上传失败...(image-5eb825-1531014079742)]
由于微信支付需要更高的权限,因此只有授权的服务号码才有权使用微信支付界面. 我们很难申请,因此我们需要从其他朋友那里借用帐号.
进入文档的业务流程部分并检查微信支付流程(我认为仍然需要非常仔细地理解和检查,这有助于您了解微信开发流程.

然后,访问微信支付界面时需要传递许多参数,请参见统一订单
[图片上传失败...(image-df7051-1531014079742)]

在查看完上面的WeChat Pay的正式文档后,我相信您应该对此有一定的了解,但是仍然觉得WeChat Pay的开发非常麻烦,因此我们接下来使用第三方SDK进行开发.
第二,微信支付第三方SDK开发(公共帐户支付)
这是公共帐户付款. 我们使用best-pay-sdk. 该SDK使用PayRequest和PayResponse对请求接口和相应的结果进行很多封装. 需要动态传递的主要参数是openid(用户的唯一标识符)和orderId. 接下来,我们看看如何开发.
1. 配置
//微信公众账号支付配置
WxPayH5Config wxPayH5Config = new WxPayH5Config();
wxPayH5Config.setAppId("xxxxx");
wxPayH5Config.setAppSecret("xxxxxxxx");
wxPayH5Config.setMchId("xxxxxx");
wxPayH5Config.setMchKey("xxxxxxx");
wxPayH5Config.setNotifyUrl("http://xxxxx");
//支付类, 所有方法都在这个类里
BestPayServiceImpl bestPayService = new BestPayServiceImpl();
bestPayService.setWxPayH5Config(wxPayH5Config);
2. 开始付款
PayRequest payRequest = new PayRequest();
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);微信支付java开发详细,验证后微信支付java开发详细,我们需要将这样的数据返回给微信:
<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> </xml>
告诉微信验证已完成,并且不再向我们发送异步通知请求.
还不清楚如何将其集成到项目中吗?没关系,还有一个示例演示,它可以变得更加清晰.
三,演示操作
演示URL为:

我们的主控制器在这里:
@Controller
@Slf4j
public class PayController {
@Autowired
private BestPayServiceImpl bestPayService;
/**
* 发起支付
*/
@GetMapping(value = "/pay")
public ModelAndView pay(@RequestParam("openid") String openid,
Map<String, Object> map) {
PayRequest request = new PayRequest();
Random random = new Random();
//支付请求参数
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));
PayResponse payResponse = bestPayService.pay(request);
log.info("【发起支付】response={}", JsonUtil.toJson(payResponse));
map.put("payResponse", payResponse);
return new ModelAndView("pay/create", map);
}
/**
* 异步回调
*/
@PostMapping(value = "/notify")
public ModelAndView notify(@RequestBody String notifyData) throws Exception {
log.info("【异步回调】request={}", notifyData);
PayResponse response = bestPayService.asyncNotify(notifyData);
log.info("【异步回调】response={}", JsonUtil.toJson(response));
return new ModelAndView("pay/success");
}
}
此文件可以自己下载. 让我们看看如何运行它
项目说明
需要在Jdk版本> 1.8上运行
该项目是使用Spring Boot 1.5.1开发的
项目结构
src/main/java/com/github/lly835 ├── PayDemoApplication.java ├── ServletInitializer.java ├── config │ └── PayConfig.java //支付密钥配置类 └── controller └── PayController.java //支付调用

运行示例
密钥需要在运行之前进行配置,请参见PayConfig.java
运行命令
git clone https://github.com/Pay-Group/best-pay-demo cd best-pay-demo mvn clean package java -jar target/*.war
浏览器访问: 8080 /付费
摘要
以上是编辑器向您介绍的Java版微信公众号支付开发的. 希望对大家有帮助. 如有任何疑问,请给我留言,编辑会及时答复您!
本文标题: Java版微信公众号支付开发的
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/sanxing/article-281088-1.html
美国佬请注意了