赞
踩
这是我参与更文挑战的第12天,活动详情查看: 更文挑战。
微信官方云:除付款码支付场景以外,商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易会话标识后再按
Native
、JSAPI
、APP
等不同场景生成交易串调起支付。
翻译官方这段话,大概含义就是除了特殊场景,完成微信支付都是执行以下步骤。
先在微信官方注册公众号、商户号。
然后拉取开源代码。
````
git clone git@github.com:binarywang/weixin-java-pay-demo.git ````
``` 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
配置打印发送给微信服务器的参数和接收到微信服务器的参数,在调试开发阶段很有用。
支付相关的配置,如果微信公众号主体和微信商户号主体是一致话,完成支付只需要配置appId
,mchId
,mchKey
。如果是特约商户模式,就需要配置subAppId
,subMchId
。
注意:mchKey
一定要配置,否则微信服务器会报签名错误。
在WxpayController
中,第一个重要的接口是unifiedOrder
,这是一个原生的统一下单接口,入参见微信官方文档 统一下单接口 ,返回值是返回给前端拉起支付页面的参数。
/** * 统一下单(详见https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1) * 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识" * 接口地址:https://api.mch.weixin.qq.com/pay/unifiedorder * * @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("成功"); }
其它接口,包括退款,关闭订单也会是用到。按照微信官方文档使用即可。
首先要满足微信公众号基础配置,需要在微信官方后台配置一个JS接口安全域名
和网页授权域名
,这配置的都是前端对外暴露的域名。后端没有特殊的配置,无需关心。
执行统一下单接口,入参和返回值为
【请求地址】:https://api.mch.weixin.qq.com/pay/unifiedorder 【请求数据】:<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>
一些参数涉及到隐私,统一特殊处理。
附上开源项目的地址微信支付项目,再次感谢大佬。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。