【发布时间】:2020-11-12 21:18:04
【问题描述】:
这就是我加载按钮的方式
<PayPalButton
amount={this.props.details.totalAmount}
shippingPreference="NO_SHIPPING"
onApprove={(data) => {
this.props.handlePaymentComplete(data.orderID);
}}
options={{
clientId: clientId,
}}
/>
handlePaymentComplete - 向后端发送请求,然后将信息保存到数据库并验证订单。
此代码似乎在沙箱中工作,它显示付款完成消息,我可以发送带有 orderId 的请求到 paypal 的 api 并获取有关交易的所有信息,付款处于批准状态,但钱赢了'不会被转移。
我尝试更改为 live paypal,通过我的 cc 支付到我的 paypal 卖家账户,我的 cc 公司向我发送了一条关于交易的短信,所以它似乎正在做某事,对 paypal 的 API 的请求说一切都是好的:
{
"id": "theorderid",
"intent": "CAPTURE",
"purchase_units": [
{
"reference_id": "default",
"amount": {
"currency_code": "USD",
"value": "0.45"
},
"payee": {
"email_address": "theselleremail",
"merchant_id": "thesellersid"
}
}
],
"payer": {
"name": {
"given_name": "name",
"surname": "surname"
},
"email_address": "payeraddress",
"payer_id": "payerid",
"address": {
"country_code": "IL"
}
},
"create_time": "2020-07-23T06:35:35Z",
"links": [
{
"href": "https://api.paypal.com/v2/checkout/orders/id",
"rel": "self",
"method": "GET"
},
{
"href": "https://api.paypal.com/v2/checkout/orders/id",
"rel": "update",
"method": "PATCH"
},
{
"href": "https://api.paypal.com/v2/checkout/orders/id/capture",
"rel": "capture",
"method": "POST"
}
],
"status": "APPROVED"
但付款实际上不会被转移。
我已经检查了互联网的答案,但除了已弃用的贝宝版本之外找不到任何东西,您必须调用某种 Express Checkout 命令才能完成交易,所以我想解决方案类似于那个想法,但我没找到。
我已经尝试过但没有影响任何事情的方法是使用action.order.capture:
<PayPalButton
amount={this.props.details.totalAmount}
shippingPreference="NO_SHIPPING"
onApprove={(data, actions) => {
actions.order.capture();
this.props.handlePaymentComplete(data.orderID);
}}
options={{
clientId: clientId,
}}
/>
【问题讨论】:
标签: javascript node.js paypal