Php WooCommerce自定义支付网关集成未完成POST

Php WooCommerce自定义支付网关集成未完成POST,php,wordpress,woocommerce,payment-gateway,Php,Wordpress,Woocommerce,Payment Gateway,我想知道你是否能帮我。我正在开发一个与WooCommerce集成的定制支付网关,现在我陷入了困境。当我点击pay时,Chromes控制台中出现了一个500内部服务器错误,它被卡在了收据页面上 你可以查一下到目前为止我得到的代码 它应该生成一个html表单,并向支付网关发送帖子,用户在那里输入他/她的CC详细信息,然后返回现在正在工作 8月15日更新 现在帖子可以正常工作了,但是当从支付网关返回时,它会登录到默认的结帐页面,并且不会处理结果 任何帮助都将不胜感激 提前感谢。@Federico您不

我想知道你是否能帮我。我正在开发一个与WooCommerce集成的定制支付网关,现在我陷入了困境。当我点击pay时,Chromes控制台中出现了一个500内部服务器错误,它被卡在了收据页面上

你可以查一下到目前为止我得到的代码

它应该生成一个html表单,并向支付网关发送帖子,用户在那里输入他/她的CC详细信息,然后返回现在正在工作

8月15日更新

现在帖子可以正常工作了,但是当从支付网关返回时,它会登录到默认的结帐页面,并且不会处理结果

任何帮助都将不胜感激


提前感谢。

@Federico您不应该依靠用户按“返回网站”来接收付款响应负载。您应该依赖于从他们的后端到您的后端的IPN响应对话。您的支付提供商告诉用户支付成功,用户关闭浏览器

第一步。将用户重定向到VisaNetUY时,将其返回到感谢URL

$return_url = $this->get_return_url($order);
第二步。将此URL提供给您的支付网关,以便在交易获得批准时通知您的网站。(有时称为webhook或ipn响应)

第三步。您需要删除此行

add_action('woocommerce_thankyou_' . $this->id, array( $this, 'check_response'  ));
第四步。并改用这一行:

add_action('woocommerce_api_wc_visanetuy', array($this, 'check_response') ); 
//the WC_VisaNetUY from step2 url gets converted to lowercase by wordpress and appended to woocommerce_api_, and if it matches then it calls your function name, in this case it calls your 'check_response', but you could have put any function name here instead of check_reponse in fact some people call it handle_callback or check_ipn_response. 

第五步。不要调用$order->reduce\u order\u stock(),因为$order->payment\u complete()已经为您进行了减仓,并且正在更改状态。

错误日志上说了什么?@Anand我使用godaddy共享主机,php错误日志上没有任何内容。我已经设置了插件,以便在运行每个函数时保存一些日志,并且由于某种原因没有执行receipt_页面,该页面生成表单并发布帖子,即使我已添加到操作中。@A抱歉,我无意中删除了该问题。现在,邮政工作,但当回来时,是不是处理付款。错误日志中没有任何内容。能否确认服务器上是否启用了OpenSSL扩展?我下载了您的代码并进行了自动重定向,但由于我没有私钥,因此无法对其进行进一步测试。@a并且它已启用,但没有使用443进行事务处理。我使用的是标准端口80。如果我在Google Chrome上查看网络并看到标题,当我回到商店时,我会从服务器上得到一个正确的POST响应,但商店没有处理结果。
add_action('woocommerce_api_wc_visanetuy', array($this, 'check_response') ); 
//the WC_VisaNetUY from step2 url gets converted to lowercase by wordpress and appended to woocommerce_api_, and if it matches then it calls your function name, in this case it calls your 'check_response', but you could have put any function name here instead of check_reponse in fact some people call it handle_callback or check_ipn_response.