微信JSAPI支付

Posted 小禾点点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信JSAPI支付相关的知识,希望对你有一定的参考价值。

重度APP:微信 QQ 支付宝 去哪儿 滴滴

轻量级APP: 美团、京东...

小程序: 就是解决APP安装的问题.主要是解决轻量级APP的使用问题
===========================================================================================================================
开发者文档: https://mp.weixin.qq.com/wiki

微信开发测试账户: http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

微信web开发者工具:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1455784140&token=&lang=zh_CN

测试账号: appID:wxfcc4e68ca9b24b57  如果真正支付,则需要换成下面的支付账号

appsecret:0e5a044e4b3e02cd20ef13dd397f6ddf

支付微信支付的服务号:

AppID:wx4518345b2ab754e1

appsecret: 4aaf7d8e73e06714212c48cc35dd1fd8

微信支付商户号: 1333752701

微信支付密钥: fec8367d6125436a8ffeeb04029223f5
===========================================================================================================================
签名: 目前微信支付、支付宝、易宝支付.....都遵循如下加密原则:

明文  +  密钥  +  算法  ====> 密文, 然后把明文,和密文同时传入到服务器,服务器采用相同的方式对明文进行加密.如果加密之后的文字与传入的密文相等则说明数据没有被篡改

1: access_token: 有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket

获取token地址: access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前
为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效

获取token的地址: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

获取的token如下: x7IGqdiwLt1nIeD1HY6Vla5k4rUybymQK-6UwVsX6KAUWZSfE6rdTIAOKyFEW_psmWshWpzuwCziUYRTwTCnIfBO5DQxYGdwCORNlDePC0gyYG3jjJTCphT6gqD5C6rnWECaABADLJ


2: jsapi_ticket: 公众号用于调用微信JS接口的临时票据(对于JS-SDK权限开发验证),为了安全两小时获取一次,获取access_token之后就可以通过它获取jsapi_ticket

获取ticket的地址如下: https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=x7IGqdiwLt1nIeD1HY6Vla5k4rUybymQK-6UwVsX6KAUWZSfE6rdTIAOKyFEW_psmWshWpzuwCziUYRTwTCnIfBO5DQxYGdwCORNlDePC0gyYG3jjJTCphT6gqD5C6rnWECaABADLJ&type=jsapi

获取的jsapi_ticket 如下: kgt8ON7yVITDhtdwci0qebip4jpiah_WgQZnJvhlgE2fo6RvvviPoIuKYfguHtT-y7pWoLzmMkTKTbmBYGX46w

JS接口签名工具: http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign

官方config加密文件: http://demo.open.weixin.qq.com/jssdk/sample.zip
===========================================================================================================================
微信支付的三大步骤:

1: 获取用户openID: 在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID,对于不同公众号,同一用户的openid不同id

   1.1: 用户同意授权,获取code   https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx4518345b2ab754e1&redirect_uri=http://www.jxy-edu.com/result.jsp&response_type=code&scope=snsapi_userinfo#wechat_redirect
   
   1.2: 通过获取的code,返回当前关注者在当前服务号唯一的openId  https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx4518345b2ab754e1&secret=4aaf7d8e73e06714212c48cc35dd1fd8&code=0215wGRM0gyO872TmNRM0F8IRM05wGRk&grant_type=authorization_code
    
   我的openID为: onejlwKjnW7KAOgotykVdEQID-tQ

2: 获取prepay_id: 提交支付信息,和商户信息到微信服务器,如果数据没有被篡改则微信服务器会返回一个prepay_id(真正支付时需要)

   2.1: 支付接口调试工具 https://pay.weixin.qq.com/wiki/tools/signverify/

   2.2: 根据插件发送http请求,传送的是xml数据: 如果参数正常则返回 prepay_id(两小时内有效):wx20170126183600307be1f91f0767641245

3: wx.chooseWXPay:发送真正微信支付请求

   3.1: 必须保证支付和config是同一个appid

   3.2: 参与支付验证的参数为: appId, timeStamp, nonceStr, package, signType





















































































































































以上是关于微信JSAPI支付的主要内容,如果未能解决你的问题,请参考以下文章

微信支付 jsapi接口怎么调

微信jsapi支付v3 显示商户签名错误

调用支付jsapi缺少参数是啥意思

c#jsapi支付 怎么传参

微信内网页支付(微信 JSAPI 支付)的一点经验

微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法