微信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支付的主要内容,如果未能解决你的问题,请参考以下文章