- 微信支付回调问题
不久前做过一次微信支付的业务,从发起下单到回调获取支付结果整个流程都是正常的,最近又做了一个新的小程序,但是微信支付商户是同一个,只是换了个服务器和换了个小程序appid,除了更改了appid和回调url之外,代码完全一致(同样的业务)。付款是没有问题的,但是在新的服务器上回调出现了问题,可以调用回调url但是获取不到xml,而是获取到了一个很莫名其妙的数组,这个数组中的/PayNotifyTakeOut是我回调url的控制类名,它很神奇的帮我把前面的域名去掉了然后返回给我,这个是接受微信post的结果,原本这应该是个xml格式的数据: ["s" => "/PayNotifyTakeOut"] 但是以前的那个小程序就是正常的可以成功回调,可以成功拿到xml,可是不论是预支付阶段还是回调接口我都没有做过修改,为什么会区别的这么离谱?? <xml><appid><![CDATA[wxf73******d93]]></appid> <bank_type><![CDATA[OTHERS]]></bank_type> <cash_fee><![CDATA[1]]></cash_fee> <fee_type><![CDATA[CNY]]></fee_type> <is_subscribe><![CDATA[N]]></is_subscribe> <mch_id><![CDATA[162*****99]]></mch_id> <nonce_str><![CDATA[uxbgY7gSu0qi57SFZoAtennokYpBv6]]></nonce_str> <openid><![CDATA[oqkFU5EM******c4tlRF9aOks]]></openid> <out_trade_no><![CDATA[1666855134]]></out_trade_no> <result_code><![CDATA[SUCCESS]]></result_code> <return_code><![CDATA[SUCCESS]]></return_code> <sign><![CDATA[641E47A43B****BF1A718F8C07456]]></sign> <time_end><![CDATA[20221027151900]]></time_end> <total_fee>1</total_fee> <trade_type><![CDATA[JSAPI]]></trade_type> <transaction_id><![CDATA[42000015******0270448192537]]></transaction_id> </xml> 刚开始我是认为自己修改appid啥的时候可能不小心改到了些啥,但是我认真的拿着原来的代码重新修改了两次还是一样不行,并且debug时仔细看了预支付的过程是实在的没有问题,预支付里拼装的xml是正确的,有问题应该也调起不了支付 接收post数据的函数: public function post_data() { $receipt = $_REQUEST; if ($receipt == null) { $receipt = file_get_contents("php://input"); if ($receipt == null) { $receipt = $GLOBALS['HTTP_RAW_POST_DATA'] ?? file_get_contents("php://input"); } } return $receipt; } 回调接口接收post数据并处理的代码: libxml_disable_entity_loader(true); $postStr = $this->post_data();//接收post数据 在这就出问题了,接收到的不是xml下面走不下去 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $arr = $this->object_toarray($postObj);//对象转成数组 ksort($arr);// 对数据进行排序 $str = $this->params_tourl($arr);//对数据拼接成字符串 $user_sign = strtoupper(md5($str)); 十分不解,求大佬帮忙看看
2022-10-27 - 微信支付退款curl错误码58
[图片] 证书是没有过期的,也从相对路径改成了服务器上的绝对路径,依旧报错58,求解
2022-10-23