算命网站支付成功后,扫码加企业微信好友后,自动发送测算结果
1、用户进行测算,支付成功后首先需要跳转到企业微信扫码界面2、上面扫码加好友成功后,企业微信自动发送测算结果给用户微信
1、用户进行测算,支付成功后首先需要跳转到企业微信扫码界面
2、上图扫码加好友成功后,企业微信自动发送测算结果给扫码的微信用户
3、为实现上面的功能,需要操作的流程大致如下:
1)企业微信内创建一个自建应用,获取secret,设置接收消息的api(确定企业微信回调数据给自己的url地址),企业可信ip里面加上服务器的ip
2)在客户联系里面,可调用接口的应用里面,加上自己创建的自建应用,在获客助手里面,创建获客链接
3)获客链接创建好后,需要在获客链接后面加一个customer_channel参数,比如:https://work.weixin.qq.com/ca/cawcde2f2e234bc272?customer_channel=202407062301167181485929,用户通过获客链接扫码加好友后,企业微信会回调包含 customer_channel 参数的数据给你接收回调信息的url地址,参考文章:
https://developer.work.weixin.qq.com/document/path/97298#42923,
回调数据需要先解密成明文后,里面的 State 参数就是 customer_channel ,我们接收到customer_channel 订单号后就可以在自己的网站数据库查询到订单信息,然后将订单信息自动以欢迎语的方法发送给扫码加好友的微信用户,以此来实现扫码加好友自动发送订单信息,参考文章:
https://developer.work.weixin.qq.com/document/path/92599
开发过程中遇到的问题:
1、企业微信应用验证URL失败,“openapi请求回调地址不通过,-40001错误”,先上代码
<?php header("Content-type: text/html; charset=utf-8"); include_once "./weworkapi/callback/WXBizMsgCrypt.php"; $encodingAesKey = "******"; $token = "*****"; $corpId = "*****";//企业id,非应用id $sVerifyMsgSig = $_GET@['msg_signature']; $sVerifyTimeStamp = $_GET@['timestamp']; $sVerifyNonce = $_GET@['nonce']; $sVerifyEchoStr = urldecode($_GET@['echostr']); //$sVerifyMsgSig = HttpUtils.ParseUrl("msg_signature"); //$sVerifyTimeStamp = HttpUtils.ParseUrl("timestamp"); //$sVerifyNonce = HttpUtils.ParseUrl("nonce"); //$sVerifyEchoStr = HttpUtils.ParseUrl("echostr"); $a1 = $_GET@['msg_signature'].'---'.$_GET@['timestamp'].'---'.$_GET@['nonce'].'---'.$_GET@['echostr']; // 需要返回的明文 $sEchoStr = ""; $wxcpt = new WXBizMsgCrypt($token, $encodingAesKey, $corpId); $errCode = $wxcpt->VerifyURL($sVerifyMsgSig, $sVerifyTimeStamp, $sVerifyNonce, $sVerifyEchoStr, $sEchoStr); file_put_contents('./qiyeweixin.txt',$a1.'---'.$errCode); if ($errCode == 0) { //var_dump($sEchoStr); echo $sEchoStr; // 验证URL成功,将sEchoStr返回 // HttpUtils.SetResponce($sEchoStr); } else { print("ERR: " . $errCode . " "); } ?>
报-40001错误,那就是$corpId,$token,$encodingAesKey这三个参数没配置对,你会说“我明明配置对了”,那我就教你一个方法,随机获取一次$token和$encodingAesKey,如果报错的话,再获取一次,不行再获取一次,尝试重新获取多次测试,我就是这样验证成功的,关于这一块的参考文章:
https://blog.csdn.net/json_ligege/article/details/133142839,
文章里面有一些企业微信官方的解密文件
企业微信对接报错,可以参考所有的错误码:https://developer.work.weixin.qq.com/document/path/96213#%E9%94%99%E8%AF%AF%E7%A0%81%EF%BC%9A40058
2、总是报错60020,not allow to access from your ip,首先在自建应用里面查看企业可信ip,里面是否包含了你服务器的ip
如果包含了你服务器的ip,还是返回60020,not allow to access from your ip,那就检查一下你的接口代码,看看获取access_token里面传递的2个参数,一个企业id,一个自建应用秘钥,是不是对应的,我就是因为直接把本地文件的代码直接复制粘贴到服务器文件里面,导致这2个参数不对,一直报错60020,not allow to access from your ip,搞得我一头雾水,有时候细节问题没到位,搞得人头大,细心一点比较好
3、测算网站里面,微信支付后,原来是直接跳转到结果页面,现在全部改成跳转到企业微信加好友页面,包括电脑端,浏览器端(h5),微信内浏览器端三部分
微信支付电脑端支付后跳转到企业微信加好友页面:/ffsm/payment/Wxpay_gz/example/native.php
h5端(浏览器端):/ffsm/payment/Wxpay_gz/example/h5api.php
微信内浏览器:/control/ctl_pay.php,第179行,
注释掉:$return['url'] = $this->site_url."/?ac=".$ac."&oid=".$oid."&token=".base64_encode(md5($oid));
加上:$return['url'] = 'https://work.weixin.qq.com/ca/cawcde2f2e2d4bc272?customer_channel='.$oid;
最后,需要完整代码的,有偿分享,感谢!