Java PayPal SDK向企业账户汇款

m1m5dgzv  于 2024-01-05  发布在  Java
关注(0)|答案(1)|浏览(167)

我希望我的客户能够使用PayPal在我的Java应用程序中购买某些服务。我使用了SDK。在我输入ClientID和SecretID后,我会得到一个批准链接。如果我打开这个,官方的PayPal窗口实际上会打开。但是,当我点击“支付”时,我会被重定向,什么也没有发生。没有钱从我的帐户中扣除,也没有任何东西被输入到企业帐户。有人有一个工作代码吗?提前感谢!
当我进入贝宝开发者 Jmeter 板时,我可以看到我所有的API调用都是绿色的。
这是我的代码:

Order order = null;
        // Construct a request object and set desired parameters
        // Here, OrdersCreateRequest() creates a POST request to /v2/checkout/orders
        OrderRequest orderRequest = new OrderRequest();
        orderRequest.checkoutPaymentIntent("CAPTURE");
        List<PurchaseUnitRequest> purchaseUnits = new ArrayList<>();
        purchaseUnits.add(new PurchaseUnitRequest().amountWithBreakdown(new AmountWithBreakdown().currencyCode("EUR").value("0.01")));
        orderRequest.purchaseUnits(purchaseUnits);
        OrdersCreateRequest request = new OrdersCreateRequest().requestBody(orderRequest);

        try {
            // Call API with your client and get a response for your call
            HttpResponse<Order> response = Credentials.client.execute(request);  // Here are the keys

            // If call returns body in response, you can get the de-serialized version by
            // calling result() on the response
            order = response.result();
            System.out.println("Order ID: " + order.id());
            order.links().forEach(link -> System.out.println(link.rel() + " => " + link.method() + ":" + link.href()));
        } catch (IOException ioe) {
            if (ioe instanceof HttpException) {
                // Something went wrong server-side
                HttpException he = (HttpException) ioe;
                System.out.println(he.getMessage());
                he.headers().forEach(x -> System.out.println(x + " :" + he.headers().header(x)));
            } else {
                System.out.println(ioe);
            }
        }

字符串
我被重定向,但没有钱被转移。
编辑:我刚刚发现我应该使用payouts。我使用了payment SDK,但现在我得到了这个错误:
“{“name”:“错误信息”,“message”:“发生授权错误。",“debug_id”:“578 ce 67 e544 c5”,“information_link”:“https://developer.paypal.com/docs/api/payments.payouts-batch/#errors“,“links”:[]}”
我还选中了我的应用程序中的复选框“支付”。复选框被选中。

xkftehaa

xkftehaa1#

编辑:我刚刚发现我应该使用支付。
你是从哪里发现这个的?支付是用于 * 支付 *,即从您的帐户发送资金。这与您描述的用例相反,即从付款人那里接收资金。
当使用v2/checkout/orders API时,(已弃用)SDK在您的问题实现中,您必须指定return_url。付款人单击“Pay”批准订单后,他们将被重定向回该URL。在该URL上,您必须显示确认页面,并且确认操作应执行最后的API调用以捕获订单。基于此捕获响应,您必须向用户显示结果(成功或失败),即感谢他们成功付款或通知他们任何错误并要求他们重试。
此重定向是一种旧的集成模式。如果使用此旧模式,并且不打算显示订单复查步骤,(即,您的集成计划立即进行(必需的)API捕获,而不进行审查),那么在这种情况下,你必须指定payment_source.paypal.user_action = 'PAY_NOW',这样PayPal的最终操作就会显示“Pay Now”,而不是默认的“Continue to review order”。(后一种是重定向集成的默认设置,前一种是不使用重定向的默认设置,必须是JS SDK集成)
由于您正在使用的Java SDK已被弃用,因此应该进行直接集成(JSON格式的HTTPS,使用您的客户端ID和密码首先获得oauth2访问令牌)。此外,从您的网站重定向到PayPal然后返回到您的网站的模式是旧的集成模式,由旧网站使用。今天没有理由使用它。
相反,请遵循当前的standard PayPal integration guide,它使用JS SDK进行付款人批准,没有任何重定向远离您的网站(保持在后台加载)。该链接提供了node.js中的示例后端代码,这只是一个示例-这些相同的创建和捕获路由以及API操作应该在您选择的后端环境中实现,在这种情况下是Java。

相关问题