为什么PayPal交易后paymentID为空?
Why paymentID is null after PayPal transaction?
我在沙盒模式下使用 PayPal,在我的 React 应用程序中使用 @paypal/react-paypal-js,并且我使用 .NET 5 作为我的 REST API。
这是我要创建订单时的有效负载:
{
"totalAmount": 102,
"tax": 0,
"fee": 2,
"paymentMethod": 1,
"items": [
{
"amount": 100,
"reciver": "vala",
"phone": "0912351231",
"email": "vala@gmail.com",
"sender": "ali",
"count": 1
}
]
}
这是我调用 PayPal 的反应代码的一部分 API:
<BoxPayment isRtl={isRtl}>
<Text as="h3">{translations.buyPage.paymentMethodTitle}</Text>
<Text as="p">{translations.buyPage.paymentMethodSubTitle}</Text>
<div style={{ 'paddingTop': '.5rem' }}>
<PayPalScriptProvider options={initialOptions}>
<PayPalButtons createOrder={(data, actions) => createOrder(data, actions)}
onApprove={(data, actions: any) => {
console.log('data', data);
console.log('actions', actions);
return actions.order.capture().then((details: any) => {
console.log('details', details);
const name = details.payer.name.given_name;
});
}} />
</PayPalScriptProvider>
</div>
</BoxPayment>
但在成功付款后,这是我在 console.log 数据对象时收到的内容:
{
"orderID": "48G91901G2470590C",
"payerID": "NBPJH63GK5H5Q",
"paymentID": null,
"billingToken": null,
"facilitatorAccessToken": "A11VAJ-tUcUqKkJgAhnyfVGVYg6Z57SvqHfspQqB8vtUDjDzBMIBlvO6rDvwdIjW7aJwvQQYeMAGyWitChtVZ8LyBzCw"
}
我错过了什么?
在 onApprove
内,打印该数据时未捕获订单。先抓订单。捕获订单时,其交易 ID 将在响应的 purchase_units[0].payments.captures[0]
中
如果您需要对该 ID 做任何重要的事情,例如将其存储在数据库中,请使用 server-side 集成(not actions.order.capture 也不是 actions.order.create, client-side 代码不是用于数据库操作)。请参阅 Integrate Checkout, and be sure to use the client-side error handling code in its linked demo pattern example.
指南的 'Add and modify the code' 部分中的可选步骤 #5
我在沙盒模式下使用 PayPal,在我的 React 应用程序中使用 @paypal/react-paypal-js,并且我使用 .NET 5 作为我的 REST API。 这是我要创建订单时的有效负载:
{
"totalAmount": 102,
"tax": 0,
"fee": 2,
"paymentMethod": 1,
"items": [
{
"amount": 100,
"reciver": "vala",
"phone": "0912351231",
"email": "vala@gmail.com",
"sender": "ali",
"count": 1
}
]
}
这是我调用 PayPal 的反应代码的一部分 API:
<BoxPayment isRtl={isRtl}>
<Text as="h3">{translations.buyPage.paymentMethodTitle}</Text>
<Text as="p">{translations.buyPage.paymentMethodSubTitle}</Text>
<div style={{ 'paddingTop': '.5rem' }}>
<PayPalScriptProvider options={initialOptions}>
<PayPalButtons createOrder={(data, actions) => createOrder(data, actions)}
onApprove={(data, actions: any) => {
console.log('data', data);
console.log('actions', actions);
return actions.order.capture().then((details: any) => {
console.log('details', details);
const name = details.payer.name.given_name;
});
}} />
</PayPalScriptProvider>
</div>
</BoxPayment>
但在成功付款后,这是我在 console.log 数据对象时收到的内容:
{
"orderID": "48G91901G2470590C",
"payerID": "NBPJH63GK5H5Q",
"paymentID": null,
"billingToken": null,
"facilitatorAccessToken": "A11VAJ-tUcUqKkJgAhnyfVGVYg6Z57SvqHfspQqB8vtUDjDzBMIBlvO6rDvwdIjW7aJwvQQYeMAGyWitChtVZ8LyBzCw"
}
我错过了什么?
在 onApprove
内,打印该数据时未捕获订单。先抓订单。捕获订单时,其交易 ID 将在响应的 purchase_units[0].payments.captures[0]
如果您需要对该 ID 做任何重要的事情,例如将其存储在数据库中,请使用 server-side 集成(not actions.order.capture 也不是 actions.order.create, client-side 代码不是用于数据库操作)。请参阅 Integrate Checkout, and be sure to use the client-side error handling code in its linked demo pattern example.
指南的 'Add and modify the code' 部分中的可选步骤 #5