gpt4 book ai didi

java - 没有这样的收件人错误 Stripe

转载 作者:搜寻专家 更新时间:2023-11-01 03:00:12 24 4
gpt4 key购买 nike

我在尝试通过 Stripe 向测试银行账户进行测试付款转账时遇到此错误

我的前端代码:

<html>
<head>
<script type="text/javascript" ></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
<script type="text/javascript">
Stripe.setPublishableKey('//key//');
</script>
</head>
<body>
<form action="Payout" method="POST" id="payment-form">
<span class="payment-errors"></span>

<div class="form-row">
<label>
<span>Card Number</span>
<input type="text" size="20" data-stripe="number">
</label>
</div>

<div class="form-row">
<label>
<span>Expiration (MM/YY)</span>
<input type="text" size="2" data-stripe="exp_month">
</label>
<span> / </span>
<input type="text" size="2" data-stripe="exp_year">
</div>

<div class="form-row">
<label>
<span>CVC</span>
<input type="text" size="4" data-stripe="cvc">
</label>
</div>

<input type="submit" class="submit" value="Submit Payment">
</form>

<script>
$(function() {
var $form = $('#payment-form');
$form.submit(function(event) {
// Disable the submit button to prevent repeated clicks:
$form.find('.submit').prop('disabled', true);

// Request a token from Stripe:
Stripe.card.createToken($form, stripeResponseHandler);

// Prevent the form from being submitted:
return false;
});
});

function stripeResponseHandler(status, response) {
// Grab the form:
var $form = $('#payment-form');

if (response.error) { // Problem!

// Show the errors on the form:
$form.find('.payment-errors').text(response.error.message);
$form.find('.submit').prop('disabled', false); // Re-enable submission

} else { // Token was created!

// Get the token ID:
var token = response.id;

// Insert the token ID into the form so it gets submitted to the server:
$form.append($('<input type="hidden" name="stripeToken">').val(token));

// Submit the form:
$form.get(0).submit();
}
};
</script>
</body>

</html>

我的 servlet 是:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
//processRequest(request, response);

Stripe.apiKey = "//test key//";

// Get the card details submitted by the form
String tokenID = request.getParameter("stripeToken");

// Create a Recipient
Map<String, Object> recipientParams = new HashMap<String, Object>();
recipientParams.put("name", "Lord");
recipientParams.put("type", "individual");
recipientParams.put("card", tokenID);
recipientParams.put("email", "test6@gmail.com");

Recipient recipient = Recipient.create(recipientParams);

Map<String, Object> transferParams = new HashMap<String, Object>();
transferParams.put("amount", 1000); // amount in cents
transferParams.put("currency", "usd");
transferParams.put("recipient", recipient);
transferParams.put("bank_account", "000123456789");
transferParams.put("statement_descriptor", "JULY SALES");

Transfer transfer = Transfer.create(transferParams);

System.out.print("hi");
RequestDispatcher view = request.getRequestDispatcher("index2.html");
view.forward(request, response);

} catch (AuthenticationException ex) {
Logger.getLogger(Payout.class.getName()).log(Level.SEVERE, null, ex);
} catch (InvalidRequestException ex) {
Logger.getLogger(Payout.class.getName()).log(Level.SEVERE, null, ex);
} catch (APIConnectionException ex) {
Logger.getLogger(Payout.class.getName()).log(Level.SEVERE, null, ex);
} catch (CardException ex) {
Logger.getLogger(Payout.class.getName()).log(Level.SEVERE, null, ex);
} catch (APIException ex) {
Logger.getLogger(Payout.class.getName()).log(Level.SEVERE, null, ex);
}
}

我收到未找到收件人的错误消息,我不明白为什么。谁能帮忙?我对此感到非常震惊。

