编程入门 行业动态 更新时间:2024-10-10 04:23:32

器

这是我参与更文挑战的第12天,活动详情查看: 更文挑战。

微信官方云:除付款码支付场景以外,商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易会话标识后再按NativeJSAPIAPP等不同场景生成交易串调起支付。

翻译官方这段话,大概含义就是除了特殊场景,完成微信支付都是执行以下步骤。

  • 统一下单获取支付参数
  • 前端使用这些支付参数(包括自定义支付成功回调通知服务网地址)调起微信的支付页面
  • 用户支付完成,微信服务器通知应用服务器的支付成功回调通知服务

一、环境准备

先在微信官方注册公众号、商户号。

然后拉取开源代码。

````

感谢binarywang,大佬github的地址为

此项目基于微信开发文档2.0,也就是参数格式为XML

git clone git@github:binarywang/weixin-java-pay-demo.git ````

1.项目结构

2.项目配置

``` logging: level: org.springframework.web: info com.github.binarywang.demo.wx.pay: debug com.github.binarywang.wxpay: debug

wx: pay: appId: #微信公众号或者小程序等的appid mchId: #微信支付商户号 mchKey: #微信支付商户密钥 subAppId: #服务商模式下的子商户公众账号ID subMchId: #服务商模式下的子商户号 keyPath: # p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头) ```

logging配置打印发送给微信服务器的参数和接收到微信服务器的参数,在调试开发阶段很有用。

支付相关的配置,如果微信公众号主体和微信商户号主体是一致话,完成支付只需要配置appIdmchIdmchKey。如果是特约商户模式,就需要配置subAppIdsubMchId

注意:mchKey一定要配置,否则微信服务器会报签名错误。

3.接口介绍

WxpayController中,第一个重要的接口是unifiedOrder,这是一个原生的统一下单接口,入参见微信官方文档 统一下单接口 ,返回值是返回给前端拉起支付页面的参数。

/** * 统一下单(详见.php?chapter=9_1) * 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识" * 接口地址: * * @param request 请求对象,注意一些参数如appid、mchid等不用设置,方法内会自动从配置对象中获取到(前提是对应配置中已经设置) */ @ApiOperation(value = "原生的统一下单接口") @PostMapping("/unifiedOrder") public WxPayUnifiedOrderResult unifiedOrder(@RequestBody WxPayUnifiedOrderRequest request) throws WxPayException { return this.wxService.unifiedOrder(request); }

第二个接口是parseOrderNotifyResult支付回调通知处理。也就是支付成功后,微信服务器回调通知应用方的接口。

@ApiOperation(value = "支付回调通知处理") @PostMapping("/notify/order") public String parseOrderNotifyResult(@RequestBody String xmlData) throws WxPayException { final WxPayOrderNotifyResult notifyResult = this.wxService.parseOrderNotifyResult(xmlData); // TODO 根据自己业务场景需要构造返回对象 return WxPayNotifyResponse.success("成功"); }

其它接口,包括退款,关闭订单也会是用到。按照微信官方文档使用即可。

4.服务配置

首先要满足微信公众号基础配置,需要在微信官方后台配置一个JS接口安全域名网页授权域名,这配置的都是前端对外暴露的域名。后端没有特殊的配置,无需关心。

二、实践

执行统一下单接口,入参和返回值为

【请求地址】: 【请求数据】:<xml> <appid>{appid}</appid> <mch_id>{mch_id}</mch_id> <nonce_str>16234041212437-8-0-25-00010000000</nonce_str> <sign>2783ED6508ACK66C89D41717F08FCCD</sign> <body>0</body> <out_trade_no>1623214123437-8-0-25-00000000000</out_trade_no> <fee_type>CNY</fee_type> <total_fee>100100</total_fee> <spbill_create_ip>127.0.0.1</spbill_create_ip> <time_start>20210611173523</time_start> <notify_url>{notify_url}</notify_url> <trade_type>JSAPI</trade_type> <openid>oiwYCjzf3JF5345sdfsuSzMAdnd7Ak</openid> </xml> 【响应数据】:<xml><return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> <result_code><![CDATA[SUCCESS]]></result_code> <mch_id><![CDATA[{mch_id}]]></mch_id> <appid><![CDATA[{appid}]]></appid> <nonce_str><![CDATA[PjzJGtkA3JYHAlAx]]></nonce_str> <sign><![CDATA[2783ED6508ACK66C89D41717F08FCCD]]></sign> <prepay_id><![CDATA[wx11173511111111111111111115002bc90000]]></prepay_id> <trade_type><![CDATA[JSAPI]]></trade_type> </xml>

一些参数涉及到隐私,统一特殊处理。

附上开源项目的地址微信支付项目,再次感谢大佬。

更多推荐

本文发布于:2024-03-23 20:42:19,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1742598.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!