zoukankan      html  css  js  c++  java
  • 微信支付(JSAPI、小程序)开发流程记录

    微信支付能力分类

    JSAPI支付
    APP支付
    Native支付
    小程序支付

    该记录介绍

    记录了小程序支付的JSAPI下单小程序调起支付API的流程

    前置准备

    • 已经认证的微信公众号、小程序(建议先认证公众号,之后使用公众号资质申请小程序)
    • 已经认证的微信支付

    小程序开发准备

    1. 获取小程序的appidsecret

    微信支付开发准备

    1.商户号获取(mch_id)

    image

    2. 设置APIv3密钥

    在账户中心-API安全页面来设置APIv3密钥(密钥请保管好,设置后无法查看,如果忘记了就只能修改了)
    image

    3.证书项说明

    微信支付有两个很重要的证书,分别是商户证书平台证书,两个证书的区别如下,引自微信官方支付官方文档

    • “商户证书”是指由商户申请的,包含商户的商户号、公司名称、公钥信息的证书。
    • “平台证书”是指由微信支付负责申请的,包含微信支付平台标识、公钥信息的证书。
    • 商户在调用 API 时用自身的私钥签名,微信支付使用商户证书中的公钥来验签。微信支付在响应的报文中使用自身的私钥签名,商户使用平台证书中的公钥来验签。

    简单的来说,商户证书是向微信支付发起请求或回复微信支付回调时使用的,平台证书是微信支付向商户发起请求或回复商户回调时使用的。

    另外,微信支付向商户进行请求回复与请求回调时除了密文外,还会附带明文信息,所以如果对安全性要求不是极高的情况下,可以不使用平台证书,博主只实现了微信支付-JSAPI下单这一个接口,所以微信支付进行请求回复与请求回调的密文解码部分,本篇文章不做说明,如果后续有对接则补充。

    4. 申请API证书(商户证书)

    点击账户中心-API安全-申请证书来申请API证书
    image
    根据提示下载证书工具
    image
    根据提示申请证书
    image
    之后将证书工具中生成的请求串粘贴到网页中,即可完成API证书的生成(此时一定要保管好证书,证书只能下载一次,注意证书不要泄露给其他人)

    5. 获取平台证书与序列号

    获取方法有两种,第一种方法为通过微信支付官方文档提供的接口来获取,第二种方法为通过微信支付官方提供的工具来获取。
    (不要觉得第二种手动的工具使用麻烦而使用第一种,后来我才知道平台证书5年才更新一次,T-T我在写平台证书获取代码这里花了3个小时的时间才调试成功)

    • 第一种方法可微信支付官方文档,该方法对于新手极其复杂,不建议新手采用该方法,故不作叙述,需要代码及技术支持请联系博主。
    • 第二种方法时使用官方提供的工具,详情可访问查看https://github.com/wechatpay-apiv3/CertificateDownloader

    小程序支付程序执行流程

    1. 小程序获取用户code和要支付的金额(请根据实际项目需求来决定支付金额是由前端设置还是后端设置)
    2. 后端根据小程序的用户code获取用户openid
    3. 调用JSAPI下单接口(该过程需要使用商户证书对请求数据进行签名)
    4. 小程序调起支付(该过程需要使用商户证书对请求数据进行签名,为了安全性签名过程请务必在后端实现)
    5. 用户支付
    6. 等待微信支付平台的支付结果回调

    避免踩坑

    经过测试发现,JSAPI下单、JSAPI调起支付API的调用过程中,所有的时间戳与签名使用的nonceStr必须完全一样,才可以调起支付成功,否则会提示签名验证失败。

  • 相关阅读:
    获取字符串中指定字符间的字符串
    删除一个xml
    读取文件夹下所有文件名,饼写入xml
    在现有xml增加一个新的节点
    某一时间执行某方法c# 写在global里
    Ubuntu下安装Adobe Flash Player
    Josephus(约瑟夫环)
    html5综合属性图表
    第一步
    框架学习的个人见解
  • 原文地址:https://www.cnblogs.com/zhang-zhibo/p/15425463.html
Copyright © 2011-2022 走看看