- 合单支付下单报“受理机构必须传入sub_mch_id”
子订单中mchId给的二级商户号,sub_mchid也是二级商户号,但还是报“受理机构必须传入sub_mch_id”,当子订单中mchId给服务商的商户号就没报,小程序appId与子单所有的二级商户也已经绑定了,这是什么原因呢?
2021-11-06 - 城市服务实名信息校验接口说明【监管原因,暂停开放】
备注说明:接口因为监管原因,2021年11月10日起停止开放。 一、接口说明 城市服务实名校验接口(以下称“本接口”),主要实现的功能是,在用户同意情况下,通过微信城市服务去校验用户(或业务方)输入的实名信息,是否正确且与用户在“开通微信支付”时,预留的实名信息一致。也即,校验输入的信息,是否正确且与微信支付绑卡用户的实名信息一致。 二、使用注意事项(接入必读) 1、本接口暂只支持校验基于大陆身份证 “姓名与身份证开通微信支付”的用户实名信息; 2、由于信息较为敏感,使用此接口校验用户(或业务方)输入的实名信息时,需要在页面前端征得用户的同意。因此调用此接口后,会跳转至微信官方的“用户同意”界面。用户点击同意按钮后方可继续后续调用。 3、请根据开放范围、场景所需及信息校验必要性申请本接口,并请谨慎使用。若后期使用过程中,用户举报较多或被发现在不合理使用,微信有权永久回收该小程序的该接口的权限。 三、接口开放范围及申请方式 3.1、接口开放范围 1、本接口目前为内测邀请开放阶段,免费开放给非个人开发者,且完成了微信认证的小程序(不包含境外主体)。 2、接口的开放的场景及必要性,参考国家法规、政策规定的需要“实名办理”的相关业务。具体的开放主体类目范围如下: 政务(政府和事业单位)公立医疗(含公立医疗机构的互联网医院)公立教育机构交通行业的官方企业或单位(含:航空公司、机场、客运、交通市民卡、铁路、公交、地铁、轮渡)基础运营商合规的保险公司官方快递与邮政(实名校验场景需要与支付相关联)水、电、燃、暖等官方生活缴费机构;如你的小程序主体类目所属范围、支付业务场景等,与上述相符,则可以按照对应方式申请。 3.2、申请方式 请发送邮件至官方邮箱,说明所需的场景及校验必要性,申请开通小程序的该接口的权限。官方邮箱地址:wx_city@tencent.com。邮件内容请参照下述列表: 邮件主题:申请开通“城市服务实名信息校验”接口权限+地区+单位名称 邮件内容: 1、小程序appid或原始id 2、小程序名称 3、小程序使用该接口的场景及必要性描述。 4、其他备注说明(如紧急程度、腾讯公司的对接人等) 申请资料: 1、接口申请表 2、与申请商户名称(商户号主体)完全一致的 信息系统安全等级保护三级证书(简称等保三级证书) 或者 ISO27001证的扫描件 3、签署【数据安全评估应答及承诺文件】,落款应答及承诺人为商户号主体,并盖章 4、签署【合作协议】 附:申请资料中(2)(3)(4)涉及资质,申请主体均需由商户号主体提供、签署;(3)(4),审批时请先提供填写完整的Word文档,待审批完成后再返回盖章。 附件1、微信支付实名校验接口申请表 附件2、数据安全评估应答及承诺文件 附件3、合作协议 邮件申请后,针对符合开放范围及场景必要性的小程序,会提供后续流程指引,因此申请后请留意邮件回复情况。 注意:请根据开放范围、场景所需及信息校验必要性申请本接口,并请谨慎使用。若后期使用过程中,用户举报较多或被发现在不合理使用,微信有权永久回收该小程序的该接口的权限。 四、接口文档 具体的接口文档详情,请点击此处查看详细的接口文档,并参照开发。 备注:如在使用中遇到问题,可通过官方邮箱留言,或社区留言,或评论留言方式反馈。本指引内容不定期更新,敬请留意。
2023-06-05 - checkrealnameinfo接口报48001错误, 如何解决?
调用checkrealnameinfo接口时,报"errcode: 48001, errmsg: "api unauthorized rid"信息,怎么解决?
2020-10-16 - 微信支付退款订单包含全场/单品优惠时的退款规则
应用场景当买家要求退款时,订单中如果包含全场/单品优惠,微信支付将在收到退款请求并且验证成功之后,按照退款规则将支付款按原路退到买家帐号上。 含优惠订单退款的计算逻辑 定义 订单金额:订单优惠前的金额 退款金额:发起退款的金额,未扣除优惠部分 实退金额:买家实际收到的退款金额,退款金额减去优惠金额的部分 1. 包含全场优惠 订单金额a(整单享受全场优惠x元),发起退款金额b,实退金额=b-b/a*x。 例如:一笔订单100元(整单享受全场优惠10元),发起退款50元时,会按照比例分摊优惠金额5元(优惠金额=50/100*10),买家收到实退金额为45元。 2. 包含单品优惠订单金额a,包含商品A m元(A享受x元单品优惠)、商品B n元(B不享受单品优惠)。发起退商品A时,买家收到实退金额=m-x,发起退商品B时,买家收到实退金额=n。 例如:一笔订单100元,买家购买商品A一个10元(商品A享受2元单品优惠),商品B90元。退商品A时,扣除掉2元的单品优惠金额,买家收到实退金额8元;退商品B时,B未享受优惠,买家收到实退金额90元。 3. 包含多个单品共享的单品优惠,退部分优惠单品 订单金额a,包含商品A i个共m元(A享受x元单品优惠)、商品B n元(B不享受单品优惠)。发起退款j(j<=i)个商品A时,买家收到实退金额=m*j/i-x*j/i,发起退款商品B时,买家收到实退金额=n。 例如:一笔订单100元,买家购买商品A 2个共10元(商品A享受2元单品优惠),商品B90元。退1个商品A时,1个商品A原价5元,扣除掉1元的优惠金额,买家收到实退金额4元;退商品B时,B未享受优惠,买家收到实退金额90元。 4. 既包含单品优惠,又包含全场优惠 订单金额a(整单享受全场优惠i元),包含商品A m元(A享受x元单品优惠)、商品B n元(不享受单品优惠)。发起退款商品A时,买家收到实退金额=m-x-(m-x)/(a-x)*i,发起退款商品B时,买家收到实退金额=n-n/(a-x)*i。 例如:一笔订单100元(整单享受全场优惠10元),买家购买商品A一个10元(A享受2元单品优惠),商品B90元。退商品A时,扣除掉2元的单品优惠金额,以及全场优惠分摊金额=(10-2)/(100-2)*10=0.82元,买家收到实退金额7.18元;退商品B时,B未享受单品优惠,扣除全场优惠分摊金额=90/(100-2)*10,买家收到实退金额80.82元。 不支持使用单品部分退款的场景 以下场景在使用单品部分退款时会报错,需检查商家系统的逻辑是否正确: 1)累计退款金额大于订单金额 2)单品累计退款金额大于单品金额 3)退款请求的单品中,如果一款单品有多条记录,会拦截报错。例如单品信息传输单品A退1个、单品A退1个、单品B退1个,会报错。传输单品A退2个、单品B退1个即可 以下场景不支持单品部分退款,建议使用整单退款: 1)2019年1月1日之前的订单不支持单品部分退款。 2)在提交订单时传入的单品信息,如果存在“goods_id相同,单品单价不同”的情况,不支持单品部分退款。 3)在提交订单时,如果订单金额小于单品累加的金额,不支持部分退款。例如订单金额100元,而单品信息中的累加金额大于100元,这个场景不支持部分退款。单品信息中的累加金额需小于等于100元。 4)单笔订单只能用同一个退款接口进行退款。例如订单使用过其他退款接口退过,则无法再使用单品部分退款的接口。 什么场景会退券当代金券仍在有效期内,且金额全部退还给用户时,会退券;如果只是部分金额退还或已超过有效期,不会给用户退券。 例1:订单100元,全场券10元,整单退时,10元的券会退还给用户;如果只退50元,则券不会退给用户 例2:订单100元,单品A2个共90元,享受减10元的单品优惠,单品B10元。当退2个单品A时,会退还10元的单品优惠;只退1个单品A时,不会退还10元的单品优惠。 预充值与免充值代金券退款规则:https://developers.weixin.qq.com/community/pay/article/doc/0006e002fbcf2033279bf018051013
2021-03-10 - 文本内容安全识别(msg_sec_check)服务端检查总是返回正确的结果?
content只有1个字的区别,但是审核的结果不一样? [图片][图片] 审核通过的返回 {"errcode":0,"errmsg":"ok","detail":[{"strategy":"content_model","errcode":0,"suggest":"pass","label":100,"prob":90},{"strategy":"keyword","errcode":0}],"trace_id":"643fb4f8-48725a95-3825f538","result":{"suggest":"pass","label":100}}
2023-04-19 - 通过微信扫描小程序码登录PC端管理后台
因业务需求,需要PC端的管理后台用户,与我们开发的内部小程序管理系统,保持用户和权限的一致性。所以考虑通过微信扫码登录获取小程序的身份。 具体业务逻辑如下: 1、PC端登录页生成当前登录的key值,带着key值请求后端接口,获取授权登录的小程序码,并轮询后端接口查看该key值对应的小程序码是否被用户扫描和授权。 2、后端生成一个带有key值参数的小程序码,并将此key值记录。 3、通过用户微信扫描小程序码,拿到对应的key值参数,将此key值和当前小程序用户的身份特征(token)传给后台,告知用户已扫描并点击登录。 4、后台标记此key值用户已登录,并记录用户登录身份,并通过PC端的轮询接口,告知其用户已登录。 5、PC端轮询到用户登录后,带着key值跳转到小程序登录中间页,在中间页PC端后台完成key值和用户信息的转换,记入session,然后跳转到对应的登录后的页面。 PC端登录页代码: function initLoginImg() { require(["md5"], function (md5) { var timestamp = md5.hash(Date.parse(new Date()) + "_" + parseInt(Math.random() * 100000)); $("#miniLoginCodeImg").html('image'); var timer = setInterval(function () { get('/api/mini.login_pc/checkLogin', {'scene': timestamp}, false, function (res) { if (res !== "0") { window.location.href = "/admin/login/mini?scene=" + timestamp; } }, function (res) { ... clearInterval(timer); }); }, 2500); }); } initLoginImg(); PC端生成小程序码: /** * 生成扫码登录小程序码 * @return Response */ public function miniLogin() { $params = $this->request->param(); $rule = [ 'scene' => 'require', ]; try { $this->validate($params, $rule); } catch (ValidateException $e) { return error($e->getMessage()); } $scene = Arr::get($params, 'scene'); $path = 'pages/landing/landing'; $cacheKeyService = CacheService::MiniLoginPC; $key = Arr::get($cacheKeyService, 'key'); $expire = Arr::get($cacheKeyService, 'expire'); Cache::set($key . $scene, '0', $expire); $optional = [ 'page' => $path, 'width' => 30 ]; $app = $this->getMiniApp(); $response = $app->app_code->getUnlimit($scene, $optional); return response($response, 200, ['Content-Type' => 'image/png'], 'html'); } 扫码登录接口: /** * 扫码登录 * @return \think\response\Json * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function scanCode() { $user = $this->request->user; $params = $this->request->param(); $rule = [ 'scene' => 'require', ]; $scene = Arr::get($params, 'scene'); $cacheService = CacheService::MiniLoginPC; $key = Arr::get($cacheService, 'key'); $isLogin = Cache::get($key . $scene); if ($isLogin != "0" && empty($isLogin)) { return error("登录失败,请重新扫码"); } try { $this->validate($params, $rule); } catch (ValidateException $e) { return error($e->getMessage()); } //1、查找系统用户是否存在 $systemUser = SystemUserModel::where('openid', '=', $user->openid)->find(); //2、用户不存在则创建 if (empty($systemUser)) { $systemUser = SystemUserService::instance()->createByWechatUser($user, $this->request); } //3、将用户写入redis $expire = Arr::get($cacheService, 'expire'); Cache::set($key . $scene, $systemUser, $expire); return success(true); } 校验用户是否扫码接口: /** * 校验用户是否扫码 */ public function checkLogin() { $params = $this->request->param(); $rule = [ 'scene' => 'require', ]; try { $this->validate($params, $rule); } catch (ValidateException $e) { return error($e->getMessage()); } $scene = Arr::get($params, 'scene'); $cacheService = CacheService::MiniLoginPC; $key = Arr::get($cacheService, 'key'); $isLogin = Cache::get($key . $scene); if ($isLogin != "0" && empty($isLogin)) { return error("登录码已过期"); } return success($isLogin); } 登录中间页: /** * 小程序登录 * @return \think\response\Redirect */ public function mini() { $params = $this->request->param(); $scene = Arr::get($params, 'scene'); if (empty($scene)) { $this->error('登录场景值为空', sysuri('admin/login')); } $cacheConfig = CacheService::MiniLoginPC; $key = Arr::get($cacheConfig, 'key') . $scene; $systemUser = Cache::get($key); if (empty($systemUser)) { $this->error('小程序码已过期,请重新扫码', sysuri('admin/login')); } if (empty($systemUser['status'])) { $this->error('该用户已禁用,请联系管理员', sysuri('admin/login')); } Session::set('user', $systemUser); Session::delete("login_input_session_error"); SystemUserModel::where('id', '=', $systemUser['id'])->update([ 'login_ip' => $this->request->ip(), 'login_at' => date('Y-m-d H:i:s'), 'login_num' => Db::raw('login_num+1'), ]); sysoplog('用户登录', '登录系统后台成功'); return redirect('/admin'); }
2022-04-12 - 微信支付商户经营工具-「企业付款到零钱」产品介绍及开通使用过程中的问题说明
1、功能说明 企业付款到零钱是一种由微信支付商户号直接付钱至用户微信零钱的能力,资金到账速度快,使用及查询方便,主要用来解决合理的商户对用户付款需求,支持平台操作及接口调用两种方式。 产品特点 免费:不收取付款手续费,节省企业成本。 灵活:可通过页面或接口发起付款,灵活满足企业不同场景的付款需求。 友好:通过openid即可实现付款,用户授权即可,体验更好。 快速:在发起后,及时到账用户零钱。通过微信消息触达,用户及时获知入账详情。 安全:提供多种安全工具,满足不同场景安全需求。如:按需调整付款额度;支持收款账户限制;支持安全防刷,拦截恶意用户、小号、机器号码;支持自定义大额通知等。 2、适用场景 费用报销:公司小额报销 员工福利:日常节假日福利金发放 保险理赔:小额保险款项发放 用户奖励:邀请奖励 佣金发放:一般适用于产品分销小额佣金的发放 3、开通条件 结算周期为T+1的商户,需满足三个条件: 1)商户号入驻满90天 2)截止今日往回推30天连续不间断保持有交易。 3)保持正常健康交易 其他说明 1、连续30天交易无金额限制,请保持正常交易。 2、同一主体下,若有一个商户号满足企业付款到零钱开通条件,其余商户号也一样可以开通,没有30天/90天的限制。 4、为什么会有30天/90天的限制 此项规定是根据中国人民银行文件银发〔2016〕261号文件的通知 详见第二项的第十二条说明 [图片] 更多可以看公告原文:点我查看 5、企业付款到零钱的限额说明 针对同一个商户,所有付款来源加总限制(商户平台&接口): 1)付款给同一个用户(实名用户):单日、单笔上限:2W元(单笔最多2W,当日最多也2W); 2)日付款总金额:100W元 ; 3)单笔付款最低额度:0.3元(范围:企业付款api、商户平台企业付款) 备注:开发文档的链接:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_1 6、写在最后 其实你们更想知道的是「何为健康交易」,那就简单透露一点点吧 1)符合行业属性的交易(自己领悟,你那么聪明一定可以悟到的) 2)符合用户消费习惯的交易(自己领悟,你那么聪明一定可以悟到的) 如果有问题可以跟帖回复,也可以私信,欢迎交流沟通 最后的最后,告诫开通了朋友千万不要拿去做坏事哦 本文还会更新其他内容,可以收藏一下下~~~ 更多商户相关文档可查看:https://developers.weixin.qq.com/community/develop/article/doc/000ce0be104fe8db37fbf478b5b813
2021-04-28