Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Paypal中找不到资源_Javascript_Node.js_Reactjs_Paypal - Fatal编程技术网

Javascript 在Paypal中找不到资源

Javascript 在Paypal中找不到资源,javascript,node.js,reactjs,paypal,Javascript,Node.js,Reactjs,Paypal,我必须在我的项目中设置paypal进行付款。为了做到这一点,我创建了paypal按钮,并致电paypal获取交易详细信息。它似乎工作得很好,我也收到了带有事务详细信息的成功消息。这里出现的问题是,当我尝试验证服务器端ie中的事务详细信息时,我发现了这个错误。在我的nodjs项目中,我使用“@paypal/checkout-server-sdk” 我的代码是: 在ReactJs中: PaypalButton.js import React, { useState, useEffect } from

我必须在我的项目中设置paypal进行付款。为了做到这一点,我创建了paypal按钮,并致电paypal获取交易详细信息。它似乎工作得很好,我也收到了带有事务详细信息的成功消息。这里出现的问题是,当我尝试验证服务器端ie中的事务详细信息时,我发现了这个错误。在我的nodjs项目中,我使用“@paypal/checkout-server-sdk

我的代码是:

在ReactJs中: PaypalButton.js

import React, { useState, useEffect } from "react";
import ReactDOM from "react-dom";

const PaypalButton = props => {
const [sdkReady, setSdkReady] = useState(false);

const addPaypalSdk = () => {
const clientID ="**********CLIENT_ID**************";
const script = document.createElement("script");
script.type = "text/javascript";
script.src = `https://www.paypal.com/sdk/js?client-id=${clientID}`;
script.async = true;
script.onload = () => {
  setSdkReady(true);
};
script.onerror = () => {
  throw new Error("Paypal SDK could not be loaded.");
};

document.body.appendChild(script);
};

useEffect(() => {
if (window !== undefined && window.paypal === undefined) {
  addPaypalSdk();
} else if (
  window !== undefined &&
  window.paypal !== undefined &&
  props.onButtonReady
) {
  props.onButtonReady();
}
}, []);

//amount goes in the value field we will use props of the button for this
const createOrder = (data, actions) => {
console.log("createOrder", data);
return actions.order.create({
  purchase_units: [
    {
      amount: {
        currency_code: "USD",
        value: props.amount
      }
    }
  ]
});
};

const onApprove = (data, actions) => {
return actions.order
  .capture()
  .then(details => {
    if (props.onSuccess) {
      window.alert("Payment Sucessfull...");
      return props.onSuccess(data, details);
    }
  })
  .catch(err => {
    console.log(err);
  });
  };

 const clickPaypal = flag => {
    return props.onClick(flag);
 };

if (!sdkReady && window.paypal === undefined) {
  return <div>Loading...</div>;
}

const Button = window.paypal.Buttons.driver("react", {
React,
ReactDOM
});

return (
  <div style={{ width: 200 }}>
  <Button
    {...props}
    createOrder={
      props.amount && !createOrder
        ? (data, actions) => createOrder(data, actions)
        : (data, actions) => createOrder(data, actions)
    }
    onApprove={
      props.onSuccess
        ? (data, actions) => onApprove(data, actions)
        : (data, actions) => onApprove(data, actions)
    }
    style={{
      layout: "horizontal",
      color: "gold",
      shape: "pill",
      label: "pay",
      size: "responsive",
      tagline: true
    }}
    onClick={props.onClick ? clickPaypal : clickPaypal}
  />
</div>
);
};
export default PaypalButton;

Pay.js

onSuccess = (payment, details) => {
const {
  processInvoicePaypalPayment
} = this.props;

this.paypalSucesssDetails = { ...details };

processInvoicePaypalPayment( .     //call to server
  {
    invoice: invoice.data._id,
    orderId: this.paypalSucesssDetails.id // This order id is from sucess transaction details
  },
  this.paypalCapture
);
};

