为啥我无法使用 PayPal Native-Checkout Android 获取 paymentId
Posted
技术标签:
【中文标题】为啥我无法使用 PayPal Native-Checkout Android 获取 paymentId【英文标题】:Why i can't get paymentId with PayPal Native-Checkout Android为什么我无法使用 PayPal Native-Checkout Android 获取 paymentId 【发布时间】:2022-01-10 16:57:33 【问题描述】:您好,我有使用 paypal sdk 的移动应用程序,
我已经创建了使用 paypal 配置我的应用程序,所有过程都很顺利,但是当付款完成后,我只得到 PayerId 和 OrderId,
对于 PaymentId 我得到了 null ,
付款 ID 对我来说非常重要,因为我将其发送到我的服务器以检查付款是否为客户端处理服务器。
这是我的应用配置
config = new CheckoutConfig(
getApplication(),
"APP_PAYPAL_CLIENT_ID",
Environment.SANDBOX,
String.format("%s://paypalpay", "APPLICATION_ID"),
CurrencyCode.USD,
UserAction.PAY_NOW,
new SettingsConfig(
true,
false
)
);
PayPalCheckout.setConfig(config);
payPalButton = findViewById(R.id.payPalButton);
payPalButton.setup(
new CreateOrder()
@Override
public void create(@NotNull CreateOrderActions createOrderActions)
ArrayList purchaseUnits = new ArrayList<>();
purchaseUnits.add(
new PurchaseUnit.Builder()
.amount(
new Amount.Builder()
.currencyCode(CurrencyCode.USD)
.value("10.00")
.build()
)
.build()
);
Order order = new Order(
OrderIntent.CAPTURE,
new AppContext.Builder()
.userAction(UserAction.PAY_NOW)
.build(),
purchaseUnits
);
createOrderActions.create(order, (CreateOrderActions.OnOrderCreated) null);
,
new OnApprove()
@Override
public void onApprove(@NotNull Approval approval)
approval.getOrderActions().capture(new OnCaptureComplete()
@Override
public void onCaptureComplete(@NotNull CaptureOrderResult result)
Log.i("CaptureOrder", String.format("CaptureOrderResult: %s", result));
Log.i("CaptureOrder", String.format("CaptureOrderResult: %s", approval.getData().getOrderId()));
Log.i("CaptureOrder", String.format("CaptureOrderResult: %s", approval.getData().getPaymentId()));
Log.i("CaptureOrder", String.format("CaptureOrderResult: %s", approval.getData().getPayerId()));
);
);
【问题讨论】:
【参考方案1】:终于找到了解决办法:
-
在新的 PayPal
Native-Checkout
android SDK 中,他们不提供paymentId
;你只能得到PayerId
和OrderId
我使用OrderId
;然后我将OrderId
发送到我的服务器。我使用 PayPal php SDK V2 来获取订单详细信息响应,其中包含 PaymentId
和所有其他付款信息。
【讨论】:
你的意思是PuyerId
?或者你的意思是例如PayerId
或 BuyerId
?
PayerId,付款的PayPal账户的唯一ID。比主要电子邮件更有用,因为电子邮件可以在帐户之间更改和移动
我的意思是我无法获得 PayementId【参考方案2】:
它不会在approval
对象中,它会在捕获result
中,因为它是在捕获之后创建的。您已经在记录result
,因此您应该在那里或通过其中一种方法查看数据。
查找捕获 ID,它与订单 ID 具有相同的 17 个字母数字格式,但值不同。捕获 ID 对应于 PayPal.com 详细信息、报告和发送给接收者的电子邮件通知中用于记帐目的的 PayPal 交易 ID。
(订单id仅在审批时使用,没有理由永久存储,仅用于调试目的)
【讨论】:
感谢您的回复,但结果对象只有 OrderResponse(订单 id 和状态)。如果我能获得交易 ID 将是很好的一步。以上是关于为啥我无法使用 PayPal Native-Checkout Android 获取 paymentId的主要内容,如果未能解决你的问题,请参考以下文章
为啥我无法使用 PayPal Native-Checkout Android 获取 paymentId
为啥Paypal在使用django-paypal时会重试IPN