畅购商城4.0 微信支付

畅购商城4.0
1.微信支付
1.1流程分析

1.2微信支付概述
1.2.1账号申请
步骤一:注册公众号,根据自身主体类型注册对应的公众号
只能申请服务号,订阅号没有办法申请支付
https://kf.qq.com/product/weixinmp.html#hid=87

步骤二:微信认证,公众号认证后才可申请微信支付

步骤三:申请微信支付
登录公众平台,点击左侧菜单【微信支付】,开始填写资料等待审核,审核时间为1-5个工作日内。

步骤四:商户账号审核
审核通过之后会往您填写的邮箱里发一封邮件是关于微信支付商户的帐号信息,同时您对公账户上也会收到几毛钱的汇款,需要您查看下具体的金额然后登录微信支付商户平台进行验证

步骤五:在线签署协议
本协议为线上电子协议,签署后方可进行交易及资金结算,签署完立即生效。

步骤六:完成上述步骤,你可以得到调用API用到的账号和密钥
appid:微信公众账号或开放平台APP的唯一标识
mch_id:商户号
key:商户密钥

1.2.2已有账号
以下为“传智播客”的微信支付账号
appid: wx8397f8696b538317
mch_id:1473426802
key: T6m9iK73b0kn9g5v426MKfHQH7X8rKwb

1.2.3支付接口和SDK(了解)
微信支付帮助文档地址:https://pay.weixin.qq.com/wiki/doc/api/index.html

手动调用,常见的接口(了解)
接口
下订单 https://api.mch.weixin.qq.com/pay/unifiedorder
查询订单 https://api.mch.weixin.qq.com/pay/orderquery
关闭订单 https://api.mch.weixin.qq.com/pay/closeorder

手动调用整体思路:
根据接口要求,组装请求参数
以XML的方式,通过POST请求,发送给支付接口
微信支付接口,以XML方式给予响应

实际开发中,我们很少直接使用“接口操作”。通常情况下使用微信提供的SDK(工具类)
com.github.wxpay.sdk.WXPay类就是核心操作封装类。

方法名 说明
microPay 刷卡支付
unifiedOrder 统一下单
orderQuery 查询订单
reverse 撤销订单
closeOrder 关闭订单
refund 申请退款
refundQuery 查询退款
downloadBill 下载对账单
report 交易保障
shortUrl 转换短链接
authCodeToOpenid 授权码查询openid

1.3入门案例
1.3.1 统一下单
在测试项目完成操作:test-wxpay
步骤一:添加依赖

com.github.wxpay
wxpay-sdk
0.0.3

步骤二:编写配置类,实现WXPayConfig接口

package com.czxy.test.pay;

import com.github.wxpay.sdk.WXPayConfig;

import java.io.InputStream;

/**

  • Created by liangtong.
    /
    public class MyWXPayConfig implements WXPayConfig {
    /
    *

    • 应用ID:微信开放平台审核通过的应用APPID
    • @return
      */
      @Override
      public String getAppID() {
      return “wx8397f8696b538317”;
      }

    /**

    • 商户号:微信支付分配的商户号
    • @return
      */
      @Override
      public String getMchID() {
      return “1473426802”;
      }

    /**

    • 秘钥,用于生成签名(sign)
    • @return
      */
      @Override
      public String getKey() {
      return “T6m9iK73b0kn9g5v426MKfHQH7X8rKwb”;
      }

    @Override
    public InputStream getCertStream() {
    return null;
    }

    /**

    • 连接超时时间,单位是毫秒
    • @return
      */
      @Override
      public int getHttpConnectTimeoutMs() {
      return 0;
      }

    /**

    • 读超时时间,单位是毫秒
    • @return
      */
      @Override
      public int getHttpReadTimeoutMs() {
      return 0;
      }
      }

步骤三:测试类
package com.czxy.test.pay;

import com.github.wxpay.sdk.WXPay;

import java.util.HashMap;
import java.util.Map;

/**

  • Created by liangtong.
    */
    public class TestPayUnifiedOrder {
    public static void main(String[] args) throws Exception {

     WXPay wxPay = new WXPay(new MyWXPayConfig());
    
     Map<String,String> map=new HashMap();
     map.put("body","畅购");                          //商品描述
     map.put("out_trade_no","20200401001");         //订单号
     map.put("total_fee","1");                       //金额
     map.put("spbill_create_ip","127.0.0.1");      //终端IP
     map.put("notify_url","http://www.baidu.com");//回调地址
     //JSAPI--JSAPI支付(或小程序支付)、NATIVE--Native支付、APP--app支付,MWEB--H5支付
     map.put("trade_type","NATIVE");              //交易类型
    
     Map<String, String> result = wxPay.unifiedOrder( map );
     System.out.println("支付结果:" + result.get("code_url"));
     System.out.println("返回状态码:" + result.get("return_code"));
     System.out.println("返回信息:" + result.get("return_msg"));
     System.out.println("业务结果:" + result.get("result_code"));
     System.out.println(result);
    

    }
    }

步骤四:结果
支付结果:weixin://wxpay/bizpayurl?pr=Mfqcl2R
返回状态码:SUCCESS
返回信息:OK
业务结果:SUCCESS

1.3.2查询订单
package com.czxy.test.pay;

import com.github.wxpay.sdk.WXPay;

import java.util.HashMap;
import java.util.Map;

/**

  • Created by liangtong.
    */
    public class TestPayOrderQuery {
    public static void main(String[] args) throws Exception {

     WXPay wxPay = new WXPay(new MyWXPayConfig());
    
     Map<String,String> map=new HashMap();
     map.put("out_trade_no","20200401001");         //订单号
    
     Map<String, String> result = wxPay.orderQuery( map );
     System.out.println("返回状态码:" + result.get("return_code"));
     System.out.println("返回信息:" + result.get("return_msg"));
     System.out.println("业务结果:" + result.get("result_code"));
     System.out.println("交易状态:" + result.get("trade_state"));
     /*
         SUCCESS—支付成功
         REFUND—转入退款
         NOTPAY—未支付
         CLOSED—已关闭
         REVOKED—已撤销(刷卡支付)
         USERPAYING--用户支付中
         PAYERROR--支付失败
      */
     System.out.println("交易状态:" + result.get("trade_state"));
     System.out.println("交易状态描述:" + result.get("trade_state_desc"));
     System.out.println(result);
    

    }
    }

1.4JS版二维码:QRCode.js
1.4.1概述
QRCode.js 是一个用于生成二维码的 JavaScript 库。主要是通过获取 DOM 的标签,再通过 HTML5 Canvas 绘制而成,不依赖任何库。

1.4.2入门案例
拷贝 qrcode.min.js

编写wxpay.html

二维码入门案例

http://localhost:3000/wxpay.html

1.5支付模块
1.5.1支付页面
步骤一:创建 flow3.vue组件

步骤二:引入第三方资源(js、css)

1.5.2接口
POST http://localhost:10010/order-service/pay
{
“sn” : “1255513323915579400”
}

1.5.3后端实现
步骤一:编写 PayRequest,用于封装数据

package com.czxy.changgou4.vo;

import lombok.Data;

/**

  • @author 桐叔
  • @email liangtong@itcast.cn
    */
    @Data
    public class PayRequest {
    private Long sn;
    }

步骤二:检查order服务,yml文件中是否有微信配置

sc:
pay:
appID: wx8397f8696b538317
mchID: 1473426802
key: T6m9iK73b0kn9g5v426MKfHQH7X8rKwb
httpConnectTimeoutMs: 5000
httpReadTimeoutMs: 10000

步骤三:编写PayProperties,用于加载微信配置

package com.czxy.changgou4.config;

import com.github.wxpay.sdk.WXPayConfig;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

import java.io.InputStream;

/**

  • @author 桐叔

  • @email liangtong@itcast.cn
    */
    @Data
    @ConfigurationProperties(prefix = “sc.pay”)
    public cla

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值