使用的是Node.js作为后端

统一下单:

appid:这里的appid是调起微信支付的appid

mch_id:商户号,需要注意的是商户号要与appid对应

nonce_str:Math.random().toString(36).substr(2)这是我的随机字符串的生成算法

sign:这里的签名是第一次签名,后面还会讲到第二次签名,主要注意点如下:

  1.首先要把需要传递请求参数使用key1=value&key2=value2的形式进行拼接也就是统一下单文档上的参数,除去sign

  2.所拼接的字符串的属性名的顺序,必须按照ASCII码(字典序)进行排序

  3.在最后拼接上使用的key,这里的key指的是商户平台设置的API秘钥>>>>微信商户平台(pay.weixin.qq.com)-->账户设置-->API安全-->密钥设置

  4.进行MD5签名或者HMAC-SHA256签名方式,这里使用到的是MD5的方式

  5.最后需要需要转换成大写

sign_type:签名方式,要与使用的签名方式一直

spbill_create_ip:这里的ip网上有人说随便填,但是我在尝试时候使用了127.0.0.1返回的数据中数ip错误,所以使用了网络的真实ip,这里使用到了http://ip-api.com/json

trade_type:这里使用JSAPI,需要在商户平台进行开通

openid:用户在商户appid下的唯一标识 获取方式请参考小程序API wx.login和code2Session,其中appid,secret应该对应

最后请求参数生成完毕之后需要传递一个XML文件到服务器这里使用到了xml2js

一般请求失败后可以先检查请求数据格式是否正确,再检查参数顺序以及key是否对应

wx.requestPayment(Object object)调起微信支付

timeStamp:当前的时间戳单位秒

package:这里的形式是prepay_id=***这里的prepay_id是统一下单成功后返回的数据结果

signType:签名方式

paySign:这里是签名也就是前面所说的二次签名这里的签名包含参数有appId(注意这里跟一次签名的属性不同I为大写)传递参数不用,但是必须参与签名,之后就是

nonceStr,package=prepay_id=(这里注意需要加上prepay_id=),signType,timeStamp,还有一个key,这是商户的API秘钥,需要参与签名(之前坑在这里),小程序调用支付API,其他注意事项与第一次签名方式一致

微信小程序微信支付的一些坑的更多相关文章

  1. 微信小程序篇(微信小程序的支付)

    微信小程序的支付和微信公众号的支付是类似的,对比起来还比公众号支付简单了一些,我们只需要调用微信的统一下单接口获取prepay_id之后我们在调用微信的支付即可. 今天我们来封装一般node的支付接口 ...

  2. 总结微信小程序开发中遇到的坑

    总结微信小程序开发中遇到的坑,一些坑你得一个一个的跳啊,/(ㄒoㄒ)/~~ 1,页面跳转和参数传递实例 首先说一下我遇到的需求有一个我的消息页面,里面的数据都是后端返回的,返回的数据大致如下,有一个是 ...

  3. 小程序——微信小程序初学踩过的坑

    微信小程序初学踩过的坑 一.前言     最近因为某些需要和个人兴趣打算开发一下微信小程序,经过在官方网站上的基本了解,我大体知道了微信小程序开发的大致过程,其实最本质的就是MVVM,借用了很多模式上 ...

  4. 【微信小程序】支付过程详解

    一.介绍 今天跟大家分享微信小程序集成支付. 二.分析 1.小程序支付API 地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-pay.html ...

  5. 微信小程序在线支付功能使用总结

    最近需要在微信小程序中用到在线支付功能,于是看了一下官方的文档,发现要在小程序里实现微信支付还是很方便的,如果你以前开发过服务号下的微信支付,那么你会发现其实小程序里的微信支付和服务号里的开发过程如出 ...

  6. 微信小程序—微信自动退款

    微信小程序—微信自动退款 一.业务背景 微信自动退款串接基于酷客多小程序商城系统,为方便财务人员进行订单退款而开发,将酷客多小程序系统财务退款流程和微信退款系统打通.实现一个系统管理运营. 二.业务流 ...

  7. 微信小程序-微信自动退款(Java后台)

    微信小程序-微信自动退款 1.首先分享 微信自动退款接口: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4 微信付款 代码案例 ...

  8. 微信小程序+微信管理后台+微信用户前台

    代码地址如下:http://www.demodashi.com/demo/15043.html #### 微信小程序+微信管理后台+微信用户前台 #### 产品介绍 基础功能开发:景区微信地图导游.天 ...

  9. 微信小程序开发技巧及填坑记录

    以下是自己在开发过程中遇到的坑和小技巧,记录以下: 1.出现了 page[pages/XXX/XXX] not found.May be caused by :1. Forgot to add pag ...

随机推荐

  1. vector的resize与reserve的区别

  2. 利用after和before伪元素在文字两边写横线

    示例: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  3. 《Exception》第八次团队作业:Alpha冲刺(第二天)

    一.项目基本介绍 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 团队名称 Exception 作业学习目标 1.掌握软件测试基础技术.2.学习迭代式增量软 ...

  4. ZOJ 3911Prime Query [素数处理 + 线段树]

    Time Limit: 5 Seconds Memory Limit: 196608 KBYou are given a simple task. Given a sequence A[i] with ...

  5. Module build failed: Module failed because of a eslint warning

    eslint 设置 warning 级别,在 开发编译失败的原因,报错如下: F:\vue-mobile-skeleton>npm run dev > byhealth@1.0.0 dev ...

  6. 2019-03-15 使用Request POST获取中加基金的PDF文件,并下载到本地

    import requests import time base_url='http://www.bobbns.com/common-web/cms/content!getContentsInclud ...

  7. URL中一些特殊符号的替代符

    下表中列出了一些URL特殊符号及编码 十六进制值 1.+ URL 中+号表示空格 %2B 2.空格 URL中的空格可以用+号或者编码 %20 3./ 分隔目录和子目录 %2F 4.? 分隔实际的 UR ...

  8. SpringBoot2.0 监听器ApplicationListener的使用-监听ApplicationReadyEvent事件

    参考:http://www.shareniu.com/article/73.htm 一.需求是想将我的写一个方法能在项目启动后就运行,之前使用了redis的消息监听器,感觉可以照着监听器这个思路做,于 ...

  9. static方法调用

    Static方法调用,类名.方法名 int number = Integer.ParseInt(String ); 将字符串参数作为有符号的十进制整数进行解析 将数字解析成字节数组 Character ...

  10. Spoj 1557 Can you answer these queries II 线段树 随意区间最大子段和 不反复数字

    题目链接:点击打开链接 每一个点都是最大值,把一整个序列和都压缩在一个点里. 1.普通的区间求和就是维护2个值,区间和Sum和延迟标志Lazy 2.Old 是该区间里出现过最大的Sum, Oldlaz ...