从PayPal SDK获取事务ID

从PayPal SDK获取事务ID,paypal,paypal-rest-sdk,Paypal,Paypal Rest Sdk,我正在尝试找出如何获取使用PayPal SDK进行支付的交易ID。以下是我的JS中的内容: paypal.Buttons({ createOrder: function(data, actions) { return actions.order.create({ purchase_units: [{ amount: { value: parseFloat( window.my_config.am

我正在尝试找出如何获取使用PayPal SDK进行支付的交易ID。以下是我的JS中的内容:

paypal.Buttons({

  createOrder: function(data, actions) {

    return actions.order.create({
        purchase_units: [{
            amount: {
                    value:    parseFloat( window.my_config.amount ),
                    currency: 'USD',
            },
            description: window.my_config.description
        }],
        commit: true
      });
  },


  onApprove: function(data, actions) {

    console.dir({ data: data, actions:actions });

    return actions.order.capture().then(function(details) {

        console.log({ details: details });

        // This function shows a transaction success message to your buyer.
        alert('Transaction completed by ' + details.payer.name.given_name);

      });

    $('#AJAXloadingWrapper').show();

  }


}).render('#paypalWrapper');
这就是我的调试结果:

Error: Order could not be captured

我在任何地方都看不到交易ID。它应该是7CA44490MT3621L(通过我的贝宝账户中的transid)

一个人怎样才能得到它呢?在我以前使用的旧系统中:

curl https://api.paypal.com/v1/payments/payment/L8EM97CXSYBJ2 -H "Content-Type: application/json" -H "Authorization: Bearer tokenstring"
但这不起作用。我已尝试将其更改为v2:

curl https://api.paypal.com/v2/payments/payment/L8EM97CXSYBJ2 -H "Content-Type: application/json" -H "Authorization: Bearer xxxx"
…但我得到的回应是什么都没有(没有错误,但没有输出)

我尝试了一些基于:

不输出任何内容(也没有错误)

更新:根据建议,我正在尝试使用输出结果中的
购买单位->付款->捕获->id
。问题是,这似乎与我的预期不符。当我登录我的PayPal时,我得到:

0NP90326GE709501L
然而,返回数据中的值显示为:

891170207E054363D
为什么这些不同?FWIW我在我的个人PayPal帐户(不是它被发送到的企业)中查看这个。当然,商户和客户的交易ID应该是相同的

更新2:所以在所有这些之后,我发现了一条线索,说贝宝故意给买家和卖家不同的交易ID。多美的皮塔。因此,另一种方法是传入一个自定义发票id,我们可以对其进行交叉引用。一切都很好-除了我似乎也不能那样做

我试过:

    return actions.order.create({
        purchase_units: [{
            amount: {
                    value:    parseFloat( window.my_config.amount ),
                    currency: 'USD',
            },
            description: window.my_config.description,
        }],
        invoice_id: invoice_id,
        commit: true
      });
  },
而且:

    return actions.order.create({
        purchase_units: [{
            amount: {
                    value:    parseFloat( window.my_config.amount ),
                    currency: 'USD',
            },
            description: window.my_config.description,
            invoice_id: invoice_id
        }],
        commit: true
      });
  },
但是,当他们完成付款的过程时,它会带来:

Error: Order could not be captured
…尝试运行返回操作.order.capture()时,然后(函数(详细信息){

更新3:

我还是不能让它工作。这是你传递自定义id的方式吗

    return actions.order.create({
        purchase_units: [{
            amount: {
                    value:    parseFloat( window.my_config.amount ),
                    currency: 'USD',
                    custom_id: invoice_id
            },
            description: window.my_config.description
        }],
        commit: true
      });

我已经在那里试过了,并且如下
commit:true
,但仍然不起作用:((“订单无法捕获”在确认付款后立即执行)

它在购买单位->付款->捕获->id中

请参阅下面的示例响应:


一旦知道了id,就没有理由需要对该id的相同数据执行单独的GET请求,但是如果您这样做,API调用将是:


谢谢。在我的测试中,我得到了9TE07281A3828142S,但当我在PayPal上看到它时,transid是:我在上面添加了更多的细节。trans ID似乎仍然与我期望的不匹配。商家和客户都应该有相同的交易ID,不是吗?哦,有趣的是,我刚刚发现:。因此,它变成了PayPal故意给买家和卖家不同的ID。真是一个PITA!为什么我们不能只获得买家ID?我想在给客户的购买电子邮件中包含这一点:/我看了一下,似乎唯一的解决方法是包含自定义发票ID。问题是,当我尝试传递发票ID/自定义ID时,我得到了“无法捕获订单”错误:(发票id必须是唯一的,以前从未在收货帐户上使用过。自定义id可以是任何内容