微信支付

企业对接微信支付

  • 本文范围为:如何申请开通微信支付,如何区分生产环境和测试环境产生的账单,如何设计微信支付在企业的支付流程,微信支付接口api

如何申请开通微信支付

申请开通

  1. 访问地址 微信支付,点击接入微信支付进入接入界面
    在这里插入图片描述
  2. 选择注册微信支付商户号,进行扫码登陆(注:该微信号将做为商户号的超级管理员,微信号需通过银行卡实名验证,否则将无法进入下一步。
    在这里插入图片描述
    在这里插入图片描述
  3. 登录确认消息会发送到对应微信上,请点击“允许登录”
    在这里插入图片描述
  4. 填写姓名、手机号、邮箱,以创建申请单
    在这里插入图片描述
  5. 进入填写商户资料页面,选择主体类型为“企业”后,按页面提示提交相关信息,详见下图:
    在这里插入图片描述
  6. 点击下一步,预览申请单内容,并确认提交
    在这里插入图片描述
  7. 提交后,系统会先对资料进行校验,大约需要3~5秒,请耐心等待
    在这里插入图片描述
  8. 若系统校验通过,页面会引导进行账户验证,请使用结算账户向财付通指定账户汇入指定金额
    在这里插入图片描述
  9. 账户验证通过后,即已完成申请资料提交
    在这里插入图片描述
    微信支付会在1~2个工作日内完成资料审核,并通过公众号、短信、邮件向超级管理员通知审核结果。

协议签约

微信支付申请资料审核通过后,超级管理员需进行签约后,才可获得正式交易权限和商户平台各项产品能力。微信平台提供两种签约方式:

  • 方式一:手机签约
  1. 审核通过后,待签约模版消息会通过“微信支付商户助手”公众号推送给超级管理员。
    在这里插入图片描述
  2. 点击消息进入签约页面,核对商户信息和阅读协议后,点击签署,即可完成签约。
    在这里插入图片描述
  • 方式二:电脑签约
  1. 访问微信支付商户平台(微信支付),使用申请单的超级管理员微信扫码登录。
    在这里插入图片描述
  2. 手机确认后,电脑上会展示签约页面,核对商户信息和阅读协议后,点击签署,即可完成签约。

另外,因商户的微信支付交易发起依赖于公众号、小程序、移动应用(即APPID)与微信支付商户号(即MCHID)的绑定关系, 所以,还需在签约后登录对应APPID平台完成绑定关系确认。(若申请单中未填写公众号,需在签约后自行发起绑定)

  • 申请成功后,需将APPIDMCHID(微信支付商户号)KEY(API密钥)的值交由技术研发人员。
  • APPID可通过成功接入邮件中查看或通过登录微信公众平台 https://mp.weixin.qq.com->开发(下滑左侧菜单)->基本配置->公众号开发信息,即可查到AppID。
  • MCHID商户号可通过成功接入邮件中查看或通过登陆微信商户平台 https://pay.weixin.qq.com->【账户中心】->【账户设置】->【商户信息】中查看商户号。
  • KEY的值需要手动设置,设置API密钥需要商户号的超级管理员才能操作,详细步骤如下:
  1. 登录微信支付商户平台,进入【账户中心】->【账户设置】->【API安全】->【API密钥】中设置(此步骤前需安装操作证书,获得本机的操作权限)。
    在这里插入图片描述
  2. 输入要设置的密钥、短信验证码和操作密码(32位密钥需自行生成,该值便是所需的KEY
    在这里插入图片描述

如何区分生产环境和测试环境产生的账单

为保证商户接入质量,提升交易安全及用户体验,微信支付的合作服务商在正式上线交易前,必须先根据本文指引完成验收。验收完成后,服务商在验收公众平台(微信号:WXPayAssist)提交验收通过申请,审核通过后,才能开通相应的支付权限(如:扫码支付)。否则,请根据审核驳回提示,重新完成验收。

沙箱环境api协议与正式API完全相同,可通过将正式API的调用URL增加一层sandboxnew路径,即可对接到仿真系统。
例如,刷卡支付URL:https://api.mch.weixin.qq.com/pay/micropay

变更为:https://api.mch.weixin.qq.com/sandboxnew/pay/micropay。

故方案暂定为:
acmtc-spring-boot-main工程的db.properties配置文件中增加wxpay_app_idwxpay_mch_id,wxpay_keywxpay_urlwxpay_notify_rul
其中wxpay_app_id的值为APPID
wxpay_mch_id的值为MCHID
wxpay_key的值为KEY(沙箱环境值不同,需通过https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey接口获取)
wxpay_url的值为https://api.mch.weixin.qq.com(沙箱环境值为https://api.mch.weixin.qq.com/sandboxnew
wxpay_notify_rul的值为微信异步通知回调企业接口,值为https://www.acmtc.com/pay/wx/notifyUrl.do(沙箱环境为http://221.221.138.250:85/pay/wx/notifyUrl.do

  • 全部用例测试通过后,商户在公众号“我的验收”里提交验收通过申请。微信支付团队将在3个工作日内完成验收审核。验收审核通过后,商户会收到邮件通知,相关支付权限开通,可正式上线交易

如何设计微信支付在企业的支付流程

在这里插入图片描述

  1. 平台进行业务校验及组织参数
  2. 调用微信支付【统一下单API】生成预支付交易
  3. 微信支付平台返回二维码链接code_url
  4. 平台通过使用第三方工具将code_url生成二维码,并输出到页面
  5. 用户使用手机,打开微信扫一扫,扫描二维码,请求发送到微信支付平台进行验证与授权,并最终输入密码完成支付
  6. 微信支付平台将交易结果返回给用户微信,并通过短信,消息等方式通知用户
  7. 微信支付平台通过异步消息通知平台交易结果,平台得到通知后,进行业务操作,并最终告知微信支付平台不再发送该单支付通知
  8. 未收到微信支付平台异步消息通知时,可通过定时任务调用【查询订单API】接口查询交易结果

微信支付接口api

统一下单API

统一下单API
支付结果通知
查询订单API
关闭订单API
申请退款API
查询退款API
退款结果通知
SDK与DEMO下载

  • 其中申请退款API需要获取API证书,证书可从:微信商户平台–>账户中心–>账户设置–>API安全–>API证书 处下载,将得到的apiclient_cert.p12放在有访问权限控制的目录中,证书密码为商户号
  • 官方提供的SDK不满足平台逻辑,使用时,需另行改动,但改动不大

生成二维码

  1. pom文件引入zxing:
<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>javase</artifactId>
    <version>3.3.3</version>
</dependency>
  1. 使用
//二维码中包含的信息
String content = "这里是微信接口返回的code_url";
Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
// 指定编码格式
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
// 指定纠错级别(L--7%,M--15%,Q--25%,H--30%)
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
// 编码内容,编码类型(这里指定为二维码),生成图片宽度,生成图片高度,设置参数
BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 200, 200, hints);
//设置请求头
response.setHeader("Content-Type","application/octet-stream");
OutputStream outputStream = response.getOutputStream();
MatrixToImageWriter.writeToStream(bitMatrix, "png", outputStream);
outputStream.flush();
outputStream.close();

PS.在微信开发社区中,发现了部分关于微信支付的问题,先列出来以防遇到;

  1. 微信支付平台数据传输采用xml格式,官方sdk曾出现过xxe漏洞,后更新了一版sdk解决xxe漏洞,但仍需要注意
  2. 微信支付平台沙箱环境,貌似只能按照固定的用例进行测试,无法做到自己随意组装数据
  3. 微信支付平台沙箱环境,签名类型只能是MD5,使用HMAC-SHA256签名类型会报错
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值