我希望我的用户能够订阅定期付款(使用快速结账api)第一笔付款需要立即向用户订阅,我需要知道他们已经成功收费才能授予他们访问权限.
有没有直接的方法来做到这一点?
我已经尝试过,使用INITAMT设置创建定期付款配置文件,但是,不清楚用户是否需要付费(使用沙箱时),并且没有返回txn_id(或等效信息)来表明结算已经完成了.我确实获得了IPN确认,但是在创建配置文件后"一段时间",这使得很难提供出色的用户体验.
我尝试添加一次性付款,使用DoExpressCheckoutPayment进行身份验证,然后设置定期付款,如果一次性付款有效,但身份验证也失败了,此时我已放弃(尽管可能仍有一些这种方法的腿).
无论如何,我想我会问这里的专家.是否有一种简单的方法来设置定期付款,每月一次付款,现在首次付款()并通过API确认第一笔付款,而无需等待一段未知的时间来收到IPN确认消息?
我遇到了问题,我正在寻找有关解决问题的最佳方法的想法.
我接管了开发一个用Perl编写后端的网站,前端广泛使用了javascript.
客户端定期从后端接收几百个跟踪对象的更新.通过javascript将对象映射到谷歌地图上.对象散列(由javascript解析)包含有关对象的大量信息,例如位置,描述和各种状态变量.
一些数据是字符串形式和一些数字.
问题是,在将数据推送到客户端javascript的过程中,所有值都成为字符串.因此,在javascript中,如果我测试一下,看看值是否为正,即使值为0,测试也会成功,因为该值实际上是"0"而不是0.
在服务器端,数据使用JSON :: XS编码,如下所示;
sub process_json {
my $self = shift;
return if( $self->{processed} );
$self->{processed} = 1;
if( $self->{requestrec}->status =~ /^3/ )
{
return $self->{requestrec}->status;
}
$self->{data}->{session} = {
id => $self->session->id,
user => $self->session->{data}->{__user},
};
use utf8;
my $output;
eval { $output = JSON::XS->new->utf8->encode( $self->{data} ); };
if($@)
{
use Carp;
confess($@);
}
$self->discard_request_body();
$self->req->content_type('application/json; charset=utf-8');
$self->req->headers_out->set( 'Expires' => 'Thu, 1 Jan 1970 00:00:00 GMT' );
my $out_bytes = encode( 'UTF-8', $output );
$self->req->headers_out->set( …Run Code Online (Sandbox Code Playgroud) 我刚开始使用 DynamoDb,我是 maven 的初学者。我在尝试运行我无法修复的项目时遇到错误。
当我尝试在 IntelliJ 中运行该项目时,我得到:
Exception in thread "main" java.lang.NoClassDefFoundError: com/amazonaws/transform/JsonErrorUnmarshallerV2
at com.amazonaws.services.kms.AWSKMSClient.init(AWSKMSClient.java:305)
Run Code Online (Sandbox Code Playgroud)
在顶级 pom 中,我有以下依赖项:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.10.39</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我尝试了很多东西,例如分别包括 KMS 的 maven 依赖项,引用最新版本的 sdk 和 kms,以及相同版本的 sdk 和 kms。我试过包括 bom 然后像这样的 sdk:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-bom</artifactId>
<version>1.10.40</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.10.40</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我总是得到同样的错误。mvn clean 和 mvn install 正常工作,但运行应用程序失败。
我可以看到调试器中没有 JsonErrorUnmarshallerV2 的定义,但是 aws-sdk-core 应该提供这个并且应该包括在内。
如何修复或进一步调试此问题?
我正在使用模板工具包来形成一个简单的JSON响应(请参阅下面的代码).我需要在响应的所有元素之后加上逗号,除了最后一个.
我相信我需要使用TTs迭代器,但是我没有把它弄好.
使用此代码,仍然会在最后一个元素的末尾打印逗号.
问题在于包含的部分
[% UNLESS outer.last && loop.last %],[% END %]
Run Code Online (Sandbox Code Playgroud)
除非外循环和内循环在最后一次迭代中,否则应该添加逗号.
任何有关我出错的帮助都非常感谢.
{ "success": true, "filesdata": [
[%~ USE outer = iterator(objects); FOREACH object IN outer;
FOREACH rep IN object.reps;
IF rep.rep == reptype %]
{ "id":"[% object.id | xml %]", "url":"[% rep.src | xml %]", "story":"[% object.story | xml %]" }[% UNLESS outer.last && loop.last %],[% END %]
[%~ END;
END;
END ~%]
] }
Run Code Online (Sandbox Code Playgroud) 我对 mongo 非常陌生,我想从 mongo shell 将一些查询定向到辅助节点。
我读过的文档说要设置读取首选项。
具体来说
在 mongo shell 中, readPref() 游标方法提供对读取首选项的访问。
我已经阅读了有关 readPref 游标方法的文档(如果您感兴趣的话,请访问:http://docs.mongodb.org/manual/reference/method/cursor.readPref/#cursor.readPref),但是我无法这行得通。
mongos> cursor.readPref(secondary);
2015-10-15T10:03:47.480+0000 E QUERY ReferenceError: cursor is not defined
at (shell):1:1
readPref(secondary);
2015-10-15T10:04:16.224+0000 E QUERY ReferenceError: secondary is not defined
at (shell):1:10
mongos> readPref('secondary');
2015-10-15T10:04:37.848+0000 E QUERY ReferenceError: readPref is not defined
at (shell):1:1
Run Code Online (Sandbox Code Playgroud)
我已经尝试了我能想到的所有组合,但总是遇到引用错误。
我错过/不明白什么?
我有一个复杂的情况,我正在尝试处理涉及字符编码.
我有一个perl程序,它通过thrift与java端点通信,然后java使用数据向遗留的php服务发出请求.这很难看,但迁移计划的一部分需要工作一段时间.
在perl中,创建了一个thrift对象,其中thrift对象的一些字段是json编码的字符串.
问题是,当perl向java发出请求时,其中一个字符串如下(这是来自data:dumper,随后是json编码并添加到thrift):
'offer_message' => "<<>>
&&
\x{c3}\x{82}\x{c2}\x{a9}©
<script>alert(\"XSS\");</script>
https://url.com/imghp?hl=uk",
Run Code Online (Sandbox Code Playgroud)
但是,当在java端接收到这些数据时,序列已被转换,所以在java中我们收到以下内容:\n \n \n \n {x}}
<<>>\\n&&\\nÃ?Â?Ã?©©\\n<script>alert(\"XSS\");</script>\\nhttps://www.google.com.ua/imghp?hl=uk
Run Code Online (Sandbox Code Playgroud)
问题是,如果我将第二个字符串传递给旧的php程序,它会失败,如果我传递从perl哈希的转储中获取的字符串,它就会成功.所以我的假设是我需要将接收到的字符串转换为另一种编码(如果我错了,请纠正我,我不确定这是否是正确的解决方案).
我已经尝试了在java中接收的参数并将它们转换为我能想到的每个编码,但它不起作用.例如:
byte[] utf8 = templateParams.getBytes("UTF8");
normallisedTemplateParams = new String(utf8, "UTF8");
Run Code Online (Sandbox Code Playgroud)
我一直在改变编码方案,希望我找到有用的东西.
解决这个问题的正确方法是什么?在很短的时间内,这个混乱的解决方案是我唯一的选择,而其他重新设计正在进行中.
我将Debian开发系统上的所有perl模块(作为测试)更新为最新版本.我想看看升级实时服务器上的模块是否安全.它似乎工作,除了我开始从Imager得到一个奇怪的错误(与API版本号有关,但现在这不是很重要).
我尝试重新安装Imager和任何相关的库,但似乎什么都没有解决问题.
进一步看,我发现有问题的开发系统似乎有多个perl目录,包括:
/usr/lib/perl (which contains 5.14.2 and subdirs)
/usr/lib/perl5 (which contains a range of perl modules)
/usr/local/lib/perl (which contains another 5.14.2 and a set of modules)
and even /root/perl5 (which contains a small list of modules including i486-linux-gnu-thread-multi-64int)
Run Code Online (Sandbox Code Playgroud)
它出现了(尽管我并不完全确定我正在读这个),系统上的模块已经使用各种方法安装,apt-get,aptitude,cpan,从源安装,cpanminus和不同的模块是最终在不同的perl目录(我猜安装),主要是/ usr/local/lib/perl或/ usr/lib/perl5.我不知道至少有2种不同的perl安装在那里.
我认为/usr/lib/perl是我想保留的,所以,我尝试将/ usr/local/lib/perl重命名为perl.save,然后链接/ usr/local/lib/perl/usr/lib/perl .然后我重新安装了任何丢失的包.
大多数软件包似乎安装了一些,但是我得到了这个不祥的消息;
有/usr/local/lib/perl/5.14.2
想要/usr/lib/perl/5.14
你的perl和你的Config.pm似乎对它们运行的架构有不同的看法.
Perl认为:[5.14.2]
配置说:[i486-linux-gnu-thread-multi-64int]
这可能会也可能不会引起问题.如果您在构建此扩展程序时遇到问题,请检查您的perl安装.
之后,该特定模块的安装失败.可能有充分的理由.
我想解决这个问题的原因是我们的开发系统都是虚拟的,所有其他开发系统都是这个(坏的)系统的克隆 - 所以这是一个我需要解决的问题,而无需从头开始重建整个系统(虽然他是一个选择).
我确实尝试克隆系统然后清除perl,但这给我留下了一个无法完成任何事情的极其破碎的系统.
有什么想法来解决这个问题吗?谢谢
我是 DynamoDb 的新手,我正在努力弄清楚如何做到这一点(使用 java sdk)。
我目前有一个用于通知的表(在 mongo 中)。架构基本上如下(我已经简化了)
id: string
notifiedUsers: [123, 345, 456, 567]
message: "this is a message"
created: 12345678000 (epoch millis)
Run Code Online (Sandbox Code Playgroud)
我想迁移到 Dynamodb,但我无法找出选择在特定日期之后发送给特定用户的所有通知的最佳方法?
我发现我不能在像notifiedUsers这样的列表上有索引,因此在这种情况下我不能使用查询 - 这是正确的吗?
我不想扫描然后过滤,可能会有很多记录。
有没有办法使用查询或其他方法来做到这一点?
编辑这就是我现在正在尝试的,它不起作用,我不知道该把它带到哪里(如果有的话)。
Condition rangeKeyCondition = new Condition()
.withComparisonOperator(ComparisonOperator.CONTAINS.toString())
.withAttributeValueList(new AttributeValue().withS(userId));
if(startTimestamp != null) {
rangeKeyCondition = rangeKeyCondition.withComparisonOperator(ComparisonOperator.GT.toString())
.withAttributeValueList(new AttributeValue().withS(startTimestamp));
}
NotificationFeedDynamoRecord replyKey = new NotificationFeedDynamoRecord();
replyKey.setId(partitionKey);
DynamoDBQueryExpression<NotificationFeedDynamoRecord> queryExpression = new DynamoDBQueryExpression<NotificationFeedDynamoRecord>()
.withHashKeyValues(replyKey)
.withRangeKeyCondition(NOTIFICATIONS, rangeKeyCondition);
Run Code Online (Sandbox Code Playgroud) 我似乎无法正确理解。我想对表进行扫描,仅返回不存在特定字段的记录。
我尝试了以下两件事:
HashMap<String, Condition> scanFilter = new HashMap();
Condition scanFilterCondition = new Condition().withComparisonOperator(ComparisonOperator.NULL.toString());
scanFilter.put("field", scanFilterCondition);
ScanRequest scan = new ScanRequest()
.withTableName("table name")
.withScanFilter(scanFilter)
etc
Run Code Online (Sandbox Code Playgroud)
和
ScanRequest scan = new ScanRequest()
.withTableName("table")
.withFilterExpression("attribute_not_exists(attributeName)")
.withLimit(100)
etc
Run Code Online (Sandbox Code Playgroud)
但是,它们不返回任何记录(大多数记录都缺少此字段)。请注意,如果删除过滤器,扫描将返回并按预期处理所有记录,因此基本查询是正确的。我该怎么做呢?
编辑添加了完整的方法,以防万一// Get information on the table so that we can set the read capacity for the operation.
List<String> tables = client.listTables().getTableNames();
String tableName = tables.stream().filter(table -> table.equals(configuration.getTableName())).findFirst().get();
if(Strings.isNullOrEmpty(tableName))
return 0;
TableDescription table = client.describeTable(tableName).getTable();
//Set the rate limit to a third of the provisioned …Run Code Online (Sandbox Code Playgroud) 我有一段 dynamoDb 相关代码,我想使用mockito 进行测试。
我要测试的方法包含以下行:
List<NotificationFeedRecord> listResult = mapper.query(NotificationFeedRecord.class, queryExpression);
Run Code Online (Sandbox Code Playgroud)
当我手动测试时,它工作正常,我提交查询并从 dynamodb 获取预期结果。
我正在编写单元测试并想要模拟 mapper.query。
我有:
mapper = mock(DynamoDBMapper.class);
List<NotificationFeedRecord> testList = new ArrayList<>();
when(mapper.query(any(), any())).thenReturn(testList);
Run Code Online (Sandbox Code Playgroud)
这里我得到一个错误
Error:(133, 37) java: no suitable method found for thenReturn(java.util.List<notificationfeed.lib.db.NotificationFeedRecord>)
(argument mismatch; java.util.List<notificationfeed.lib.db.NotificationFeedRecord> cannot be converted to com.amazonaws.services.dynamodbv2.datamodeling.PaginatedQueryList<java.lang.Object>)
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一系列修复(例如,创建PaginatedQueryList 并返回它,更改查询匹配器),但都给出了错误。
.query方法声明如下:
public <T> PaginatedQueryList<T> query(Class<T> clazz, DynamoDBQueryExpression<T> queryExpression) {
return query(clazz, queryExpression, config);
}
Run Code Online (Sandbox Code Playgroud)
如何模拟mapper.query?有什么特别的吗?
我有一个查询来计算基于文档的点的某个半径范围内的对象:http://www.plumislandmedia.net/mysql/haversine-mysql-nearest-loc/
它工作得非常好但是我只想搜索那些特定类型的对象,这导致了一个问题;
代码如下所示:
my $sql = "SELECT *
FROM (
SELECT b.*, pr.postcode, pr.prize, pr.title, pr.collection, pr.redeemed, pr.delivery, pr.archived, bt.category,
p.radius,
p.distance_unit
* DEGREES(ACOS(COS(RADIANS(p.latpoint))
* COS(RADIANS(b.lat))
* COS(RADIANS(p.longpoint - b.lng))
+ SIN(RADIANS(p.latpoint))
* SIN(RADIANS(b.lat)))) AS distance
FROM bubbles AS b, bubble_prizes AS pr, bubble_types AS bt
JOIN ( /* these are the query parameters */
SELECT ? AS latpoint, ? AS longpoint,
? AS radius, ? AS distance_unit
) AS p
WHERE b.lat
BETWEEN p.latpoint - (p.radius …Run Code Online (Sandbox Code Playgroud) 我在执行吗啡查询时遇到问题。我有一个这样的架构:
{ authorId:12345,
comments:[
{ userId:34567,
name:"joe" },
{ userId:98765,
name:"sam" }
]
}
Run Code Online (Sandbox Code Playgroud)
我想使用吗啡查找所有记录,其中searchId 等于authorId 或userId。
我尝试了一系列的事情,但我没有得到它。例如
Query<Record> query = datastore.find(Record.class);
query.or(
query.criteria(authorId).equal(searchId),
query.criteria(comments).hasAnyOf(Collections.singletonList(searchId))
);
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用 hasThisElement,但这也不起作用。
我该怎么做呢?