还有一点需要注意,服务端只能用现网appkey 获得方式相同,服务器API只用现网AppKey,不区分环境
B2b订单查询的签名算法是啥样的?没有示例,只回传错误,完全不知道什么原因导致$sd = [ "mchid" => "1686022399", "order_id" => "o202409231626334079372520", ]; $appKey = "rSYw8G8Eua4MYKMXcCgR8TTrJ8gM1wWY"; $paySig = hash_hmac('sha256', 'requestCommonPayment&' . json_encode($sd), $appKey); $url = "https://api.weixin.qq.com/retail/B2b/getorder?access_token=$access_token&pay_sig=$paySig"; $result = curlRequest($url,$sd); 结果:{"errcode":9403200,"errmsg":"参数为空或非法 detail:[支付签名[pay_sig]校验失败] rid: 66f50fce-0ab130f3-408dcdbe"}
12-09我也发现此问题了,官方没人理
B2B支付,支付签名生成参数描述不清晰https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/B2b_store_assistant.html[图片]
12-09退款同问,也是这个报错 $postdata = []; $postdata['mchid'] = $paylog['mch_id']; $postdata['out_trade_no'] = $ordernum; $postdata['order_id'] = $paylog['transaction_id']; $postdata['out_refund_no'] = date('YmdHis').rand(1000,9999); $postdata['refund_amount'] = intval(bcmul($refundmoney, 100, 0)); $postdata['refund_from'] = 1;//退款来源,枚举值 1:人工客服退款 2:用户自己退款 3:其他 // $postdata['refund_reason'] = 0;//退款原因,枚举值 0:暂无描述 1:产品问题 2:售后问题 3:意愿问题 4:价格问题 5:其他原因 $appkey = $appinfo['wxpay_b2b_appkey']; $pay_sig = self::b2b_pay_sig('/retail/B2b/refund',jsonEncode($postdata), $appkey); $rs = curl_post($url.'&pay_sig='.$pay_sig, jsonEncode($postdata)); private function b2b_pay_sig($uri, $post_body, $appkey) { $need_sign_msg = $uri . '&' . $post_body; return hash_hmac('sha256', $need_sign_msg, $appkey); }
小程序B2B支付相关接口?String accessToken = "86_K5ysiq0CNLb662dxUYjHt-UduesOD99RUqcisuMsSePoQiCjwYUcdSqyeZxyyDVfsX25khhmEoIoEccy2odwsml3PB_uIaue9wNYaimNIjWTkFdv9WeCTEfclmS2nkBgCkGY5H0kUJ1zLyAfBJEcAEDKSN"; HashMap map = new HashMap<>(); map.put("mchid", "1697798151"); map.put("out_trade_no", "1217752501201407033233368018"); map.put("env", 0); String paySign = WechatMiniProgramSignUtil.sign("/retail/B2b/getorder", map, APP_PROD_KEY); String jsonString = FastJsonUtils.toJsonString(map); System.out.println("paySign:" + paySign); System.out.println("body:" + jsonString); String url = "https://api.weixin.qq.com/retail/B2b/getorder?access_token=" + accessToken + "&pay_sig=" + paySign; System.out.println("url:" + url); HttpRequestHeaders headers = (new HttpRequestHeaders()).contentType("application/json"); HttpResponse post = HttpUtils.post(url, headers, jsonString); String content = post.getContent(); System.out.println(content); 调用小程序b2b门店助手里面的b2b支付相关接口。渠道返回的错误: 调用的是查询订单接口:/retail/B2b/getorder 请求响应报文: paySign:4900a058bcfe734166a7dd1a866ce266681c99054965dcc1ee5138e2fe3efc40 body:{"mchid":"1697798151","out_trade_no":"1217752501201407033233368018","env":0} url:https://api.weixin.qq.com/retail/B2b/getorder?access_token=86_K5ysiq0CNLb662dxUYjHt-UduesOD99RUqcisuMsSePoQiCjwYUcdSqyeZxyyDVfsX25khhmEoIoEccy2odwsml3PB_uIaue9wNYaimNIjWTkFdv9WeCTEfclmS2nkBgCkGY5H0kUJ1zLyAfBJEcAEDKSN&pay_sig=4900a058bcfe734166a7dd1a866ce266681c99054965dcc1ee5138e2fe3efc40 响应报文: {"errcode":9403200,"errmsg":"参数为空或非法 detail:[支付签名[pay_sig]校验失败] rid: 672ae6ea-6971f120-76724ca5"} 签名方法(java语言): package com.ursa.middle.channel.wechat.mini.program.b2b.store.util; import com.ursa.base.serialize.json.FastJsonUtils; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SignatureException; import java.util.Map; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; /** * @author xxx * @version 1.0.0 * @Description * @date 2024/10/22 */ public class WechatMiniProgramSignUtil { private final static String SHA256 = "HmacSHA256"; public static String sign(String uri, Map signBody, String appKey) throws SignatureException { String bodyStr = FastJsonUtils.toJsonString(signBody).replace("\":\"", "\": \""); String signMsg = uri + "&" + bodyStr; return hmacSHA256(signMsg, appKey); } public static String sign(Map signBody, String sessionKey) throws SignatureException { String bodyStr = FastJsonUtils.toJsonString(signBody).replace("\":\"", "\": \""); return hmacSHA256(bodyStr, sessionKey); } private static String hmacSHA256(String data, String key) throws SignatureException { try { Mac sha256_HMAC = Mac.getInstance(SHA256); SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), SHA256); sha256_HMAC.init(keySpec); byte[] bytes = sha256_HMAC.doFinal(data.getBytes()); return byteArrayToHexString(bytes); } catch (NoSuchAlgorithmException | InvalidKeyException e) { throw new SignatureException("加签异常:" + e.getMessage()); } } private static String byteArrayToHexString(byte[] b) { StringBuilder sb = new StringBuilder(b.length * 2); for (byte value : b) { sb.append(String.format("%02x", value)); } return sb.toString(); } }
12-09就是这么写的 还是报错9403200 $postdata = []; $postdata['mchid'] = $paylog['mch_id']; $postdata['out_trade_no'] = $ordernum; $postdata['order_id'] = $paylog['transaction_id']; $postdata['out_refund_no'] = date('YmdHis').rand(1000,9999); $postdata['refund_amount'] = intval(bcmul($refundmoney, 100, 0)); $postdata['refund_from'] = 1;//退款来源,枚举值 1:人工客服退款 2:用户自己退款 3:其他 // $postdata['refund_reason'] = 0;//退款原因,枚举值 0:暂无描述 1:产品问题 2:售后问题 3:意愿问题 4:价格问题 5:其他原因 $appkey = $appinfo['wxpay_b2b_appkey']; $pay_sig = self::b2b_pay_sig('/retail/B2b/refund',jsonEncode($postdata), $appkey); $rs = curl_post($url.'&pay_sig='.$pay_sig, jsonEncode($postdata)); private function b2b_pay_sig($uri, $post_body, $appkey) { $need_sign_msg = $uri . '&' . $post_body; return hash_hmac('sha256', $need_sign_msg, $appkey); }
B2b申请退款有没有SDK?提示参数为空或非法 detail:[支付签名[pay_sig]校验失败请求地址:https://api.weixin.qq.com/retail/B2b/refund?access_token=84_qGSu4zasllSKLHHITY9QHhxPJhIMj3xG3ooutS8IQ4ZSgesDP1V5nO4oxQa9hMDJfRFclzN5hBOlJc0FUFepZ7i6whawkA0kEzLeYS2DUVtZY2-BRtjyF-5TogQSMBfADALFU&pay_sig=b28d627e8464832b27f9955c76b093969e1c7a9f389d5bd97682aafe271f6ca7 请求数据:{"mchid":"1686022399","out_trade_no":"20240923142431232065","order_id":"o202409231551411832182491","out_refund_no":"r2024092611365718323558","refund_amount":100,"refund_from":1} 响应结果:{"errcode":9403200,"errmsg":"参数为空或非法 detail:[支付签名[pay_sig]校验失败] rid: 66f4d6da-72a6c1db-136fbf81"} $signData = [ "mchid" => "1686022399", "out_trade_no" => "20240923142431232065", "order_id" => "o202409231551411832182491", "out_refund_no" => "r2024092611365718323558", "refund_amount" => 100, "refund_from" => 1 ]; $signData = json_encode($signData, JSON_UNESCAPED_UNICODE); $appKey = "1OQZtyTWw94IUxhhZYPeqxcDuw8voUTN"; $pay_sig = hash_hmac('sha256', 'requestCommonPayment&' . $signData, $appKey);
12-09同问
b2b订单查询总出错:商户未完成建档 。这是什么原因?{"errcode":9403203,"errmsg":"商户未完成建档 detail:[获取商户号信息失败,请确认商户号是否开通成功] rid: 6720e67a-6454d4d8-1a6f84a6"}
12-09同问
微信B2B支付成功了,但是退款是提示9403203建档未完成,还不能发起支付或退款 请完成建档签约?微信B2B支付成功了,但是退款是提示9403203建档未完成,还不能发起支付或退款 请完成建档签约?
12-09感谢楼主,问题解决,金额不是int类型,报错不是json 我也是醉了
B2b支付为什么一直提示json格式不对?微信小程序端调用B2b支付,一直提示requestCommonPayment:fail webapi_wxa_createmidasorder:fail invalid json 传的参数我使用json工具验证了 ,是正常的json格式 mode: "retail_pay_goods" paySig: "d307d7c203297ec7cf2049e237af6ef579562a855ee81e5be90cc920fa3eb4b3" signData: "{"mchid":"1696096777","out_trade_no":"202410300425573601001100","description":"小程序商城下单","amount":{"order_amount":"42000","currency":"CNY"}}" signature: "c16711f5642d52ce0d6528fd5c05904ffa398870c4b63c7b4b12d535ebbbe7e8"
12-07主要优势在哪
营销活动有烦恼? 微信网关低至1折,为你的业务保驾护航![图片] 活动火爆服务崩溃?羊毛党薅走福利? 业务数据被爬?无法科学复盘活动? 微信网关限时优惠,为你的业务保驾护航! 微信网关是什么? 微信网关是微信团队推出的面向小程序、公众号、APP、网页端的安全服务,提供自研链路、弱网加速、流量治理、安全防护等能力,全方位保障业务高安全、高效率、高可用运行。点击可了解更多 微信网关产品能力 今年的11月11日,为了感谢各位开发者对微信网关的支持,微信团队推出微信网关年度特惠活动,助力企业/个人开发者的业务高效安全运行、营销活动重保!话不多说,快来看看都有什么优惠活动? 限时优惠活动详情: 100QPS 版本套餐原价999元,现价99.9 元! 其他版本套餐买二送一,多买多送!! 每买1个月套餐,送2个资源包(可用于压测/活动重保)。 限时活动规则: 11月11日至12月12日,新老用户均可参加。 个人和企业用户均享优惠,资源有限抢完即止~ 还等什么?上链接!! 其实,除了微信网关,我们也推出了其他产品的优惠活动,建议大家也不要错过哦~ 产品体验分析,助力小程序智能经营分析。 购买大版本网关套餐或资源包,赠送产品体验分析存储资源。前往 We分析,深入数据洞察,助力业务增长。 折扣低至65折起!前往 更多微信网关接入知识可参考: 微信网关官网 微信网关官方文档 微信网关系列课程 这份业务安全入门攻略请收好! 微信网关相关场景解析: 加上这一“关”,活动重保轻松过关 你的业务还在被“薅羊毛”吗? 压测工具,千万级流量扛得住! 黑灰产的4000万次攻击,我们和茶百道防住了! 对于微信网关 ,你有什么更期待的能力么?或有什么优化建议?或在接入过程中遇到了什么困难?欢迎留言告诉我们呀~ 即日起至 2024 年 12 月 7 日,欢迎各位开发者在下方评论区进行留言,精选评论的用户将获得官方精美礼品一份。[图片]
11-16怎么解决的
小程序备案审核时上传营业执照后总是提示“无法读取图片识别内容,请尝试重新提交或重新上传”,咋办啊?[图片] 我前面是以个人身份提交的备案申请,然后迁移成企业的了,再进入备案审核的时候就是这样了,明明现在小程序主体是企业性质了,备案这里还显示的个人性质,这是不是BUG啊,我上传营业执照死活审核不过去。。。
04-24upload_time,正确时间格式为“2023-03-08T09:57:32+08:00”,请官方修改文档 避免误导人
发货信息录入接口 错误上传时间非法,请按照 RFC 3339 格式填写?报错: {"errcode":268485216,"errmsg":"上传时间非法,请按照 RFC 3339 格式填写, hint: [e194a37f-5167-4b9a-b5b3-fc92197833d7] rid: 64660299-5030923d-19505b68"} 接口名:发货信息录入接口接口地址:https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=ACCESS_TOKEN 我的时间到底哪里有问题?你们接口有没有规范,一会时间戳,一会这个格式那个格式的 2023-05-18 18:48:35 不对, 时间戳不对,直接写你们的示例也不对 [图片] { "order_key":{ "order_number_type":2, "transaction_id":"4200001832202305185236757" }, "logistics_type":1, "delivery_mode":1, "shipping_list":[ { "item_desc":"1分体验", "tracking_no":"JT30322578729xx", "express_company":"JTSD", "contact":{ "receiver_contact":"159****8110" } } ], "upload_time":"2023-05-18T18:48:35.120 08:00", "payer":{ "openid":"oOgtU443yloCS-C_DKX5BKdQW" } }
2023-05-19