我已经编写了一个自定义插件,并且该插件的一部分使用“ woocommerce_order_status_completed”钩子为:
add_action( 'woocommerce_order_status_completed', 'mmd_woointerface_order_complete', 1);
mmd_woointerface_order_complete($order)
{
//print to log file here
}
我正在使用条纹支付系统,并检查并仔细检查了API密钥,并根据woocommerce插件的建议定义了Webhook端点。
这些选项均不会导致执行 mmd_woointerface_order_complete 操作。我的自定义呼叫永远不会启动。我错过了什么吗?
有人能与Stripe合作吗?需要帮助。
答案 0 :(得分:0)
问题已解决! 如果您使用Stripe并希望编写在付款时被调用的代码。 woocommerce条形插件具有一个完整的其他动作挂钩sdk。
您可以在此处找到呼叫的链接: https://docs.woocommerce.com/document/stripe/#section-13
最有效但与标准woocommerce挂钩不同的是 “ wc_gateway_stripe_process_response($ stripe_response,$ order)”
您将需要检查$ stripe-response变量,该变量被分配了以下字符串值之一:“成功”,“失败”,“待定”和“保留”
这是我编写的代码,效果非常好。
function ProcessStripePayment($stripe_response, $order)
{
switch($stripe_response->status)
{
case 'succeeded';
DebugLog('wc_gateway_stripe_process_payment HOOK FIRED succeeded');
break;
case 'failed';
DebugLog('wc_gateway_stripe_process_payment HOOK FIRED - failed');
break;
case 'pending';
DebugLog('wc_gateway_stripe_process_payment HOOK FIRED - pending');
break;
case 'on-hold';
DebugLog('wc_gateway_stripe_process_payment HOOK FIRED - on-hold');
break;
}
}
到目前为止,另一个相当大的陷阱是,这在插件中不起作用。您必须将其放在function.php中,或者我使用了一个名为片段的插件。这样就可以了。
您需要编写的其余代码是类结构的一部分。
$order = new WC_Order( $order_id );
相当简单,直到您进入woocommerce结帐字段使用的Meta_data。为此可行:
foreach($MetaData as $SubRow)
{
switch($SubRow->key)
{
case 'Your Custom Field Name':
break;
} // switch($SubRow->key)
DebugLog($SubRow->key);
DebugLog($SubRow->value);
} // foreach($MetaData as $SubRow)