- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在尝试通过 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/
我正在发送邮件 mail from: from_email, to: members_email_id, subject: mail_subject, :reply_to => to_email 邮件
我希望以收件人无法看到彼此电子邮件 ID 的方式发送电子邮件。我正在使用 mailgun-api。这是我的函数调用当前的样子: mg.sendText(from, [to], subjec
我正在为 salesforce 的文档签名开发机会布局上的按钮逻辑。这是非常基本的,我只需要 要选择我的模板 我的商业联系人将被设置为模板上的第一个收件人 我的机会所有者的经理将被设置为模板上的第二个
我在生产 API 中遇到了这个问题,当用户收到要签名的文档并打开链接时,它会重定向到 ID 检查。请参阅随附的屏幕截图。 在我的 C# 中,我没有启用任何身份验证方法。 Signer signer =
我无法正确格式化此 SQL 查询。我想要做的是从事件表中选择数据,并将来自两个用户 ID 的数据存储在该事件表中。我当前的声明如下所示: SELECT activity.id, activity.se
我正在使用 PHP 运行时,当我使用下面的代码发送管理员电子邮件(使用管理员电子邮件配额)时,它可以正常工作并且我收到了电子邮件。但是,它将消息发送给所有具有管理员权限的用户(如 GAE 管理控制台中
我想使用 Ruby Net::SMTP 发送电子邮件。例行公事 send_message( msgstr, from_addr, *to_addrs ) 在我的发送电子邮件的代码中运行良好,但从这个
我通过 api 向信封添加了 2 个收件人,我分别为他们提供了“111”和“222”的收件人 ID。我预先填充了与它们关联的标签。收到签名时,信封已按预期填充,但当我检查完成的信封以检索标签数据时,收
为了将所有邮件导出到 eml,我一直在使用 Lotus Domino 的 Java API。到目前为止一切顺利,但是有没有一种方法可以让我自动“解析”电子邮件地址。 “发件人”或“收件人”字段有时只提
我的 View /发件人的一切都在工作,我的 envelopeId/收件人也在工作 - 所以我知道我认为我需要的每一条数据。 我的信封里有 2 个 inPersonSigners。第一个永远是“客户”
我正在使用 EWS 在收件箱上创建一个 StreamingSubscription。它正在监听 NewMail 事件。我可以提取发件人地址、主题、正文、收件人地址、抄送地址,但不能提取密件抄送地址。有
我正在尝试使用 intent从我的应用程序发送电子邮件,但不会填充电子邮件的收件人字段。如果我添加代码来填写主题或文本,它们就可以正常工作。只有收件人字段不会填充。 我也尝试将类型更改为“text/p
我想实现一个简单的通知系统。当 user1 喜欢 user2 的帖子时,user2 应该会收到来自 user1 的实时通知。 这是客户端功能的一部分(Redux 操作),其中有人喜欢某个帖子: .th
我想显示一个带有“收件人:”字段和“主题:”字段的小部件,就像邮件应用程序和 SMS 应用程序部分所做的那样(它没有主题字段)。例如,当输入人名的几个字母时,会显示一个表格,其中包含地址簿中的相关匹配
我正在从授权电子邮件中获取消息,但问题是主题、发件人和收件人值与 java 中 header 的分离,我成功了,下面的代码工作正常,但分离需要更多时间,我查了这么多 Gmail API 文档但我没有得
我能够从 gmail api 获取消息。在回复中,我收到的发件人和收件人邮件如下所示 . { "name": "From", "value": Mail Delivery Subsys
有人知道如何创建“收件人”字段(如“邮件”或 Facebook 应用程序中的“收件人”字段)吗? 从 A-Z 列表中添加地址时,表示该地址的蓝色组件将添加到文本字段中。有没有提供这个功能的类,还是需要
我有一个需要异步执行多个任务的方法。我已经设法使用以下 IntegrationFlow 来实现这一目标: @Bean public IntegrationFlow startJobTask() {
我的应用程序中有一个名为“联系我们”的按钮!有没有办法在 iPhone 中打开 Eamil 客户端,并填写我提供的“收件人”和“主题”? 最佳答案 您将需要使用 MFMailComposeViewCo
我正在尝试使用 Delphi 帮助、Indy 示例和 Google 开发 SMTP 中继服务器。 我刚刚开始,有一个虚拟 SMTP 客户端,它将测试消息发送到 SMTP 服务器,该服务器稍后将处理它并
我是一名优秀的程序员,十分优秀!