小程序-微信支付功能

概述

先调用“统一下单”接口,在微信支付服务后台生成预支付交易单,返回正确的预支付交易后,再调起微信支付接口,发起支付。

统一下单接口

URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder
不需要证书
具体参数字段、返回值看-->https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1

成功调用后,得到prepay_id,作为支付接口的参数之一

发起微信支付

wx.requestPayment({
   'timeStamp': '',   //当前时间戳
   'nonceStr': '',     //随机字符串,长度为32个字符以下 (调用随机数函数生成)
   'package': '',   // 统一下单接口返回的 `prepay_id` 参数值,提交格式如:prepay_id=*
   'signType': 'MD5',   // 签名算法,暂支持 MD5 
   'paySign': '',   // 签名
   'success':function(res){
   },
   'fail':function(res){
   }
})

获取时间戳

var timestamp = Date.parse(new Date())
timestamp = timestamp / 1000

获取随机数

var random = Math.round ( Math.random() * 1000 )
/* 其中random会产生0-1之间的数,当*1000时,random函数就会生成0-1000之间的一个随机自然数;
然后我们通过round函数,进行四舍五入。

签名算法
对输入参数进行加密处理,得到paySign字段的值。

1、按照ASCII字典序,对参数名进行排序
如:
stringA='appid=wxd930&body=test&device_info=1000&mch_id=100100&nonce_str=ibuaiVJA';

2、拼接API密钥

stringSignTemp = stringA+'&key=192006250b4c09247ec02edce69f6a2d'
//注:key为商户平台设置的密钥key

3、加密处理

/* MD5签名方式
paySign = MD5(stringSignTemp).toUpperCase()
="9A0A8657E2CA0A9CF3B7" 
/* HMAC-SHA256签名方式
paySign =hash_hmac("sha256",stringSignTemp,key).toUpperCase()
="6A9AE1657590FD6257D693A078E1C3E4BB6BA4DC3ACD6"

你可能感兴趣的:(小程序-微信支付功能)