在 WooCommerce 中以编程方式对保存的信用卡收费

2023-12-02

我正在 WooCommerce 中以编程方式创建订单,并且需要向默认保存的信用卡收费。我正在使用 WooCommerce stripe 插件,并已弄清楚如何设置正确的付款方式,但无法弄清楚如何实际向卡收费。下面是我到目前为止的代码。

$order = wc_create_order();

$order->add_product( wc_get_product( 52 ), 1 );
$order->set_address( $shipping_address, 'shipping' );
$order->set_address($user_info, 'billing');

$payment_gateways = WC()->payment_gateways->payment_gateways();
$order->set_payment_method($payment_gateways['stripe']);

$order->calculate_totals(); 
$order->update_status("Completed", 'First Partner Order', TRUE);
$order->save();

我找到了一个解决方案,虽然不是很优雅,但似乎可行。 基本前提是我们使用 stripe api 创建费用,然后手动添加所有自定义字段。这将导致成功收费,该费用会反映在 woocommerce 中,并且稍后可以通过管理员退款。下面是带注释的代码。我很想知道是否有人找到了更好的解决方案。

注意:您必须使用条纹 PHP API

$order = wc_create_order();

$order->add_product( wc_get_product( 52 ), 1 ); //Add product to order
$order->set_address( $shipping_address, 'shipping' ); //Add shipping address
$order->set_address($user_info, 'billing'); //Add billing address

//Set payment gateways
$payment_gateways = WC()->payment_gateways->payment_gateways();
$order->set_payment_method($payment_gateways['stripe']);

$order->calculate_totals(true); //setting true included tax 
//Try to charge stripe card
try {

  // Get stripe  test or secret key from woocommerce settings
  $options = get_option( 'woocommerce_stripe_settings' );
  $stripeKey = 'yes' === $options['testmode'] ? $options['test_secret_key'] : 
  $options['secret_key'] ;

  //Set the Stripe API Key
  \Stripe\Stripe::setApiKey($stripeKey);

  //Get Stripe customer token that was created when the card was saved in woo
  $tokenString = get_user_meta($user_id, '_stripe_customer_id', true);

  //Get total for the order as a number
  $total = intval($order->get_total());
  $totalNoDec = $total * 100;

  //Charge user via Stripe API
  $charge = \Stripe\Charge::create([
    'amount' => $totalNoDec,
    'currency' => 'usd',
    'customer' => $tokenString,
  ]);

  //Set all the meta data that will be needed
  $order->update_meta_data( '_transaction_id', $charge->id );
  $order->update_meta_data( '_stripe_source_id', $charge->payment_method );
  $order->update_meta_data( '_stripe_charge_captured', 'yes'  );
  $order->update_meta_data( '_stripe_currency', $charge->currancy);
  $order->update_meta_data( '_stripe_customer_id', $charge->customer);

} catch (\Stripe\Error\Base $e) {
  // Code to do something with the $e exception object when an error occurs
  echo($e->getMessage());
} catch (Exception $e) {
  echo($e->getMessage());
  // Catch any other non-Stripe exceptions
}

