你应该使用的是「php_sdk_v3.0.10」这个包的吧,SDK版本与API版本不是一回事,比如都叫「老王」,到底是哪个老王,得带入场景而言。 建议你换 composer require wechatpay/wechatpay 新包, readme上就有二次签名指南。
微信jsapi支付:支付签名验证失败(五天了!!!百度翻个遍)// 后端: php // wx.chooseWXPay签名数据, 这个已经到校验工具试过,签名没有问题 $sign_data = [ 'appId' => $config['appID'], 'timeStamp' => strval($info['timestamp']), // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。 //但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 'nonceStr' => $info['nonceStr'], // 支付签名随机串,不长于 32 位 'package' => $info['package'], // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*) 'signType' => 'HMAC-SHA256' // 签名方式,默认为'SHA1',使用新版支付需传入'MD5' ]; // wx.config签名数据 拼接字符串然后使用sha1加密 strtoupper(hash_hmac("sha1", $str, $mach_key)) $signature = [ 'noncestr' => $info['nonceStr'], 'jsapi_ticket' => $info['ticket'], 'timestamp' => strval($info['timestamp']), 'url' => 'https://m.***.com/' ]; 我想知道, 我后端sdk使用的是V3版本, 这个加密key究竟使用API还是apiV3的key????两种都试了,还是签名失败,整个人都被你们微信支付折磨疯了 菜是原罪,我承认,可是翻过百度几十页, 实在没办法了,也不是知道是jsapi jsdk的问题还是什么问题,jsdk使用的是vue的,就是支付签名失败,也没有详细错误 想骂人但是没有资格,微信技术,能否救俺一命或者饶俺一命??????? I need help!
2021-11-09是你理解错了,这个associate_data是AES-GCM解密用的,只有在解密以后的json字符串里,才会有预下单attach数据。
订单支付回调,附加值 参数返回错误。希望赶快修复线上bug?订单支付回调,附加值 参数返回错误。希望赶快修复线上bug [图片]
2021-11-08php内可以直接用 \WeChatPay\Crypto\AesGcm::decrypt 对 $ciphertext 解密,可以参考bin/CertificateDownloader.php里的解密方法。
微信支付3.0 官方实例参数详解?官方给的这个实例,里面的参数 搞得我头都晕了,原以为商户证书就是平台证书。 [图片] 这个平台证书用下载器怎么下载,下载后怎么保存为pem格式 我用的是官方推荐的postman 工具下载的证书,但是我将结果这个字符串保存后 ,提示我 [图片] 这个是我保存的格式不对 还是本身这个字符串就不是平台证书 [图片]
2021-11-08谢邀:Java AES-256-GCM解密看这个类: https://github.com/wechatpay-apiv3/wechatpay-apache-httpclient/blob/master/src/main/java/com/wechat/pay/contrib/apache/httpclient/util/AesUtil.java package com.wechat.pay.contrib.apache.httpclient.util; import java.nio.charset.StandardCharsets; import java.security.GeneralSecurityException; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.Base64; import javax.crypto.Cipher; import javax.crypto.NoSuchPaddingException; import javax.crypto.spec.GCMParameterSpec; import javax.crypto.spec.SecretKeySpec; /** * @author xy-peng */ public class AesUtil { private static final String TRANSFORMATION = "AES/GCM/NoPadding"; private static final int KEY_LENGTH_BYTE = 32; private static final int TAG_LENGTH_BIT = 128; private final byte[] aesKey; public AesUtil(byte[] key) { if (key.length != KEY_LENGTH_BYTE) { throw new IllegalArgumentException("无效的ApiV3Key,长度必须为32个字节"); } this.aesKey = key; } public String decryptToString(byte[] associatedData, byte[] nonce, String ciphertext) throws GeneralSecurityException { try { SecretKeySpec key = new SecretKeySpec(aesKey, "AES"); GCMParameterSpec spec = new GCMParameterSpec(TAG_LENGTH_BIT, nonce); Cipher cipher = Cipher.getInstance(TRANSFORMATION); cipher.init(Cipher.DECRYPT_MODE, key, spec); cipher.updateAAD(associatedData); return new String(cipher.doFinal(Base64.getDecoder().decode(ciphertext)), StandardCharsets.UTF_8); } catch (NoSuchAlgorithmException | NoSuchPaddingException e) { throw new IllegalStateException(e); } catch (InvalidKeyException | InvalidAlgorithmParameterException e) { throw new IllegalArgumentException(e); } } } [图片]
微信小程序V3支付回调通知返回的数据如何解密?小程序V3支付回调通知放回的数据怎么解密呢? { "id": "19c060b0-2bc2-5d4a-8b6c-93deb773e8e4", "create_time": "2021-11-02T16:18:49+08:00", "resource_type": "encrypt-resource", "event_type": "TRANSACTION.SUCCESS", "summary": "支付成功", "resource": { "original_type": "transaction", "algorithm": "AEAD_AES_256_GCM", "ciphertext": "1233333333", "associated_data": "transaction", "nonce": "N9spHaXjeHmj246" } } 想核对下单数据发现当前没法解密,按照官网要求已经下载了wechatpay-apache-httpclient, [图片] 然后查看这个demo的README.MD的时候并没有发现有回调通知解密的介绍,只有一个字符串加密解密的实例? [图片] 现在我的疑问点就是:怎么把resource对象的ciphertext解密出来?具体用什么方法?怎么才能得到图5解密后的数据? [图片] 有没有大佬出来指点一下,纯小白,非常感谢
2021-11-08营销活动需要设置可用商户号,分别设置不同的商户号就行了,例如: [图片]
一个微信小程序绑定多个商户号可以同时支付吗?小程序已绑定两个商户号,现在准备推出两个活动(600元和400元的两个活动满600-300,满400-200)。 如果使用一个商户号去创建两个立减活动会产生叠加优惠,600-300-200,实际支付了100元。如何实现小程序里两个活动分别对应两个商户号去收款
2021-11-08诱导分享是条红线,轻则体罚,重则灭号,建议多看看运营规则处罚章节
h5页面自定义微信分享按钮,怎么实现?h5页面自定义微信分享按钮,怎么实现?
2021-11-08命令行上,执行下 `curl httpbin.org/ip` 看看打印出来的IP是多少,如果跟你图示一样,那就等个10分钟左右再看看吧
此IP地址不允许调用接口,如有需要请登录微信支付商户平台更改配置商户后台接口调用ip已经设置了。服务器出口ip也确认无误。 还是提示“此IP地址不允许调用接口,如有需要请登录微信支付商户平台更改配置”。 还有哪里配置的不对吗? [图片][图片]
2021-11-08spbill_create_id只支持IPv4,如果是负载的是IPv6就会格式错误
使用阿里云的负载均衡出现spbill_create_ip错误?微信支付集成在H5,H5是由(vue+java接口方式)实现,在2021-11-07里出spbill_create_ip错误,java接口是由阿里云负载均衡四层架构,后端两台服务器支持实现,现改为单台负载仍是报错,请帮忙提供解决方案
2021-11-08这是ES2020语法,基础库现在对ES2016都还支持不太全,建议降级至ES5使用。
可选链式运算符(?.)上传代码报错,unexpected token (.),最新最新版工具出现?之前升级工具之后出现过几次这个情况,上次是通过卸载重新安装最新版解决的,上上次是直接回退版本临时解决的,这次又是重新安装最新版解决的。 尝试过清除编辑器缓存,无效,重新打开项目,无效,删除项目project.config.json,无效 尝试过删除掉 ?.语法的语句,就不报错了
2021-11-08你这个应该是CASH充值券类型,有可能是官方补贴、也有可能是机构/渠道/银行补贴,建议多看看文档。 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7&index=8 [图片]
在支付成功通知接口有个coupon_fee字段,请问下这个字段的值从哪里取的?支付成功通知接口中有个coupon_fee,看文档说是代金券,但是后台没有设置任何代金券相关配置,请问下官方这个coupon_fee的值从哪里获取的? cash_fee: '32400', coupon_count: '1', coupon_fee: '500', coupon_fee_0: '500', coupon_id_0: '28232857918', nonce_str: '6184a238bd958', openid: 'o1ikP0zk9zR1aGgKMRYp7ZSioh4E', out_trade_no: 'fu02200024924331636082229976', sub_appid: 'wxa4b609d3b2ab57a2', sub_mch_id: '1609307152', sub_openid: 'oqcny6BN3OLZgaO62_iYCY_cdKP8', total_fee: '32900', trade_type: 'JSAPI', transaction_id: '4200001230202111051204679424'
2021-11-07