首页 > 解决方案 > 从旧的 PayPal 按钮过渡到 PayPal Javascript SDK 按钮

问题描述

我已经使用了这样的普通贝宝按钮,没有任何问题:

    <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_xclick">
    <input type="hidden" name="business" value="xxx@xxx.net">
    <input type="hidden" name="item_name" value="Website Donation">
    <input type="hidden" name="item_number" value="Donation">
    <input type="hidden" name="amount" value="">
    <input type="submit" value="Send Donation via PayPal"  ><br></form>

并转向这种风格以获得 Venmo 和信用卡选项:

<div id="smart-button-container">
      <div style="text-align: center;">
        <div id="paypal-button-container"></div>
      </div>
    </div>
  <script src="https://www.paypal.com/sdk/js?client-id=secret&enable-funding=venmo&currency=USD" data-sdk-integration-source="button-factory"></script>
  <script>
    function initPayPalButton() {
      paypal.Buttons({
        style: {
          shape: 'pill',
          color: 'gold',
          layout: 'vertical',
          label: 'paypal',
        },
        createOrder: function(data, actions) {
          return actions.order.create({
            purchase_units: [{"description":"Site Donation","amount":{"currency_code":"USD","value":1.99}}]
          });
        },

        onApprove: function(data, actions) {
          return actions.order.capture().then(function(orderData) {
            
            // Full available details
            console.log('Capture result', orderData, JSON.stringify(orderData, null, 2));

            // Show a success message within this page, e.g.
            const element = document.getElementById('paypal-button-container');
            element.innerHTML = '';
            element.innerHTML = '<h3>Thank you for your payment!</h3>';

            // Or go to another URL:  actions.redirect('thank_you.html');
            
          });
        },

        onError: function(err) {
          console.log(err);
        }
      }).render('#paypal-button-container');
    }
    initPayPalButton();
  </script>

我有一个 IPN 页面来接收来自原始按钮的订单信息,并从中检查 item_name 和 item_number 字段。

我的问题是,createOrder 部分的描述(网站捐赠)是否会转换为相同的字段,或者描述是否会成为一个新字段(它叫什么)?

createOrder: function(data, actions) {
          return actions.order.create({
            purchase_units: [{"description":"Site Donation","amount":{"currency_code":"USD","value":1.99}}]
          });
        },

标签: paypalpaypal-ipnpaypal-buttons

解决方案


在您的其中一个沙盒业务帐户中,设置沙盒IPN 侦听器 URL

为该特定沙盒业务帐户创建一个REST 应用程序,并复制其客户端 ID。使用该客户端 ID 创建沙盒测试付款,使用沙盒个人帐户批准付款。

记录您收到的沙盒 IPN 中的数据。它将具有该事务的可用字段。


推荐阅读