微信支付沙箱环境开发

沙箱环境下调取支付相关接口不再需要真正的商户key,而是需要沙箱密钥
所以首先需要获取沙箱密钥:
官方文档:沙箱文档

在这里插入图片描述
这里的sign是真正的商户key,请求接口成功后会得到沙箱密钥,即sandbox_signkey,之后再用这个沙箱密钥代替真正的商户key来调用预支付等接口

    private Map<String,String> fillRequestDataSandBox(Map<String,String> reqData) throws Exception{
        int readTimeoutMs = 5000;
        int connectTimeoutMs = 5000;
        String urlSuffix = "/sandboxnew/pay/getsignkey";
        String string = this.requestWithoutCert(urlSuffix, this.fillRequestData(reqData), connectTimeoutMs,
                readTimeoutMs);
        Map<String, String> map = WXPayUtil.xmlToMap(string);
        String signKey = map.get("sandbox_signkey");
        config.setKey(signKey);
        reqData.remove("sign");
        reqData.put("sign",WXPayUtil.generateSignature(reqData, signKey, MD5));
        return reqData;
    }

这里会有一个问题:
项目中配置的商户key是真正的商户key,而预支付返回结果的时候对结果做了签名校验,这里结果中的sign其实是沙箱环境下的参数签名,和沙箱密钥有关,校验中需要注意替换,不然会出现sign不一致

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值