通过WooCommerce/条纹支付网关以编程方式处理订单

时间:2019-05-07 作者:Jeremy

我的客户要求添加一份调查问卷,最终按订阅顺序排列。所有这些都是在正常的签出方法之外发生的。目前,在收集完所有数据后,我将为他们创建用户(客户)并登录,使用收集的信息创建订单,将其传递到条带网关以“process\\u order”,然后在成功创建链接到订单的订阅后。当我省略网关时,所有这些都起作用了。我知道如何将网关应用于订单并将订单传递给网关,但我不知道如何将信用卡信息与订单或客户关联,以便成功。

2 个回复
SO网友:Robert

好吧,我可以找到WooCommerce Stripe的一个空版本&;给你一个片段,但从理论上讲,你想做的是非常简单的,你想获取结账时使用的相同数据,如果信用卡被保存,那么接下来最好的事情就是条带CID(客户ID)。

以WooCommerce条带集成为例您将找到与当前用户id相关的内容,相同的函数/类,您希望在自己的脚本中运行以检索信用卡,只需执行array\\u shift或其他操作即可获取第一张信用卡根据条带的工作方式,您实际上会遇到“一点麻烦”,因为WooCommerce集成没有使用本机条带订阅(据我所知),您实际上必须在WooCommerce中模拟成熟的订单才能正确完成。

另一个技巧是依赖电子邮件地址,并使用条带API来搜索CID。

这是我用来获取所有订阅的代码示例registered in stripe (不是woocommerce),那里有CID和大量“丰富”的数据,只需var_dump( $customer ) 在循环和出口中。

$customer_search = \\Stripe\\Customer::all( [
  \'email\' => $email_address,
  \'limit\' => 200
] );

if( empty( $customer_search->data ) )
  return [];

$response = [];

foreach( $customer_search->data as $customer ) {
  if( !isset( $customer->subscriptions )
      || empty( $customer->subscriptions->data  ) )
    continue;

  foreach( $customer->subscriptions->data as $subscription ) {
    if( is_string( $status ) && $subscription->status != $status )
      continue;
    if( is_array( $status ) && !in_array( $subscription->status, $status ) )
      continue;

    $response[] = $subscription;
  }
}


return $response;

SO网友:dev_masta

因为我们只得到了一个没有真正回答问题的答案,所以我只想说,最后我给出了一个解决方案,其中我:

WC()->cart 对象WC()->cart->get_totals()["total"]

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。