Stack Trace:
SEVERE: com.stripe.exception.InvalidRequestException: No such recipient: <com.stripe.model.Recipient@1975641541 id=rp_186thkGbhnSWFx0lIDZm2cmQ> JSON: {
"id": "rp_186thkGbhnSWFx0lIDZm2cmQ",
"active_account": null,
"cards": {
"data": [
{
"address_city": null,
"address_country": null,
"address_line1": null,
"address_line1_check": null,
"address_line2": null,
"address_state": null,
"address_zip": null,
"address_zip_check": null,
"brand": "Visa",
"country": "US",
"currency": null,
"cvc_check": "pass",
"default_for_currency": null,
"dynamic_last4": null,
"exp_month": 12,
"exp_year": 2017,
"fingerprint": "qhUUS5Kf5JM2a8L8",
"funding": "debit",
"last4": "5556",
"name": null,
"recipient": "rp_186thkGbhnSWFx0lIDZm2cmQ",
"status": null,
"tokenization_method": null,
"type": null,
"id": "card_186thjGbhnSWFx0lu8w3m1Sq",
"object": "card",
"account": null,
"customer": null,
"metadata": {}
}
],
"has_more": false,
"total_count": 1,
"url": "/v1/recipients/rp_186thkGbhnSWFx0lIDZm2cmQ/cards",
"count": null,
"request_options": null,
"request_params": null
},
"created": 1462244168,
"default_card": "card_186thjGbhnSWFx0lu8w3m1Sq",
"deleted": null,
"description": null,
"email": "test@gmail.com",
"livemode": false,
"metadata": {},
"migrated_to": null,
"name": "Lord Blue",
"type": "individual",
"verified": false
}; request-id: req_8Nf12m7y81JQlC
at com.stripe.net.LiveStripeResponseGetter.handleAPIError(LiveStripeResponseGetter.java:591)
at com.stripe.net.LiveStripeResponseGetter._request(LiveStripeResponseGetter.java:443)
at com.stripe.net.LiveStripeResponseGetter.request(LiveStripeResponseGetter.java:65)
at com.stripe.net.APIResource.request(APIResource.java:133)
at com.stripe.model.Transfer.create(Transfer.java:359)
at com.stripe.model.Transfer.create(Transfer.java:318)
at pay.Payout.doPost(Payout.java:114)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
at java.lang.Thread.run(Thread.java:724)

最佳答案

看起来您尝试进行传输的方式已被弃用。

这记录在这里:https://stripe.com/docs/sending-transfers

我能够使用以下步骤成功进行测试传输:

第一步

确保你的Dashboard中有足够的资金

当我没有足够的时候我得到这个错误:

com.stripe.exception.InvalidRequestException: Insufficient funds in Stripe account. In test mode, you can add funds to your available balance (bypassing your pending balance) by creating a charge with 4000 0000 0000 0077 as the card number. You can use the the /v1/balance endpoint to view your Stripe balance (for more details, see stripe.com/docs/api#balance).; request-id: req_***************

我运行了以下代码,将 1000 美元存入我的账户:

import java.util.HashMap;
import java.util.Map;

import com.stripe.exception.StripeException;
import com.stripe.model.Charge;
import com.stripe.net.RequestOptions;

import com.stripe.net.RequestOptions.RequestOptionsBuilder;;

public class ChargeTest
{
public static void main(String[] args)
{
String key = "sk_test_**************************";

RequestOptions requestOptions = (new RequestOptionsBuilder()).setApiKey(key).build();
Map<String, Object> chargeMap = new HashMap<String, Object>();
chargeMap.put("amount", 100000);
chargeMap.put("currency", "usd");
Map<String, Object> cardMap = new HashMap<String, Object>();
cardMap.put("number", "4000000000000077");
cardMap.put("exp_month", 12);
cardMap.put("exp_year", 2020);
chargeMap.put("card", cardMap);
try
{
Charge charge = Charge.create(chargeMap, requestOptions);
System.out.println(charge);
}
catch (StripeException e)
{
e.printStackTrace();
}
}
}

第二步

为了创建新帐户,您需要注册您的平台,您可以在 https://dashboard.stripe.com/account/applications/settings 上注册。

否则你会得到一个“invalid_request_error”

第三步

按照创建传输的新方法。我通过查看 github 上的 StripeTest.java 找到了这一点。

这是我的测试:

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import com.stripe.Stripe;
import com.stripe.exception.StripeException;
import com.stripe.model.Account;
import com.stripe.model.Transfer;

public class StripeExample
{
public static void main(String[] args)
{
String key = "sk_test_*********";
try
{
// Set your secret key: remember to change this to your live secret
// key in production
// See your keys here https://dashboard.stripe.com/account/apikeys
Stripe.apiKey = key;

Map<String, Object> defaultAccountParams = new HashMap<String, Object>();

Map<String, Object> externalAccount = new HashMap<String, Object>();

externalAccount.put("country", "US");
externalAccount.put("routing_number", "110000000");
externalAccount.put("account_number", "000123456789");
externalAccount.put("account_holder_name", "Test Holder");
externalAccount.put("account_holder_type", "individual");
externalAccount.put("object", "bank_account");

defaultAccountParams.put("external_account", externalAccount);
defaultAccountParams.put("email", getUniqueEmail());

Account destination = Account.create(defaultAccountParams);

Map<String, Object> transferParams = new HashMap<String, Object>();

transferParams.put("amount", 1000);
transferParams.put("currency", "usd");
transferParams.put("destination", destination.getId());

Transfer transfer = Transfer.create(transferParams);
}
catch (StripeException e)
{
e.printStackTrace();
}
}

static String getUniqueEmail()
{
return String.format("test+bindings-%s@stripe.com", UUID.randomUUID().toString().substring(24));
}
}

关于java - 没有这样的收件人错误 Stripe ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36994786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com