微信支付 提示track packagee 中的参数 partner或 prepay_id为空 怎么回事? 这个问题 一般是哪里出问题了?

& 微信JS-SDK说明文档
微信JS-SDK说明文档
关键字:&&&nbsp
微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。
通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。
此文档面向网页开发者介绍微信JS-SDK如何使用及相关注意事项。
先登录进入&公众号设置&的&功能设置&里填写&JS接口安全域名&。
备注:登录后可在&开发者中心&可查看对应的接口权限。
在需要调用JS接口的页面引入如下JS文件,(支持https):
备注:支持使用 AMD/CMD 标准模块加载方法加载
所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用)。
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名,见附录1
jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
wx.ready(function(){
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
wx.error(function(res){
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
所有接口通过wx对象(也可使用jWeixin对象)来调用,参数是一个对象,除了每个接口本身需要传的参数之外,还有以下通用参数:
success:接口调用成功时执行的回调函数。
fail:接口调用失败时执行的回调函数。
complete:接口调用完成时执行的回调函数,无论成功或失败都会执行。
cancel:用户点击取消时的回调函数,仅部分有用户取消操作的api才会用到。
trigger: 监听Menu中的按钮点击时触发的方法,该方法仅支持Menu中的相关接口。
以上几个函数都带有一个参数,类型为对象,其中除了每个接口本身返回的数据之外,还有一个通用属性errMsg,其值格式如下:
调用成功时:&xxx:ok& ,其中xxx为调用的接口名
用户取消时:&xxx:cancel&,其中xxx为调用的接口名
调用失败时:其值为具体错误信息
wx.checkJsApi({
jsApiList: ['chooseImage'] // 需要检测的JS接口列表,所有JS接口列表见附录2,
success: function(res) {
// 以键值对的形式返回,可用的api值true,不可用为false
// 如:{&checkResult&:{&chooseImage&:true},&errMsg&:&checkJsApi:ok&}
备注:checkJsApi接口是客户端6.0.2新引入的一个预留接口,第一期开放的接口均可不使用checkJsApi来检测。
请注意不要有诱导分享等违规行为,对于诱导分享行为将永久回收公众号接口权限,详细规则请查看:&。
wx.onMenuShareTimeline({
title: '', // 分享标题
link: '', // 分享链接
imgUrl: '', // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
cancel: function () {
// 用户取消分享后执行的回调函数
wx.onMenuShareAppMessage({
title: '', // 分享标题
desc: '', // 分享描述
link: '', // 分享链接
imgUrl: '', // 分享图标
type: '', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
success: function () {
// 用户确认分享后执行的回调函数
cancel: function () {
// 用户取消分享后执行的回调函数
wx.onMenuShareQQ({
title: '', // 分享标题
desc: '', // 分享描述
link: '', // 分享链接
imgUrl: '' // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
cancel: function () {
// 用户取消分享后执行的回调函数
wx.onMenuShareWeibo({
title: '', // 分享标题
desc: '', // 分享描述
link: '', // 分享链接
imgUrl: '' // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
cancel: function () {
// 用户取消分享后执行的回调函数
wx.chooseImage({
success: function (res) {
var localIds = res.localI // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
wx.previewImage({
current: '', // 当前显示的图片链接
urls: [] // 需要预览的图片链接列表
wx.uploadImage({
localId: '', // 需要上传的图片的本地ID,由chooseImage接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
var serverId = res.serverId; // 返回图片的服务器端ID
备注:上传图片有效期3天,可用微信下载多媒体文件接口下载上传的图片,此处获得的 serverId 即 media_id,参考文档&
wx.downloadImage({
serverId: '', // 需要下载的图片的服务器端ID,由uploadImage接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
var localId = res.localId; // 返回图片下载后的本地ID
wx.startRecord();
wx.stopRecord({
success: function (res) {
var localId = res.localId;
wx.onVoiceRecordEnd({
// 录音时间超过一分钟没有停止的时候会执行 complete 回调
complete: function (res) {
var localId = res.localId;
wx.playVoice({
localId: '' // 需要播放的音频的本地ID,由stopRecord接口获得
wx.pauseVoice({
localId: '' // 需要暂停的音频的本地ID,由stopRecord接口获得
wx.stopVoice({
localId: '' // 需要停止的音频的本地ID,由stopRecord接口获得
wx.onVoicePlayEnd({
serverId: '', // 需要下载的音频的服务器端ID,由uploadVoice接口获得
success: function (res) {
var localId = res.localId; // 返回音频的本地ID
wx.uploadVoice({
localId: '', // 需要上传的音频的本地ID,由stopRecord接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
var serverId = res.serverId; // 返回音频的服务器端ID
备注:上传语音有效期3天,可用微信下载多媒体文件接口下载上传的语音,此处获得的 serverId 即 media_id,参考文档&
wx.downloadVoice({
serverId: '', // 需要下载的音频的服务器端ID,由uploadVoice接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
var localId = res.localId; // 返回音频的本地ID
wx.translateVoice({
localId: '', // 需要识别的音频的本地Id,由录音相关接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function (res) {
alert(res.translateResult); // 语音识别的结果
wx.getNetworkType({
success: function (res) {
var networkType = res.networkT // 返回网络类型2g,3g,4g,wifi
wx.openLocation({
latitude: 0, // 纬度,浮点数,范围为90 ~ -90
longitude: 0, // 经度,浮点数,范围为180 ~ -180。
name: '', // 位置名
address: '', // 地址详情说明
scale: 1, // 地图缩放级别,整形值,范围从1~28。默认为最大
infoUrl: '' // 在查看位置界面底部显示的超链接,可点击跳转
wx.getLocation({
timestamp: 0, // 位置签名时间戳,仅当需要兼容6.0.2版本之前时提供
nonceStr: '', // 位置签名随机串,仅当需要兼容6.0.2版本之前时提供
addrSign: '', // 位置签名,仅当需要兼容6.0.2版本之前时提供,详见附录4
success: function (res) {
var latitude = res. // 纬度,浮点数,范围为90 ~ -90
var longitude = res. // 经度,浮点数,范围为180 ~ -180。
var speed = res. // 速度,以米/每秒计
var accuracy = res. // 位置精度
wx.hideOptionMenu();
wx.showOptionMenu();
wx.closeWindow();
wx.hideMenuItems({
menuList: [] // 要隐藏的菜单项,所有menu项见附录3
wx.showMenuItems({
menuList: [] // 要显示的菜单项,所有menu项见附录3
wx.hideAllNonBaseMenuItem();
wx.showAllNonBaseMenuItem();
wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: [&qrCode&,&barCode&], // 可以指定扫二维码还是一维码,默认二者都有
success: function (res) {
var result = res.resultS // 当needResult 为 1 时,扫码返回的结果
wx.openProductSpecificView({
productId: '', // 商品id
viewType: '' // 0.默认值,普通商品详情页1.扫一扫商品详情页2.小店商品详情页
wx.chooseCard({
shopId: '', // 门店Id
cardType: '', // 卡券类型
cardId: '', // 卡券Id
timestamp: 0, // 卡券签名时间戳
nonceStr: '', // 卡券签名随机串
signType: '', // 签名方式,默认'SHA1'
cardSign: '', // 卡券签名,详见附录5
success: function (res) {
var cardList= res.cardL // 用户选中的卡券列表信息
wx.addCard({
cardList: [{
cardId: '',
cardExt: ''
}], // 需要添加的卡券列表
success: function (res) {
var cardList = res.cardL // 添加的卡券列表信息
wx.openCard({
cardList: [{
cardId: '',
}]// 需要打开的卡券列表
wx.chooseWXPay({
timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr: '', // 支付签名随机串,不长于 32 位
package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
signType: '', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
paySign: '', // 支付签名
备注:prepay_id 通过微信支付统一下单接口拿到,paySign 采用统一的微信支付 Sign 签名生成方法,注意这里 appId 也要参与签名,appId 与 config 中传入的 appId 一致,即最后参与签名的参数有appId, timeStamp, nonceStr, package, signType。
微信支付统一下单接口文档:
微信支付签名算法:
jsapi_ticket
生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket&。
参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):
用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket):
成功返回如下JSON:
&errcode&:0,
&errmsg&:&ok&,
&ticket&:&bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA&,
&expires_in&:7200
获得jsapi_ticket之后,就可以生成JS-SDK权限验证的签名了。
签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2&)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。
即signature=sha1(string1)。 示例:
noncestr=Wm3WZYTPz0wzccnW
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg
timestamp=
步骤1. 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2&)拼接成字符串string1:
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=&url=http://mp.
步骤2. 对string1进行sha1签名,得到signature:
f4d90daf4b3bca175ba34c443a7b
签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。
签名用的url必须是调用JS接口页面的完整URL。
出于安全考虑,开发者必须在服务器端实现签名的逻辑。
版本1.0.0接口
onMenuShareTimeline
onMenuShareAppMessage
onMenuShareQQ
onMenuShareWeibo
startRecord
stopRecord
onVoiceRecordEnd
pauseVoice
onVoicePlayEnd
uploadVoice
downloadVoice
chooseImage
previewImage
uploadImage
downloadImage
translateVoice
getNetworkType
openLocation
getLocation
hideOptionMenu
showOptionMenu
hideMenuItems
showMenuItems
hideAllNonBaseMenuItem
showAllNonBaseMenuItem
closeWindow
scanQRCode
chooseWXPay
openProductSpecificView
chooseCard
举报: &menuItem:exposeArticle&
调整字体: &menuItem:setFont&
日间模式: &menuItem:dayMode&
夜间模式: &menuItem:nightMode&
刷新: &menuItem:refresh&
查看公众号(已添加): &menuItem:profile&
查看公众号(未添加): &menuItem:addContact&
发送给朋友: &menuItem:share:appMessage&
分享到朋友圈: &menuItem:share:timeline&
分享到QQ: &menuItem:share:qq&
分享到Weibo: &menuItem:share:weiboApp&
收藏: &menuItem:favorite&
分享到FB: &menuItem:share:facebook&
调试: &menuItem:jsDebug&
编辑标签: &menuItem:editTag&
删除: &menuItem:delete&
复制链接: &menuItem:copyUrl&
原网页: &menuItem:originPage&
阅读模式: &menuItem:readMode&
在QQ浏览器中打开: &menuItem:openWithQQBrowser&
在Safari中打开: &menuItem:openWithSafari&
邮件: &menuItem:share:email&
一些特殊公众号: &menuItem:share:brand&
addrSign的生成规则与JS-SDK权限验证的签名生成规则相同(参考附录1),只是参与签名参数有所不同。参与addrSign的签名参数有:appId、url(当前网页url)、timestamp、noncestr、accesstoken(用户授权凭证,请参照oauth2.0 协议获取)。
卡券扩展字段cardExt说明
cardExt本身是一个JSON字符串,是商户为该张卡券分配的唯一性信息,包含以下字段:
指定的卡券code码,只能被领一次。use_custom_code字段为true的卡券必须填写,非自定义code不必填写。
指定领取者的openid,只有该用户能领取。bind_openid字段为true的卡券必须填写,非自定义openid不必填写。
时间戳,商户生成从日00:00:00至今的秒数,即当前的时间,且最终需要转换为字符串形式;
由商户生成后传入。
签名,商户将接口列表中的参数按照指定方式进行签名,签名方式使用SHA1,具体签名方案参见下文;由商户按照规范签名后传入。
红包余额,以分为单位。红包类型必填(LUCKY_MONEY),其他卡券类型不填。
将appsecret(第三方用户唯一凭证密)、timestamp、card_id、code、openid、balance的value值进行字符串的字典序排序。
将所有参数字符串拼接成一个字符串进行sha1加密,得到signature。
signature中的timestamp和card_ext中的timestamp必须保持一致。
假如数据示例中code=23456,timestamp=,card_id=345667,appsecret=45678则signature=sha1(89)=4F4FAE4E1BC940FEC03E。
卡券签名cardSign说明
将appsecret、app_id、location_id、times_tamp、nonce_str、card_id、card_type的value值进行字符串的字典序排序。
将所有参数字符串拼接成一个字符串进行sha1加密,得到cardSign。
调用config 接口的时候传入参数 debug: true 可以开启debug模式,页面会alert出错误信息。以下为常见错误及解决方法:
invalid url domain当前页面所在域名与使用的appid没有绑定(一个appid可以绑定三个有效域名,见)。
invalid signature签名错误。建议按如下顺序检查:
确认签名算法正确,可用&&页面工具进行校验。
确认config中noncestr, timestamp与用以签名中的对应noncestr, timestamp一致。
确认url是页面完整的url,包括GET参数部分。
确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。
确保一定缓存access_token和jsapi_ticket,可以减少两次服务器请求加速体验外,还避免了触发频率限制,提高服务稳定性。
the permission value is offline verifying这个错误是因为config没有正确执行,或者是调用的JSAPI没有传入config的jsApiList参数中。建议按如下顺序检查:
确认config正确通过。
如果是在页面加载好时就调用了JSAPI,则必须写在wx.ready的回调中。
确认config的jsApiList参数包含了这个JSAPI。
permission denied该公众号没有权限使用这个JSAPI(部分接口需要认证之后才能使用)。
Android用户已取消分享朋友圈,但仍返回分享成功(微信团队已修复此问题,会在Android6.1版本上线)
Android6.0.2部分客户端无法使用监听分享接口(Android6.0.2之前以及6.0.2.58以后的版本都不会有问题,请从官网下载最新版本体验)
服务上线之后无法获取jsapi_ticket,自己测试时没问题。因为access_token和jsapi_ticket必须要在自己的服务器缓存,否则上线后会触发频率限制。请确保一定对token和ticket做缓存以减少2次服务器请求,不仅可以避免触发频率限制,还加快你们自己的服务速度。目前为了方便测试提供了1w的获取量,超过阀值后,服务将不再可用,请确保在服务上线前一定缓存access_token和jsapi_ticket。
Android部分版本上传图片接口偶尔卡住(早期的Android6.0.2版本存在此问题,官方已修复,6.0.2.58之后的版本都支持,请从官网下载最新版本体验)
下载多媒体相关jsapi只能下载通过jsapi上传的资源,无法下载通过多媒体后台接口上传的资源(微信团队已经确认该问题,正在努力修复中,预计本周修复上线)
DEMO页面:
示例代码:
备注:链接中包含php、java、nodejs以及python的示例代码供第三方参考,第三方切记要对获取的accesstoken以及jsapi_ticket进行缓存以确保不会触发频率限制。
邮箱地址:weixin-
邮件主题:【微信JS-SDK反馈】
邮件内容说明:
用简明的语言描述问题所在,并交代清楚遇到该问题的场景,可附上截屏图片,微信团队会尽快处理你的反馈。
正在读取...
王君 的近期作品[职业日志][职业日志][职业日志][职业日志][职业日志][职业日志]最新资讯
不与人沟通的程序员不是好程序员,一个优秀的解决方案需要计算机世界与人类世界的双重技能。只有连接起两个世界,才能成为一个真正的优秀程序员。
商学院推荐课程
王君 的日志归档
[查看更多]
赞助商广告关键字:微信支付 微信支付v3 native支付 统一支付 Native支付 prepay_id&作者:方倍工作室原文:&/txw1958/p/wxpayv3-native-static.html&本文介绍微信支付下的基于静态链接二维码的Native支付实现流程。注意微信支付现在分为v2版和v3版,号之前申请的为v2版,之后申请的为v3版。V3版的微信支付没有paySignKey参数。v2的相关介绍请参考方倍工作室的其他文章。本文介绍的为微信支付v3。&一、静态链接二维码生成静态链接二维码的生成过程中,核心是sign签名。下面介绍sign签名过程。1. 参数准备唯一要确定的参数是产品的ID号。其他的是支付参数或者由程序生成。程序生成的部分如下。$this-&parameters["appid"] = WxPayConf_pub::APPID;//公众账号ID$this-&parameters["mch_id"] = WxPayConf_pub::MCHID;//商户号$time_stamp = time();$this-&parameters["time_stamp"] = "$time_stamp";//时间戳$this-&parameters["nonce_str"] = $this-&createNoncestr();//随机字符串产品ID号可以临时这样生成的。$product_id = WxPayConf_pub::APPID."static";//自定义商品id$nativeLink-&setParameter("product_id","$product_id");//商品id生成后,数组如下:object(NativeLink_pub)[1] public 'parameters' =&
array (size=5)
'product_id' =& string 'wxdbfd43c561acxxxxstatic' (length=24)
'appid' =& string 'wxdbfd43c561acxxxx' (length=18)
'mch_id' =& string '' (length=8)
'time_stamp' =& string '' (length=10)
'nonce_str' =& string 'no6qegpf11rn13nyl2q9izsk60be7fxc' (length=32)2. 签名生成1) 将传入参数进行字典序排序,排序后结果如下:array (size=5) 'appid' =& string 'wxdbfd43c561acxxxx' (length=18) 'mch_id' =& string '' (length=8) 'nonce_str' =& string 'no6qegpf11rn13nyl2q9izsk60be7fxc' (length=32) 'product_id' =& string 'wxdbfd43c561acxxxxstatic' (length=24) 'time_stamp' =& string '' (length=10)2) 生成URL键值对,生成如下:appid=wxdbfd43c561acxxxx&mch_id=&nonce_str=no6qegpf11rn13nyl2q9izsk60be7fxc&product_id=wxdbfd43c561acxxxxstatic&time_stamp=3) 拼接key,得到新字符串如下:appid=wxdbfd43c561acxxxx&mch_id=&nonce_str=no6qegpf11rn13nyl2q9izsk60be7fxc&product_id=wxdbfd43c561acxxxxstatic&time_stamp=&key=abcdefgabcdefg4) 将新字符串进行md5运算,结果如下546cd81b0b66f57dc27bfeecea1fb2185) 签名结果进行大写,结果如下:546CD81B0B66F57DC27BFEECEA1FB218至此,成功得到签名。下面可以构造url3. 签名生成静态Native支付的链接格式如下weixin://wxpay/bizpayurl?sign=XXXXX&appid=XXXXX&mch_id=XXXXX&product_id=XXXXXX&time_stamp=XXXXXX&nonce_str=XXXXX其中 XXXXX 为商户需要填写的内容,将该链接生成二维码,如需要打印发布静态的二维码,采用此格式。上一步中,生成的所有参数如下所示:object(NativeLink_pub)[1] public 'parameters' =&
array (size=6)
'product_id' =& string 'wxdbfd43c561acxxxxstatic' (length=24)
'appid' =& string 'wxdbfd43c561acxxxx' (length=18)
'mch_id' =& string '' (length=8)
'time_stamp' =& string '' (length=10)
'nonce_str' =& string 'no6qegpf11rn13nyl2q9izsk60be7fxc' (length=32)
'sign' =& string '546CD81B0B66F57DC27BFEECEA1FB218' (length=32)通过下述函数得到二维码链接地址//获取链接$product_url = $nativeLink-&getUrl();构造最终的链接如下所示:weixin://wxpay/bizpayurl?appid=wxdbfd43c561acxxxx&mch_id=&nonce_str=no6qegpf11rn13nyl2q9izsk60be7fxc&product_id=wxdbfd43c561acxxxxstatic&sign=546CD81B0B66F57DC27BFEECEA1FB218&time_stamp=&二、请求获取商品信息1. 参数准备接收微信支付配置中,需要配置Native原生支付回调URL该回调URL将在扫描二维码时发起支付请求,请求将收到扫描静态Native支付链接的通知,接收通知的代码如下://使用native通知接口$nativeCall = new NativeCall_pub();//接收微信请求$ = $GLOBALS['HTTP_RAW_POST_DATA'];接到到的&&
&appid&&![CDATA[wxdbfd43c561acxxxx]]&&/appid&
&openid&&![CDATA[oc-XIjh32OByBiak_gSZ6JOqGFx8]]&&/openid&
&mch_id&&![CDATA[]]&&/mch_id&
&is_subscribe&&![CDATA[Y]]&&/is_subscribe&
&nonce_str&&![CDATA[PvLH3nsJjQCvwnYY]]&&/nonce_str&
&product_id&&![CDATA[wxdbfd43c561acxxxxstatic]]&&/product_id&
&sign&&![CDATA[F1CBDE07E3B5AE6EAF4DEC]]&&/sign&&/&同时Native支付将提取product_id,用于统一支付填参//提取product_id$product_id = $nativeCall-&getProductId();2. 统一支付流程下面是固定参数//使用统一支付接口$unifiedOrder = new UnifiedOrder_pub();$this-&parameters["appid"] = WxPayConf_pub::APPID;//公众账号ID$this-&parameters["mch_id"] = WxPayConf_pub::MCHID;//商户号$this-&parameters["spbill_create_ip"] = $_SERVER['REMOTE_ADDR'];//终端ip
$this-&parameters["nonce_str"] = $this-&createNoncestr();//随机字符串$this-&parameters["sign"] = $this-&getSign($this-&parameters);//签名下面是其他参数$unifiedOrder-&setParameter("body","贡献一分钱");//商品描述//自定义订单号,此处仅作举例$timeStamp = time();$out_trade_no = WxPayConf_pub::APPID."$timeStamp";$unifiedOrder-&setParameter("out_trade_no","$out_trade_no");//商户订单号 $unifiedOrder-&setParameter("total_fee","1");//总金额$unifiedOrder-&setParameter("notify_url",WxPayConf_pub::NOTIFY_URL);//通知地址 $unifiedOrder-&setParameter("trade_type","NATIVE");//交易类型$unifiedOrder-&setParameter("product_id","$product_id");//用户标识//非必填参数,商户可根据实际情况选填//$unifiedOrder-&setParameter("sub_mch_id","XXXX");//子商户号 //$unifiedOrder-&setParameter("device_info","XXXX");//设备号 //$unifiedOrder-&setParameter("attach","XXXX");//附加数据 //$unifiedOrder-&setParameter("time_start","XXXX");//交易起始时间//$unifiedOrder-&setParameter("time_expire","XXXX");//交易结束时间 //$unifiedOrder-&setParameter("goods_tag","XXXX");//商品标记 //$unifiedOrder-&setParameter("openid","XXXX");//用户标识然后统一支付获取prepay_id//获取prepay_id$prepay_id = $unifiedOrder-&getPrepayId();而统一支付中获取prepray_id的流程是将&& &body&&![CDATA[方倍工作室]]&&/body& &out_trade_no&&![CDATA[wxdbfd43c561acxxxx]]&&/out_trade_no& &total_fee&1&/total_fee& &notify_url&&![CDATA[http://wxpay.fangbei.org/wxpayv3/demo/notify_url.php]]&&/notify_url& &trade_type&&![CDATA[NATIVE]]&&/trade_type& &product_id&&![CDATA[wxdbfd43c561acxxxxstatic]]&&/product_id& &appid&&![CDATA[wxdbfd43c561acxxxx]]&&/appid& &mch_id&&/mch_id& &spbill_create_ip&&![CDATA[11.12.16.120]]&&/spbill_create_ip& &nonce_str&&![CDATA[fvqqssaahys7qc5cv16tr4qtf1iml3vm]]&&/nonce_str& &sign&&![CDATA[F69B71CC28FADB417BAC3D7]]&&/sign&&/&POST发送到统一支付接口https://api.mch./pay/unifiedorder并收到如下响应的&&
&return_code&&![CDATA[SUCCESS]]&&/return_code&
&return_msg&&![CDATA[OK]]&&/return_msg&
&appid&&![CDATA[wxdbfd43c561acxxxx]]&&/appid&
&mch_id&&![CDATA[]]&&/mch_id&
&nonce_str&&![CDATA[JLQ67G1EhjfZvlKv]]&&/nonce_str&
&sign&&![CDATA[7A4FEB6EAB57]]&&/sign&
&result_code&&![CDATA[SUCCESS]]&&/result_code&
&prepay_id&&![CDATA[wx]]&&/prepay_id&
&trade_type&&![CDATA[NATIVE]]&&/trade_type&
&code_url&&![CDATA[weixin://wxpay/bizpayurl?sr=yQtNpvo]]&&/code_url&&/&完成上述统一支付之后,Native支付设置返回参数,实现代码如下//设置返回码//设置必填参数//appid已填,商户无需重复填写//mch_id已填,商户无需重复填写//noncestr已填,商户无需重复填写//sign已填,商户无需重复填写$nativeCall-&setReturnParameter("return_code","SUCCESS");//返回状态码$nativeCall-&setReturnParameter("result_code","SUCCESS");//业务结果$nativeCall-&setReturnParameter("prepay_id","$prepay_id");//预支付ID//将结果返回微信$return = $nativeCall-&returnecho $上述代码生成的&& &return_code&&![CDATA[SUCCESS]]&&/return_code& &result_code&&![CDATA[SUCCESS]]&&/result_code& &prepay_id&&![CDATA[wx]]&&/prepay_id& &appid&&![CDATA[wxdbfd43c561acxxxx]]&&/appid& &mch_id&&/mch_id& &nonce_str&&![CDATA[e2bpc9fz3ykc2tcpipyvnb1l2qf8my3d]]&&/nonce_str& &sign&&![CDATA[32C698EA795C0FBCDBCED622D1E01168]]&&/sign&&/&这样,一个静态链接Native就完成了。&
(用微信扫的静态链接二维码)微信native支付模式官方提供的d..._推酷(用微信扫的静态链接二维码)微信native支付模式官方提供的demo文件中的几个bug... 4. 微信公众号PHP简单开发流程 5. Laravel 学习笔记(18) - 资料库之 ...微信支付开发(11) Native支付 - 方倍工作室 - 博客园在这篇微信公众平台开发教程中,我们将介绍如何开发实现微信支付的Native功能。本文分为以下三个部分:生成Native支付URL 生成二维码 生成Package...微信支付开发(2) 静态链接Native支付关键字:微信支付 微信支付v3 native支付 统一支付 Native支付 prepay_id 作者:方倍工作室
本文介绍微信支付下的基于静态链接二维码的Native支付实现流程。 ...[原创][申精]SAE实现微信公众号Native方式扫码支付 - 高级讨论区 ...19条回复&-&发帖时间:&日微信支付开发(1) 微信支付URL配置 - 方倍工作室 - 博客园微信支付开发(11) Native支付_风中雨剑_新浪博客在这篇微信公众平台开发教程中,我们将介绍如何开发实现微信支付的Native功能。本文分为以下三个部分:生成Native支付URL 生成二维码 生成Package...微信原生支付 Native扫码支付( V3.3.7 版本)_ASP_-ITnose+ } 微信原生支付 Native扫码支付( V3.3.7 版本)1微信原生支付 Native扫码支付( V3.3.7 版本)2最终生成的url...微信公众号支付demo(包含native jsapi) - 下载频道 - CSDN下载频道&资源分类&开发技术&PHP&微信公众号支付demo(包含native jsapi) 微信公众号支付demo(包含native jsapi) kuotaowang-02-20上传 ...基于asp的微支付接口开发-稻壳微信首先我们需要了解微信支付的整体流程,微信分为JSAPI支付和Native支付,两者区别简单来说就是JSAPI是可以再页直接发起支付,Native则是生成一个链接让用户可以通过扫...微信支付开发关键点技术解析_Web开发_酷勤Native支付的开发分为三步。生成Native支付的URLNative支付URL是一系列具有“...生成URL的二维码有了上述支付链接后,还要把它转成二维码,PHP QR Code是一个...微信native支付 ”你的操作已提交 请确认是否生效“ - 中国广告...你好 微信用户点击确定就可以了啊做人啦 最重要的是开心啦满意请采纳哦~有财富可以加财富~有其它问题可以继续追问d9 微信native支付 ”你的...微信支付功能申请流程详情_百度文库2.2.2 扫码支付场景---Native(原生)支付接口 与页内支付场景不同,部分...同时,为了最快效率的解决用户的问题,微信作为连接用户和商户的桥梁,会通过此...砀山微信开发讲解微信支付静态链接Native砀山微信开发讲解微信支付静态链接Native - 砀山软件_砀山软件开发_砀山APP开发_砀山徐软科技_砀山ERP软件开发_砀山CRM软件开发_砀山OA...如何申请微信支付?微信支付申请指南-杨志鑫博客教你如何申请微信支付 -微营家|微服务系统领导品牌[] 支付请求实例 91wyj/wxpay/ pay ? Native原生支付回调URL ... 发布流程通过邮件完成,请在邮件中说明商户开发进度、协议进度,附上测试链接,...PHP开发微信支付代码及支付通知处理-PHP-ChinaUnix PHP开发微信支付代码及支付通知处理 [复制链接] jnwebseo 白手起家 帖子 ... 使用MVC,在开发环境,url往往是native url格式,不能保证一定是带有路径/的形式...【观察】微信支付接口全面开放:接入保证金2万元 2.2.2 扫码支付场景---Native(原生)支付接口 与页内支付场景不同,部分...同时,为了最快效率的解决用户的问题,微信作为连接用户和商户的桥梁,会通过此......徐州手机软件开发_徐州站建设_徐州微信开发_...徐州微信开发讲解微信支付静态链接Native 徐州软件解说软件过程的具体体现 AngularJs应用页面切换优化方案 徐州软件浅谈软件设计的重要性 徐州站建设...微信支付native支付流程图 | jony wu | Event-driven Process ...微信支付nativeurl流程 [出库单,自动核对,权限审核,表单,原材料,外部系统,领料单,成本计算,数量比较,费用,审批,权限,成本数据,单价比较,原料成本,记账凭证,勾稽...商丘app开发_商丘手机软件开发_商丘微信开发_商丘...商丘微信开发讲解微信支付静态链接Native AngularJs应用页面切换优化方案 商丘HR软件试论绩效计划的制定 商丘HR软件试论绩效计划的制定 商丘软件浅谈软...宿迁app开发_宿迁手机软件开发_宿迁微信开发_宿迁...宿迁微信开发讲解微信支付静态链接Native AngularJs应用页面切换优化方案 宿迁软件浅谈软件设计的重要性 宿迁站建设讲解交互设计七大定律 宿迁软件开发公...盐城app开发_盐城手机软件开发_盐城微信开发_盐城...盐城微信开发讲解微信支付静态链接Native AngularJs应用页面切换优化方案 盐城HR软件试论绩效计划的制定 盐城HR软件试论绩效计划的制定 盐城软件浅谈软...沛县app开发_沛县手机软件开发_沛县微信开发_沛县...沛县微信开发讲解微信支付静态链接Native 沛县软件解说软件过程的具体体现 AngularJs应用页面切换优化方案 沛县HR软件试论绩效计划的制定 沛县软件浅谈...已认证服务号开通微信支付详细步骤 - 推酷PHP开发微信支付的代码分享_php实例_脚本之家使用MVC,在开发环境,url往往是native url格式,不能保证一定是带有路径/的形式...Tags:php 微信支付 复制链接收藏本文打印本文关闭本文返回首页 ...微信native方式支付demo - 下载频道 - CSDN微信native方式支付中body为中文时签名错误解决方法对应的博客:微信开发论坛-CSDN论坛-CSDN-中国最大的IT技术社区版面简介:微信开发即微信公众平台开发,将企业信息、... ? 手机静态页面怎么做 [移动开发 微信开发] 40 ... ? 微信JS-SDK如何实现自定义连接 [移动开发 微...手机支付宝钱包干掉POS机 微信支付干掉购物车 — 中广..._中广互联微信支付NativeAPI扫码后反馈「商户后台超时无数据返回」,是什么... 如题,微信支付NativeAPI扫码后反馈「商户后台超时无数据返回」,一般问题出在...常用链接 开发者福利 文档镜像 订阅:问答 / 文章 黑客马拉松 一起涨姿势 域名...PHP开发微信支付的代码分享,PHP教程,PHP案例,PHP实例 使用MVC,在开发环境,url往往是native url格式,不能保证一定是带有路径/的形式...汉字换拼音 繁体字转换 | 站长工具:收录/反向链接 ALEXA排名 关键词排名 WHOIS...微信支付开发对接教程 - 微信公众平台开发:微信公众号..._红黑联盟 使用Native API发起支付请求,详细方法文档中有关Native API的章节。 5. 接入...点击复制链接 与好友分享!回本站首页 您对本文章有什么意见或着疑问吗?请到...[操作系统]开发微信支付上线二个月后的总结_郑少群个人虽然native支付不需要在授权目录页可以拥有微信支付的权限。最坑的时获取产品信息... 连接一切之后的微信,下一步打算怎么走?_开发/数据库_IT专家[]开启了线上...微信native支付 ”你的操作已提交 请确认是否生效“_百度知道1个回答 - 提问时间: 日你好 微信用户 点击确定就可以了啊 做人啦 最重要的是开心啦 满意请采纳哦~有财富可以加财富~有其它问题可以继续追问}

我要回帖

更多关于 atk package 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信