【问题标题】:How to process PayPal payments in an ionic app for Woocommerce?如何在 Woocommerce 的 ionic 应用程序中处理 PayPal 付款?
【发布时间】:2017-08-22 04:04:42
【问题描述】:

我正在开发一个 ionic 2 应用程序,它基本上是一个以 Woocommerce 作为后端的购物车。使用 REST API 的过程非常顺利:我可以在应用中浏览产品并为客户创建订单。

但现在我被付款处理困住了。该应用程序将仅使用 PayPal,并且有一个 PayPal plugin 我想使用。我没有测试过,但它看起来很简单:你传递购买细节(价格、货币、描述......),然后渲染 PayPal UI。

我可以向 PayPal UI 提供所有这些信息,但它有一个明显的问题:如何将其与关联的 Woocommerce 订单集成?如果付款成功,Woocommerce 将如何注册?

Woocommerce 安装已启用 PayPal。您可以在网站上使用 PayPal 就好了。

现在,我很确定这与 PayPal 的 IPN 有关。大胆猜测,也许我应该以某种方式将订单 ID 传递给 PayPal 插件,那么 IPN 会将相同的订单 ID 传递给 Woocommerce?可能是这样,但我找不到有关此的适当文档。

如果您搜索“ionic 2 woocommerce paypal”,您会看到很多人出售几乎相同的源代码。我可以购买一个并研究它,但我更愿意找到有关此特定操作的文档。

【问题讨论】:

  • 不使用插件,为什么只放一个普通的HTML按钮来支付?
  • @JonathanBrizio 即使这样,我也不知道将什么信息传递给该按钮。
  • 你能提供一个在 Git Repo 上实现的轻量级版本吗?那么我们可以玩它不?
  • @Sampath 它只是一个按钮,它调用与文档页面完全相同的代码:(ionicframework.com/docs/native/paypal) - 它工作得非常好 - 你可以假设 Woo 的订单已经创建(假设它是number 50) - 我只是不知道如何告诉 PayPal 告诉 Woo 这笔付款与订单 50 相关联。
  • 好的。我会玩的,结果会告诉你的。

标签: wordpress ionic-framework paypal woocommerce ionic2


【解决方案1】:

在查看 woo commerce 源代码后,它似乎将自己的订单 ID 添加到 PayPal 的 invoiceNumber 部分。

因此,如果您的网站上有 woo commerce PayPal 插件(它应该启用 IPN),您可以通过将 woo commerce 订单 ID 传递给 invoiceNumber 来在 ionic 2 中使用 PayPal Cordova 插件。像下面的例子:

编辑:虽然 woo commerce 确实添加了发票编号,但我现在相信传递的最重要的参数是 custom 参数。

pay() {
    let payment = new PayPalPayment(this.data.price, this.data.currency, this.data.description, 'sale');
    payment.custom = JSON.stringify({ order_id: this.data.WOOCOMMERCE_ORDERID, order_key: this.data.WOOCOMMERCE_ORDERKEY });
    this.payPal.renderSinglePaymentUI(payment).then((response) => {
        console.log(response);
        // Successfully paid

        // Example sandbox response
        //
        // {
        //   "client": {
        //     "environment": "sandbox",
        //     "product_name": "PayPal ANDROID SDK",
        //     "paypal_sdk_version": "2.16.0",
        //     "platform": "iOS"
        //   },
        //   "response_type": "payment",
        //   "response": {
        //     "id": "PAY-1AB23456CD789012EF34GHIJ",
        //     "state": "approved",
        //     "create_time": "2016-10-03T13:33:33Z",
        //     "intent": "sale"
        //   }
        // }
    }, () => {
        // Error or render dialog closed without being successful
    });
}

【讨论】:

    【解决方案2】:

    一种可能的解决方案是在将用户发送到 Paypal 之前将订单信息添加到用户会话中。

    用户通过 Paypal 付款后,将他们重定向到“成功”网址(在 PayPal 请求中指定)。当用户访问此成功 url 时,您可以使用会话信息更新 WooCommerce 中的订单。

    【讨论】:

      【解决方案3】:

      你快到了。如果您不想购买插件,您可以手动购买。例如,将notify_url 参数设置为您的站点,即pp_respond(或任何您想要的)。

      在您的functions.php 中输入以下代码:

      if(isset($_GET['pp_respond'])){
          file_put_contents(__DIR__."/my_notificationssss.txt", $_SERVER['REQUEST_URI']. "\r\n". print_r($_POST,true) . "\r\n ------------- \r\n" , FILE_APPEND);
      }
      

      然后进行测试购买,在functions.php 文件中会出现一个名为my-notificationssss.txt 的新文件,并查看该文件,找出您希望将来使用的参数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-24
        • 2019-07-15
        • 2012-06-01
        • 2015-09-04
        • 2014-01-23
        • 2012-03-06
        相关资源
        最近更新 更多