//Set order status to processing
$order->set_status("processing");
$order->save();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 WooCommerce 中以编程方式对保存的信用卡收费 的相关文章

  • 将 PHP 变量传递给 Jquery 而不刷新

    对于我缺乏 jquery 知识 我预先表示歉意 在我正在构建的这个网站中 向用户展示了许多代表植物的缩略图 单击缩略图时 将启动 jquery 弹出窗口 我希望能够做的是将一个包含植物 ID 的 php 变量传递给 jquery 弹出窗口以
  • PHPUnit 和来自 Guzzle 的模拟请求

    我有一堂具有以下功能的课程 public function get string uri stdClass this gt client new Client response this gt client gt request GET u
  • 如何用PHP进行有向图绘制?

    我正在寻找一种在 PHP 中绘制有向图的方法 如http upload wikimedia org wikipedia commons 0 08 Directed acirclic graph png http upload wikimed
  • WordPress 中的 jQuery.post()

    我目前正在为 Wordpress 编写一个聊天框插件 该插件使用 jQuery post 方法将数据发送到 php 文件 以便将输出写入 html 文件 该文件又将使用 jQuery 加载到聊天窗口 在我用来将聊天日志写入html文件的ph
  • 如何覆盖 suhosin 最大值?

    suhosin 正在过滤一个重要的 GET 参数 当以下方法不起作用时 如何覆盖 suhosin public html php ini suhosin suhosin get max value length 2048 将 suhosin
  • WooCommerce:在数据库中查找产品

    我正在使用 WooCommerce 创建一个网站 我想根据用户在主页搜索表单中输入的邮政编码来限制用户可用的产品 为了能够实现这一目标 我必须在 phpMyAdmin 的数据库中指定每个产品的条件 但我似乎找不到它 有谁知道 phpmyAd
  • PDO::commit 之后使用 PDOStatement::rowCount 结果?

    在 MySQL 文档中 有一个关于使用的注释mysql affected rows事务提交后 http php net manual en function mysql affected rows php http php net manu
  • Oracle/PHP - ORA-00911 更新时的无效字符

    我正在运行一个 PHP 脚本 该脚本从 Oracle 数据库实例更新表 首先 我收到一个 JSON 对象 lot KLMHA17N9N00 requestor B10078 id FRESHLOT username B26696 passw
  • 验证数据库匹配中的 $_GET id 是否足够安全?

    我的网站上有 2 个页面 一个是 index php 索引页面列出了数据库中存在的所有帖子 另一个页面是 post php 当单击索引页面上的特定帖子时 帖子页面显示单个帖子 现在我用来列出 index php 上所有帖子的代码是 post
  • PHP - 发送带有附件的电子邮件不显示消息内容

    尝试创建一个脚本 我可以在其中发送带有附件的电子邮件 一切正常 除了当我不在电子邮件中添加文件时 我仍然可以看到带有 0B 且没有名称的附件 if isset POST my send email to POST my email to r
  • 如何仅将网站的特定部分放入 iframe 中?

    我只想将网站的一小部分放入 iframe 中 我该怎么做 通常 当我为网站 假设是雅虎 设置 iframe 时 它 会获取整个网站 假设我只想要网站的一小部分 我该怎么做 是否可以在网站的 iframe 上添加边距 我想在我的网站上放置一个
  • PHP Netbeans:xdebug 在每个 include() 或 require() 上停止

    我刚刚发现使用 netbeans IDE 中集成的 xdebug 进行 PHP 调试 我认为这很棒 没有它我怎么生活 但有一个问题 如果我在代码深处设置了一个断点 我必须在到达断点之前多次按 继续 F5 因为脚本会在每个 include 和
  • 如何使用 PHP 从 MySQL 查询中按升序对值进行排序?

    我使用以下 PHP 脚本从 MySQL 表中获取和更改数据 并将结果打印在 HTML 表中 我希望按升序对数据进行排序 utilization percentage变量 它是由创建的 total client time total avai
  • php包含来自另一个目录的文件

    这是一个结构示例 main css style css include article1 php article2 php header php index php 在我的 header php 中 我有以下 css 代码 例如 在我的 i
  • 在mysql中搜索“SanF”时获取旧金山的记录

    当我搜索 SanF 时获得 San Francisco 记录 SELECT FROM table WHERE col LIKE san Works SELECT FROM table WHERE col LIKE san F Works S
  • Zend Framework 2 将变量传递给模型

    我目前正在开发一个多语言网站 对于多语言部分 我使用翻译器 poedit 我将所选语言存储在会话中 效果很好 模块 php public function onBootstrap MvcEvent e session new Contain
  • PHP 与 .= 相反

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 有谁知道是
  • PHP邮件功能有时可以工作

    我正在编写一个脚本 需要通过PHP邮件功能发送电子邮件 如下所示 它在向 gmail 帐户发送电子邮件时有效 但在我的域中的帐户却无效 我们正在运行 Exchange 服务器 截至目前 电子邮件是从 www server 发送的 有谁知道
  • 学说“没有命名的协会”

    将我添加到无法找出其学说映射出了什么问题的人列表中 我正在模拟国际象棋Game与一对多Halfmoves 有任何想法吗 DDL create table game game id int primary key create table h
  • Laravel 集合 .each() + array_push

    需要有关 Laravel 上 each 方法内的 array push 的帮助 我无法在此代码上获取容器数组 imagesData array collect data images gt each function v k use ima

随机推荐

  • 从“const char*”到“char”的转换无效

    我正在尝试使用以下代码行将字符串中的某个字符替换为空格 str i 如何在不出现问题标题错误的情况下实现这一点 使用单引号 str i 在 C 中 令牌 是一个字符串文字 表示两个字符的数组 字符集中的空格值 例如 ascii 中的值 32
  • 如何动态地将源添加到现有图表?

    什么可以替代动态改变运行图 这是我的情况 我有将文章摄取到数据库中的图表 文章来自 3 个不同格式的插件 因此我有几个流程 val converterFlow1 Flow ImpArticle Article NotUsed val con
  • PHP SSLstream_socket_client不会使用创建的$context

    我完全失望了 我正在连接到 ssl 服务器 并且直接连接运行良好 但是当我尝试添加流上下文以使用代理或socks5时 套接字不会使用它并且直接连接到这些 ssl 服务器非常好 我我正在通过观察 127 0 0 1 代理服务器日志进行检查 甚
  • 在 Windows 上开发 Python 和 Django 应用程序时的 .gitignore

    我应该改变什么 gitignore当我在 Windows 上使用 PTVS 开发 Python Django 应用程序时 文件是什么 GitHub 有一个不错的收集 gitignore模板 当我启动 Django 项目时 我抓住了Pytho
  • Android 中的电话号码格式

    在我的应用程序中 我有一个 editText 它将接受用户的电话号码 我的目标是 一旦用户输入电话号码 它就应该被格式化 就像通过在文本更 改侦听器上应用一样 格式就像XXX XXX XXXX 我将代码写为 ePhone addTextCh
  • Python isDisjoint() 运行时

    Python 2 7 的算法运行时是多少isDisjoint other 集合的方法 它比简单地做更快吗intersection other 然后检查len gt 0那个返回的交集 这两种情况的复杂性都是O min len s len t
  • python 2.7 的非 ASCII 标识符

    我知道在 python 3 x 中我可以使用非 ASCII 标识符 PEP 3131 x1 2 x2 4 x x2 x1 print x python 2 7有这样的功能吗 也许 有人将它移植到 2 x 分支吗 不 Python 2 中没有
  • 调用 C# 代码时,PowerShell $null 不再为 null

    在 PowerShell 中 我们可以定义 C 代码并执行它 将 null 传递到以下最简单的函数中表明 not null 被传递到函数中 Add Type TypeDefinition public static class foo pu
  • 用于访问另一个域上的文件的 CORS 标头

    我正在尝试在 Codepen 上创建一个音频可视化程序 我使用 apache 创建了自己的 Ubuntu Web 服务器 它允许我直接访问以修改服务器的标头和配置 虽然浏览器可以访问不同域上的文件 但它需要特殊的 CORS 标头来读取音频中
  • 无法连接到 android 5.1 上的本机本地套接字

    我有命令行工具 它发送广播并等待结果 服务器代码 错误处理省略 int makeAddr const char name struct sockaddr un pAddr socklen t pSockLen int nameLen str
  • 某些象形文字语言中的字计数器?

    是否有任何可用的库用于某些象形文字语言的字数统计 例如 中文 日文 韩文 我发现 MS Word 可以有效地计算这些语言的文本 我可以在 NET 应用程序中添加对 MS Word 库的引用来实现此功能吗 或者还有其他解决方案可以达到这个目的
  • 类型错误:第一个参数必须是可调用的,defaultdict

    错误来自publishDB defaultdict defaultdict 我想制作一个像这样的数据库 subject1 student id assignemt1 marks assignment2 marks finals marks
  • 耙子中止! ActiveRecord::Base:Class 的未定义方法“migration_error=”

    我正在 Ruby on Rails 上开发项目 到目前为止 我使用 Rails 4 一切都很好 然后我遇到了 gem 的无能问题 我决定回滚到 Rails 3 更改了 Gemfile 删除了 Gemfile lock 所有 Rails 安装
  • Play WS API:限制请求速率

    我正在使用异步 Play WS Scala API 来查询 RESTful 服务 我想知道如何处理List包含要通过以下方式调用的请求 URLWSClient 但每秒不得超过 1 个请求 该服务允许每个客户端每秒 仅 1 个请求 从逻辑的角
  • 尝试使用 Github Actions 复制存储库时出现身份验证错误

    我有一堆使用 Azure Pipelines 进行 CI CD 的存储库 我现在正在尝试将其移植到 Github Actions 这是我正在做的第一个工作 https github com Azure AzureAuth tree fix
  • 快速跨平台 C/C++ 图像处理库

    有哪些用于图像处理的跨平台和高性能图像库 调整大小和查找颜色 色调直方图 无需图形用户界面 这是针对 C C 的 到目前为止我已经研究过 OpenCV GIL 作为 Boost 的一部分 DevIL CImg 我的问题 我上面列出的性能如何
  • 将回形针图像复制到 Rails 4 中的新记录

    我的网站用于发布专辑评论 称为 Pin 图 引脚模型具有以下属性 艺术家 年份 标题 排名 描述和 图像 该图像使用 Paperclip 并存储在 Amazon S3 上 如果重要的话 我试图允许用户查看其他用户发布的评论 并单击链接以更简
  • java中的超链接

    有没有什么方法可以在Java中的JTextArea中创建可点击的超链接 如果您绝对想使用 jTextArea 可以执行此操作的一种方法是获取 User MouseClick x y 位置 然后从那里进行处理 然而 更简单的方法是使用 JEd
  • 如何在android中获取画布中屏幕尺寸的大小?

    我能够在正常活动中获取屏幕尺寸 但我需要在画布视图中获取屏幕尺寸并根据它进行操作 上面的任何片段都会有所帮助 谢谢 我得到了 widthPixels heightPixels 使用这个 DisplayMetrics metrics getB
  • 在 WooCommerce 中以编程方式对保存的信用卡收费

    我正在 WooCommerce 中以编程方式创建订单 并且需要向默认保存的信用卡收费 我正在使用 WooCommerce stripe 插件 并已弄清楚如何设置正确的付款方式 但无法弄清楚如何实际向卡收费 下面是我到目前为止的代码 orde