render=()=>{
   <PaypalButton
    amount={invoiceData.amount}
    onSuccess={this.onSuccess}
    env={"sandbox"}
    onClick={this.clickPaypal}
   />
}
结果是:

  { Error: {"name":"RESOURCE_NOT_FOUND","details": 
  [{"location":"path","issue":"INVALID_RESOURCE_ID","description":"Specified resource ID does not exist. Please check the resource ID and try again."}],"message":"The specified resource does not exist.","debug_id":"c3b5026d6dd74","links":[{"href":"https://developer.paypal.com/docs/api/orders/v2/#error-INVALID_RESOURCE_ID","rel":"information_link","method":"GET"}]}

我如何解决这个问题?任何帮助和建议都将不胜感激。

似乎正在发生的是,您有一个用于处理事务的客户端集成,然后您尝试使用服务器端API调用来检查订单状态,但该服务器端API调用与您使用的订单处理不兼容

您有两个选择:

  • 切换到针对付款ID而不是订单ID的服务器端API调用。此处记录了这一点:。无论如何,付款ID比订单ID更有用,因为付款/交易ID实际上在www.paypal.com中保存了多年,并用于会计目的。订单ID仅在付款审批期间使用

  • 切换到服务器端集成模式,如下所示:。然后,您将执行自己的API调用来设置和捕获付款,并且您现有的OrdersGetRequest(..)可以工作


  • 似乎正在发生的是,您有一个用于处理事务的客户端集成,然后您尝试使用服务器端API调用来检查订单状态,但该服务器端API调用与您使用的订单处理不兼容

    您有两个选择:

  • 切换到针对付款ID而不是订单ID的服务器端API调用。此处记录了这一点:。无论如何,付款ID比订单ID更有用,因为付款/交易ID实际上在www.paypal.com中保存了多年,并用于会计目的。订单ID仅在付款审批期间使用

  • 切换到服务器端集成模式,如下所示:。然后,您将执行自己的API调用来设置和捕获付款,并且您现有的OrdersGetRequest(..)可以工作


  • 您正在查找的orderID示例是什么?您可以打印并共享实际请求文本/json的示例吗?我的示例orderId是“6VG34423VV633792H”。成功的细节是创建时间:“2020-03-05T09:56:39Z”​ id:“6VG34423VV633792H”​ 意图:“捕获”​ 链接:数组[{…}]​ 付款人:对象{电子邮件地址:name@gmail.com,付款人id:“3LNXV55Q55GHE”,地址:{…},}​ 购买单位:数组[{…}]​ 状态:“已完成”​ 更新时间:“2020-03-05T09:57:09Z”
    6VG34423VV633792H
    似乎不是有效的沙盒订单ID。您从何处获取此值?return actions.order.capture()。然后(details=>{------------->从此详细信息如果(props.onSuccess){window.alert(“Payment successfull…”);return props.onSuccess(data,details);})您正在查找的示例orderID是什么?您可以打印并共享实际请求文本/json的示例吗?我的示例orderId是“6VG34423VV633792H”。成功的细节是创建时间:“2020-03-05T09:56:39Z”​ id:“6VG34423VV633792H”​ 意图:“捕获”​ 链接:数组[{…}]​ 付款人:对象{电子邮件地址:name@gmail.com,付款人id:“3LNXV55Q55GHE”,地址:{…},}​ 购买单位:数组[{…}]​ 状态:“已完成”​ 更新时间:“2020-03-05T09:57:09Z”
    6VG34423VV633792H
    似乎不是有效的沙盒订单ID。您从何处获取此值?return actions.order.capture()。然后(details=>{------------------>从此细节if(props.onSuccess){window.alert(“Payment successfull…”);return props.onSuccess(data,details);})感谢您的回复。正如你提到的,我尝试了第一个,但我没有付款Id。因为它是空的。不知道为什么。我开始实现第二个,即服务器端实现。为了实现这一点,在我的createOrder中,const createOrder=(数据、操作)=>{const clientID=“clientID”;返回fetch(
    https://www.paypal.com/sdk/js?client-id=${clientID}
    ,{method:“post”}).then(函数(res){return res.json();}).then(函数(数据){return data.orderID;});};然后我阻止了跨源请求:同一源策略不允许读取处的远程资源。(原因:CORS标头“Access Control Allow Origin”丢失)。我哪里出错了?成功的订单捕获的完整响应应包括某个地方的付款ID,该ID将不同于订单ID,且不为空。服务器端实现需要在服务器上实现API调用的实际端点,您可以获取()。您没有获取PayPal SDK js,这没有任何意义。感谢您的回复。正如您提到的,我尝试了第一个,但没有支付Id。因为它是空的。不知道为什么。我开始实施第二个ie,服务器端实现。为了在我的createOrder常量createOrder=(数据、操作)=>{const clientID=“clientID”;返回fetch(
    https://www.paypal.com/sdk/js?client-id=${clientID}
    ,{method:“post”})。然后(函数(res){return res.json();})。然后(函数(data){return data.orderID;});};然后我的跨源请求被阻止:同一源策略不允许在读取远程资源。(原因:CORS标头“Access Control Allow Origin”丢失)。我哪里出错了?suc的完整响应
      { Error: {"name":"RESOURCE_NOT_FOUND","details": 
      [{"location":"path","issue":"INVALID_RESOURCE_ID","description":"Specified resource ID does not exist. Please check the resource ID and try again."}],"message":"The specified resource does not exist.","debug_id":"c3b5026d6dd74","links":[{"href":"https://developer.paypal.com/docs/api/orders/v2/#error-INVALID_RESOURCE_ID","rel":"information_link","method":"GET"}]}