微信支付的沙箱环境能否使用? #668
微信支付的沙箱环境能否使用? #668
Comments
按照逻辑,应该是你使用沙箱环境前,先要自己手动调用getSignKey生成key,然后把这个key配置到配置文件里,目前setUseSandboxEnv 这个只是用来控制请求接口地址的。 |
我的考虑是本地使用了一个静态缓存。 Groovy Code: private static String SANDBOX_SIGN_KEY
private static final WxPayConfig WX_PAY_CONFIG
static {
WX_PAY_CONFIG = new WxPayConfig()
WX_PAY_CONFIG.setNotifyUrl(NOTIFY_URL)
WX_PAY_CONFIG.setAppId(APPID)
WX_PAY_CONFIG.setKeyPath(KEY_PATH)
WX_PAY_CONFIG.setMchId(MCH_ID)
WX_PAY_CONFIG.setMchKey(MCH_KEY)
WX_PAY_CONFIG.setTradeType(TRADE_TYPE)
WX_PAY_CONFIG.setUseSandboxEnv(USE_SANDBOX_ENV)
WX_PAY_CONFIG.setSignType(WxPayConstants.SignType.HMAC_SHA256)
}
private static <T extends BaseWxPayResult> T withRequest(Closure<T> closure) {
WxPayService wxPayService = new WxPayServiceImpl()
wxPayService.setConfig(WX_PAY_CONFIG)
if (WX_PAY_CONFIG.isUseSandboxEnv) {
if (!SANDBOX_SIGN_KEY) {
SANDBOX_SIGN_KEY = wxPayService.getSignKey()
}
WX_PAY_CONFIG.setMchKey(SANDBOX_SIGN_KEY)
wxPayService.setConfig(WX_PAY_CONFIG)
}
closure.call(wxPayService)
} 但是这么写的话发现还是会报同样的错误 |
我记得之前确实沙箱环境确实是没法用的,现在不清楚了,你如果发现走不通,建议还是放弃吧,直接走正式的接口吧 |
好吧,这玩意确实没有使用文档 |
阿西吧,总算搞清楚了,无意中看了下微信支付的官方sdk: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 才发现如果启用了沙箱环境,那么 然而更麻烦的还在后面,微信支付的沙箱环境不能随便填金额,使用上比正式环境还麻烦,你必须在 忍不住再吐槽一下,从未见过微信这么烂的开发环境,文档乱的一P,前后不搭,文档缺失。连个沙箱环境的限制都这么多,比正式环境使用还麻烦,要你何用? |
哈哈哈,我也遇到这个了,昨天被坑了一天,一直以为签名错误。 |
【公众号支付】沙箱验收用例 【必选】公众号支付 支付成功用例集 ▽ |
看了这个,那我就不用了 |
获取沙箱密钥需要真实的密钥签名 |
我发现这个沙箱环境真是坑爹,只说要调用getSignKey,我发现已经实现这个接口了,调用这个之后就不知道怎么用了,正常请求一直报错:
我看了下源码,是否并没有对沙箱环境这个signkey做特殊处理?只是实现了getSignKey接口而已?是否可以把这个逻辑封装进去呢?在
WxPayConfig
中设置了setUseSandboxEnv(true)
之后能否自动处理沙箱环境?或者在目前的条件下,应该怎么自己处理这个逻辑呢?我遍寻了下微信支付的文档,也没提这个沙箱环境怎么用的,getsignkey之后怎么放入请求中?
The text was updated successfully, but these errors were encountered: