微信支付
微信支付服务商分账接口 —— 服务商可作为分账的出资方吗? 场景描述: 业务为外卖电商平台,平台下的商家为特约商户,每笔订单平台将抽取一定服务费,通过分账的方式从子商户分给服务商商户; 现在有个问题是如果平台搞活动发放平台优惠券或积分给用户,用户下单支付并选择了优惠券或积分,那么会造成用户实际微信支付金额小于平台应该给商家结算的金额,如用户只需在线支付10元,平台与商家约定的商家应得收益为12元,这2元的差价可以通过分账的方式,服务商作为分账的出资方再补给子商户吗?
我的所有操作是在unicloud 云对象上完成的 我是在微信公众号里,打开了H5网页进行支付 1:能正常获得code, 2:能正常获得 openid 3:签名, 签名用的是商户的秘钥,不是公众号的秘钥, -------- 开始签名------------------ function getSign(keys,params){ let str = '' for(let i=0;i<keys.length;i++){ const key = keys[i] str += key + '=' + params[key] + '&'; } str = str + 'key=' + mchsecret // 这里用的是商户的秘钥,不是公众号的秘钥,不知道对不对 const tempStr = encodeURI(str); //url 编码 const md5 = crypto.createHash('md5') //md5加密 let md5str = md5.update(tempStr).digest('hex').toUpperCase(); return md5str; } 这里是正常的没有问题。 ---------签名结束------------------------------------------------------------------ 4:签名完名以后完转xml,这里重要数据我都用xxx 来代替了 <xml> <appid><![CDATA[xxxxxxxxxxxxx]]></appid> <attach>深圳分店</attach> <body>这是一个测试</body> <device_info>WEB</device_info> <mch_id>0000000000000</mch_id> <nonce_str>p@xdtestabc123d</nonce_str> <notify_url>xxxxxxxxxxxxx</notify_url> <openid>xxxxxxxxxxxxxxxxxxx</openid> <out_trade_no>1001001</out_trade_no> <spbill_create_ip>198.61.17.12</spbill_create_ip> <total_fee>1</total_fee> <trade_type>MWEB</trade_type> <sign>56AEFE5236B1B481F660896D08910F12</sign> </xml> 5: -------- 开始下单---------------------------------- const unifiedorder_url = "https://api.mch.weixin.qq.com/pay/unifiedorder" //统一下单地址 const res = await uniCloud.httpclient.request(unifiedorder_url,{ method: 'POST', data:val.xml }) conslog.log(res); 6: 结果打印如下:我看不懂了 "data": { "type": "Buffer", "data": [62, 20, 109, 108, 62, 60, 114, 101, 116, 117, 114, 110, 95, 99, 111, 100, 101, 62, 60, 33, 91, 67, 68, 65, 84, 65, 91, 70, 65, 73, 76, 93, 93, 61, 60, 47, 114, 101, 116, 117, 114, 110, 95, 99, 111, 100, 101, 62, 10, 60, 114, 101, 116, 95, 159, 115, 103, 62, 60, 33, 91, 67, 68, 65, 84, 65, 91, 231, 173, 190, 219, 144, 141, 233, 148, 153, 232, 175, 175, 239, 188, 141, 22, 15, 13, 20, 16, 128, 230, 159, 65, 229, 144, 142, 229, 134, 141, 232, 175, 149, 93, 93, 62, 60, 47, 114, 10, 116, 117, 114, 110, 95, 10, 115, 103, 62, 10, 60, 43, 120, 109, 108, 62] }, "status": 200, "headers": { "server": "nginx", "date": "Mon, 08 May 2023 09:30:57 GMT", "content-type": "text/plain", "content-length": "126", "connection": "keep-alive", "keep-alive": "timeout=8", "cache-control": "no-cache, must-revalidate", "x-content-type-options": "nosniff", "request-id": "08D182E3A206D2CD8C70283348, 08D182E3AA0D28C5820AB4B402-0" }, "res": { "status": 200, "statusCode": 200, "statusMessage": "OK", "headers": { "server": "nginx", "date": "Mon, 08 May 2023 09:30:57 GMT", "content-type": "text/plain", "content-length": "126", "connection": "keep-alive", "keep-alive": "timeout=8", "cache-control": "no-cache, must-revalidate", "x-content-type-options": "nosniff", "request-id": "08D182E3A2064A904-270283348, 08D182E3A206104B90828B4B402-0" }, "size": 126, "aborted": false, "rt": 217, "keepAliveSocket": false, "data": { "type": "Buffer", "data": [62, 20, 109, 108, 62, 60, 114, 101, 116, 117, 114, 110, 95, 99, 111, 100, 101, 62, 60, 33, 91, 67, 68, 65, 84, 65, 91, 70, 65, 73, 76, 93, 93, 61, 60, 47, 114, 101, 116, 117, 114, 110, 95, 99, 111, 100, 101, 62, 10, 60, 114, 101, 116, 95, 159, 115, 103, 62, 60, 33, 91, 67, 68, 65, 84, 65, 91, 231, 173, 190, 219, 144, 141, 233, 148, 153, 232, 175, 175, 239, 188, 141, 22, 15, 13, 20, 16, 128, 230, 159, 65, 229, 144, 142, 229, 134, 141, 232, 175, 149, 93, 93, 62, 60, 47, 114, 10, 116, 117, 114, 110, 95, 10, 115, 103, 62, 10, 60, 43, 120, 109, 108, 62] }, "requestUrls": ["https://api.mch.weixin.qq.com/pay/unifiedorder"], "timing": null, "remoteAddress": "221.238.80.33", "remotePort": 443, "socketHandledRequests": 1, "socketHandledResponses": 1 }
按文档的步骤得到的加密链接如下,参数都换成了自已的。得到的md5加密值与链接里的check_code值不一样。求原因? [图片] 另外有两个疑惑: 1、原有链接上有一个时间参数 &t=1683511595129,这个需要加到md5验证参数里面去吗? 2、transaction_id是不是下面这张图里面的交易单号? [图片] 下面是文档 1) 通过商家小票链接获取用户订单信息: 点金计划页面打开时,页面上方的 iframe 框架会请求服务商填写的商家小票链接,会在链接后附 上:“特约商户号(sub_mch_id)”、“商户订单号(out_trade_no)”、“md5 校验码 (check_code)”三个字段的信息,方便服务商快速定位到具体订单的同时,也保证链接的可靠 性。 a) 增加参数后的链接格式为: 服务商链接?sub_mch_id=特约商户号&out_trade_no=商户订单号&check_code= b) 举例: 若服务商配置的链接为 https://www.qq.com,特约商户号为 1234567,商户订单号为 ABCDEFG,则请求的链接为 https://www.qq.com?sub_mch_id=1234567&out_trade_no=ABCDEFG&check_code= 39f0876dd58e4eb61b66250f69d02705 2) 服务商校验 check_code 服务商获取到上述完整链接时,为了保证参数没有被篡改,需要做 MD5 校验。 a) 校验方式 通过链接上的“商户订单号”,到后台获取该订单对应的“微信订单号”,即 transaction_id, 并拼在原有链接后(需去除 check_code,即:服务商链接?sub_mch_id=特约商户号 &out_trade_no=商户订单号&transaction_id=),进行 MD5 计算。 b) 举例 若 transaction_id 为 abcdefg,则 MD5 值为: String my_check_code = MD5(“https://www.qq.com?sub_mch_id=1234567&out_trade_no=ABCDEFG&transactio n_id=abcdefg”); 若 my_check_code 与最初链接参数中的 check_code 相等,说明该链接未被篡改,可正常跳转 到商家小票内容,否则服务商需展示错误提示页。
微信付款码支付的明细水单有没有接口可以获取的?
对接商家转账到零钱后,给用户转账,提示REALNAME_ACCOUNT_RECEIVED_QUOTA_EXCEED:用户账户收款受限,请引导用户在微信支付查看详情。 请问,用户是在哪里可以查看到相关的原因并进行解决?
调用微信支付 有些手机可以正常跳转,有些手机点击没反应 跳转不了, 真机模式调试的话也不可以跳转微信, 上线的话又看不到参数 那个大佬会啊
商户号:1505205371,JSAPI权限被冻结,通知已经提示恢复了权限,但仍然无法使用?
请问 合单小程序下单API 合单支付权限 在哪里申请?微信支付侧运营在哪里可以找到联系方式?
支付订单号:4200001537202210042039881607 商户退款订单号:4200001537202210042039881607a74a45acb5ad
我提交了一次需要的信息,反馈说提供的小程序不能进行测试,我都没开通电商收付通,怎么能测试呢?
现在2天了还是没有变化。
是jsapi生成的支付二维码,这个问题要怎么解决呀
开通商家转账到零钱申请被驳回,却显示还在审核中,无法重新提交资料,具体如图: [图片][图片]
我可以确定密钥是从商户后台下载的,序列号用openssl计算出来的和商户后台获取到的是一样的,代码无论是我自己写的C++实现,PHP SDK 的示例代码,手动拼凑CURL命令都不行。只有官方那个java证书下载工具能通过。搞了两天两夜了,求高手支招。 PHP请求失败: [图片] 证书下载工具下载成功如图: [图片] <?php require_once('vendor/autoload.php'); use WeChatPay\Builder; use WeChatPay\Crypto\Rsa; use WeChatPay\Util\PemUtil; // 设置参数 // 商户号 $merchantId = '163587****'; // 从本地文件中加载「商户API私钥」,「商户API私钥」会用来生成请求的签名 $merchantPrivateKeyFilePath = 'file:///home/ender/PhpstormProjects/untitled/cert/apiclient_key.pem'; $merchantPrivateKeyInstance = Rsa::from($merchantPrivateKeyFilePath, Rsa::KEY_TYPE_PRIVATE); // 「商户API证书」的「证书序列号」 $merchantCertificateSerial = '1995EF71A353F9A9D722344ECD3BC396835*****'; // 从本地文件中加载「微信支付平台证书」,用来验证微信支付应答的签名 $platformCertificateFilePath = 'file:///home/ender/PhpstormProjects/untitled/cert/wechatpay_522D8E1708CE368A65C89B5E1609DEA1E1C*****.pem'; $platformPublicKeyInstance = Rsa::from($platformCertificateFilePath, Rsa::KEY_TYPE_PUBLIC); // 从「微信支付平台证书」中获取「证书序列号」 $platformCertificateSerial = PemUtil::parseCertificateSerialNo($platformCertificateFilePath); // 构造一个 APIv3 客户端实例 $instance = Builder::factory([ 'mchid' => $merchantId, 'serial' => $merchantCertificateSerial, 'privateKey' => $merchantPrivateKeyInstance, 'certs' => [ $platformCertificateSerial => $platformPublicKeyInstance, ], ]); // 发送请求 $resp = $instance->chain('v3/certificates')->get( ['debug' => true] // 调试模式,https://docs.guzzlephp.org/en/stable/request-options.html#debug ); echo $resp->getBody(), PHP_EOL;
[图片] { ""card"": { ""card_type"": ""MEMBER_CARD"", ""member_card"": { ""wx_activate"": true, ""background_pic_url"": ""https://mmbiz.qlogo.cn/mmbiz/"", ""base_info"": { ""logo_url"": ""http://mmbiz.qpic.cn/mmbiz/iaL1LJM1mF9aRKPZ/0"", ""brand_name"": ""海底捞"", ""code_type"": ""CODE_TYPE_TEXT"", ""title"": ""海底捞会员卡"", ""color"": ""Color010"", ""notice"": ""使用时向服务员出示此券"", ""service_phone"": ""020-88888888"", ""description"": ""不可与其他优惠同享"", ""date_info"": { ""type"": ""DATE_TYPE_PERMANENT"" }, ""sku"": { ""quantity"": 50000000 }, ""get_limit"": 3, ""use_custom_code"": false, ""can_give_friend"": true, ""location_id_list"": [ 123, 12321 ], ""promotion_url_name"": ""自助挂号"", ""promotion_url"": ""https://weixin.com"", ""need_push_on_view"": true, ""pay_info"": { ""swipe_card"": { ""is_swipe_card"":true } } }, ""advanced_info"": { ""use_condition"": { ""accept_category"": ""鞋类"", ""reject_category"": ""阿迪达斯"", ""can_use_with_other_discount"": true }, ""abstract"": { ""abstract"": ""微信餐厅推出多种新季菜品,期待您的光临"", ""icon_url_list"": [ ""http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sj piby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw / 0"" ] }, ""text_image_list"": [ { ""image_url"": ""http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sjpiby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0"", ""text"": ""此菜品精选食材,以独特的烹饪方法,最大程度地刺激食 客的味蕾"" }, { ""image_url"": ""http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sj piby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0"", ""text"": ""此菜品迎合大众口味,老少皆宜,营养均衡"" } ], ""time_limit"": [ { ""type"": ""MONDAY"", ""begin_hour"":0, ""end_hour"":10, ""begin_minute"":10, ""end_minute"":59 }, { ""type"": ""HOLIDAY"" } ], ""business_service"": [ ""BIZ_SERVICE_FREE_WIFI"", ""BIZ_SERVICE_WITH_PET"", ""BIZ_SERVICE_FREE_PARK"", ""BIZ_SERVICE_DELIVER"" ] }, ""supply_bonus"": true, ""supply_balance"": false, ""prerogative"": ""这里是特权内容"", ""custom_field1"": { ""name_type"": ""FIELD_NAME_TYPE_LEVEL"", ""url"": ""http://www.qq.com"" }, ""activate_url"": """", ""custom_cell1"": { ""name"": ""使用入口2"", ""tips"": ""激活后显示"", ""url"": ""http://www.qq.com"" }, ""bonus_rule"": { ""cost_money_unit"": 100, ""increase_bonus"": 1, ""max_increase_bonus"": 200, ""init_increase_bonus"": 10, ""cost_bonus_unit"": 5, ""reduce_money"": 100, ""least_money_to_use_bonus"": 1000, ""max_reduce_bonus"": 50 }, ""discount"": 10 } } }
调用https://api.mch.weixin.qq.com/v3/transfer/batches接口报错{"code":"INVALID_REQUEST","message":"产品权限异常"} [图片]
我在小程序上关联其它主体的商户号,系统提示“微信支付商家助手”公众号查看并确认《交易结算管理要求确认通知》,可是我在这个公众号并没有收到通知,在公众平台安全助手收到了APP授权管理申请,点击后进入了授权绑定申请页面,我点击允许授权,有时候就成功,有时间就失败,但是小程序的微信支付模块,那里面的待关联商户号,还是未确认状态。[图片][图片][图片][图片]
https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/minishopopencomponent2/API/funds/qrcode/check.htmlhttps://developers.weixin.qq.com/miniprogram/dev/reference/api/Page.html "api unauthorized rid: 64565414-2f8283c3-0e1b366f"
"applyment_id":2000002379331137,"applyment_state":"REJECTED","applyment_state_desc":"已驳回","audit_detail": [{"param_name":"id_card_copy","reject_reason":"身份证人像面无法查看,请核实图片格式上传是否有误,请重新提供"},{"param_name":"id_card_national","reject_reason":"身份证国徽面无法查看,请核实图片格式上传是否有误,请重新提供 IDENTIFICATION_TYPE_HONGKONG选的这个类型 选择的时证件是港澳通行证怎么还提示身份证图片有误呢
云托管的后端发起支付,得到错误 {"errcode":0,"errmsg":"ok","respdata":{"return_code":"FAIL","return_msg":"参数格式校验错误"}} 后端 php 代码如下(curl部分来自 TCloudBase/wxcloudrun-pay-demo ) public function directPay() { $url = 'http://api.weixin.qq.com/_/pay/unifiedOrder'; $hdr = Request::header(); $data = array( "out_trade_no" => time(), "body" => "测试支付", "total_fee" => 50, "openid" => $hdr["x-wx-openid"], "env_id" => $hdr["x-wx-env"], "spbill_create_ip" => $hdr["x-original-forwarded-for"], "sub_mch_id" => "151195123", "callback_type" => 2, "container" => array( "service" => $hdr["x-wx-service"], "path" => "/api/payback", ) ); $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS => json_encode($data), CURLOPT_HTTPHEADER => array( 'Content-Type: application/json' ), )); $response = curl_exec($curl); curl_close($curl); return $response; } 很急!