WooCommerce 自定义支付网关集成不执行 POST
Posted
技术标签:
【中文标题】WooCommerce 自定义支付网关集成不执行 POST【英文标题】:WooCommerce custom payment gateway integration not doing POST 【发布时间】:2014-10-08 01:46:25 【问题描述】:我想知道你是否可以帮助我。我正在开发与 WooCommerce 的自定义支付网关集成,但我现在陷入困境。当我点击付款时,我在 Chrome 控制台中收到 500 Internal Server 错误,并且卡在收据页面中。
你可以在这里查看我目前得到的代码
https://github.com/tora-soft/visanet-uy-payment-gateway/blob/master/visanet-uy-payment-gateway.php
它应该生成一个 html 表单并向支付网关发送 POST,用户将在其中输入他/她的 CC 详细信息,然后返回。 现在可以使用了
8 月 15 日更新
现在帖子正在运行,但是当从支付网关返回时,它会登陆默认结帐页面并且没有处理结果。
任何帮助将不胜感激。
提前致谢。
【问题讨论】:
错误日志说明了什么? @Anand 我使用 godaddy 共享主机,php 错误日志中没有任何内容。我已经设置了插件以在运行每个函数时保存一些日志,并且由于某种原因没有执行receipt_page,这是生成表单并发布帖子的那个,即使我已经添加到操作中。 @Anand 抱歉,我不小心删除了这个问题。现在 POST 正在工作,但回来时没有处理付款。错误日志中没有任何内容。 您能否确认您的服务器上是否启用了 OpenSSL 扩展?我下载了您的代码并进行了自动重定向,但由于我没有私钥,我无法进一步测试它。 @Anand 它已启用,但不使用 443 进行交易。我使用的是标准端口 80。如果我在 Google Chrome 上检查网络并查看标头,我会在返回商店时从服务器正确收到 POST 响应,但商店没有处理结果。 【参考方案1】:@Federico 您不应依赖用户按“返回网站”来接收付款响应负载。您应该依靠从他们的后端到您的后端的 IPN 响应谈话。您的支付提供商告诉用户支付成功并且用户关闭浏览器。
第 1 步。将用户重定向到 VisaNetUY 时,使其返回到感谢 URL。
$return_url = $this->get_return_url($order);
第 2 步。将此 URL 提供给您的支付网关,以便在交易获得批准时通知您的网站。 (有时称为 webhook 或 ipn 响应)
http://myurl.com/?wc-api=WC_VisaNetUY
第 3 步。您需要删除此行。
add_action('woocommerce_thankyou_' . $this->id, array( $this, 'check_response' ));
第 4 步,改用这一行:
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.
第 5 步。不要调用 $order->reduce_order_stock(),因为 $order->payment_complete() 已经为您减少库存和更改状态。
【讨论】:
以上是关于WooCommerce 自定义支付网关集成不执行 POST的主要内容,如果未能解决你的问题,请参考以下文章
如何从 woocommerce 自定义支付网关中的 process_payment 函数执行 POST 重定向?
WooCommerce Stripe 支付网关自定义 javascript 冲突
获取自定义支付网关数据作为 Woocommerce 3 中的设置