微信支付
前台传递商品id、价格到后台生成二维码Controller。
后台封装商户信息(map=>xml),发送至官方,获取支付连接(xml=>map),发送至前端。
前端收到支付连接,生成支付二维码。
前端携带订单编号到后台,检测支付状态。
后端封装商户信息(map=>xml),循环发起请求询问是否支付成功,返回结果集。
前端收到支付状态,执行相应的订单操作。
1.公众号基本参数
public class PayConfig {
public static String appid = "wx???" ;
public static String partner = "???" ;
public static String partnerKey = "???" ;
public static String notifyurl =
"http:???" ;
}
2.支付流程图
3. 基本工具
3.1 SDK
< dependency>
< groupId> com.github.wxpay</ groupId>
< artifactId> wxpay-sdk</ artifactId>
< version> 0.0.3</ version>
</ dependency>
获取随机字符串:生成订单编号
WXPayUtil. generateNonceStr ( ) ;
map、xml相互转换
String xml = WXPayUtil. generateSignedXml ( mm, PayConfig. partnerKey) ;
Map< String, String> resultMap = WXPayUtil. xmlToMap ( result) ;
3.2 JFinal 框架
< dependency>
< groupId> com.jfinal</ groupId>
< artifactId> jfinal</ artifactId>
< version> 3.5</ version>
</ dependency>
HttpKit. post ( url, xml) ;
4.支付流程
4.1 前端二维码生成
<!-- 微信支付二维码-->
<el-dialog :visible.sync="dialogFormVisible" style="width:800px;margin:0px auto;" >
<h1 style="font-size:30px;color:#00B38A" >微信扫一扫支付</h1>
<!-- 二维码显示区-->
<div id="qrcode" style="width:210px;margin:20px auto;"></div>
<h2 id="statusText"></h2><!-- 支付文字提示-->
<p id="closeText"></p><!-- 关闭倒计时提示-->
</el-dialog>
前台传递参数到后台,后台访问微信官方,得到支付连接。
createCode ( ) {
this . axios
get ( "http://localhost:80/order/createCode" , {
params: {
courseid: this . course. id,
coursename: this . course. courseName,
price