我想知道PayPal是否有支付服务允许用户在我的网站上输入他们的信用卡详细信息(用户甚至不知道他们是通过paypal支付).然后我需要确保它处理重复付款和退款.基本上我需要创建一个实现以下功能的paypal服务:
public interface IPaymentService {
Response ValidateCard(NetworkCredential credential, int transactionID, decimal amount, string ipAddress, CardDetails cardDetails, Address billingAddress, Options options);
Response RepeatCard(NetworkCredential credential, int oldTransactionID, int newTransactionID, decimal amount);
Response RefundCard(NetworkCredential credential, int refundedTransactionID, int newTransactionID, decimal amount);
}
public class Address {
public virtual string Address1 { get; set; }
public virtual string Address2 { get; set; }
public virtual string Address3 { get; set; }
public virtual string Town { get; set; }
public virtual string County { …Run Code Online (Sandbox Code Playgroud) 我定义了以下单元测试来测试我的模型绑定器:
[TestMethod]
public void DateTime_Works() {
// Arrange
var controllerContext = FakeContext.GetAuthenticatedControllerContext(new Mock<Controller>().Object, "TestAdmin");
var values = new NameValueCollection {
{ "Foo.Date", "12/02/1964" },
{ "Foo.Hour", "12" },
{ "Foo.Minute", "00" },
{ "Foo.Second", "00" }
};
var bindingContext = new ModelBindingContext() { ModelName = "Foo", ValueProvider = new NameValueCollectionValueProvider(values, null) };
var binder = new DateAndTimeModelBinder();
// Act
var result = (DateTime)binder.BindModel(controllerContext, bindingContext);
// Assert
Assert.AreEqual(DateTime.Parse("1964-12-02 12:00:00"), result);
}
Run Code Online (Sandbox Code Playgroud)
这是 FakeContext 类:
public static class FakeContext {
public static …Run Code Online (Sandbox Code Playgroud) 我正在使用第三方库,其中包含一堆基于IQueryable的扩展方法.要使用这些扩展方法,我不希望我的应用程序充斥着使用扩展方法所在的第三方命名空间的语句.
这样我就可以在不久的将来尽可能轻松地将它从库中切换出来.但是我不确定这样做的最佳方法是什么.我考虑的一个选项是在项目中创建我自己的一组扩展方法(然后我可以控制命名空间).这个问题是我无法看到如何维护现有扩展方法的名称.例如:
namespace MyProject.Extensions {
public static class IQueryableExtension {
public static IQueryable<T> Fetch<T, K>(this IQueryable<T> queryable, Expression<Func<T, K>> selector) {
return queryable.Fetch(selector);
}
}
}
Run Code Online (Sandbox Code Playgroud)
你可能会在这里看到问题.我试图在我的内部调用第三方扩展方法,它实际上称自己创建一个无限循环.
我很感激你的帮助.谢谢
我正在尝试使用PayPal的其余API(沙盒)执行信用卡付款.这是代码:
$payment = new Payment();
$payment->setIntent('sale');
...
try {
$payment->create($this->apiContext);
$saleId = $payment->getTransactions()[0]->getRelatedResources()[0]->getSale()->getId();
} catch (PayPalConnectionException $ex) {
...
}
Run Code Online (Sandbox Code Playgroud)
这会发送以下JSON:
{ "experience_profile_id": "XX-XXXX-XXXX-XXXX-XXXX", "意图": "买卖", "大户":{ "payer_info":{ "FIRST_NAME": "吉姆", "姓氏": "史密斯" , "电子邮件": "someone@somewhere.com", "手机": ""}, "PAYMENT_METHOD": "CREDIT_CARD", "funding_instruments":[{ "CREDIT_CARD":{ "FIRST_NAME": "吉姆","姓氏":" 史密斯", "号码": "XXXXXXXXXXXX4487", "类型": "签证", "expire_month": "06", "EXPIRE_YEAR": "2020", "CVV2": "123", "billing_address": {"line1":"123 Test Street","line2":"","city":"Test City","state":"","postal_code":"XXXX XXX","country_code":"GB" }}}]}, "交易":[{ "量":{ "货币": "英镑", "总": "13.50", "细节":{ "发货": "3.50", "税": "1.67","小计":"8.33"}},"item_list":{"items":[{"name":"T-Shirt Black Small","currency":"GBP","quantity":" 1","sku":"abc123","price":"8.33"}],"shipping_address":{"recipient_name":"Jim Smith","line1":"123 Test Street","line2":" ","city":"测试城市","州":"某些州","postal_code":"XXXX XXX","country_code":"GB"}},"说明":"付款明细","invoice_number …
我可以使用以下SQL来计算固定位置与数据库中场地的位置之间的距离.
SELECT Location.STDistance(geography::Point(51, -2, 4326)) * 0.00062137119 FROM Venues
Run Code Online (Sandbox Code Playgroud)
请注意,返回的距离以英里为单位,位置字段是地理类型.
我想知道在.NET中它的等价物会返回相同的值.此方法将具有以下签名:
public static double Distance(location1Latitude, location1Longitude, location2Latitude, location2Longitude) {
return ...;
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以在.NET中调用数据库方法,但我不希望这样做.我希望有一个计算距离的公式.谢谢
我已经设法让jQuery验证插件与RequireJs一起使用.我现在正在尝试设置jquery验证默认参数,以便它不验证包含在data-prefix属性的标记中的字段(这在Page1.js文件中完成).但是,当您单击"提交"按钮时,它会尝试验证这两个字段.
这是代码(与更复杂的演示相关联的原始问题):
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<meta charset="utf-8" />
<script src="http://ajax.cdnjs.com/ajax/libs/require.js/2.1.5/require.js"></script>
<script>
require.config({
paths: {
'jquery': 'http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.8.3',
'jquery.validate': 'http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate',
'jquery.validate.unobtrusive': 'http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive'
},
shim: {
'jquery.validate': ['jquery'],
'jquery.validate.unobtrusive': ['jquery', 'jquery.validate']
}
});
require(['jquery', 'jquery.validate', 'jquery.validate.unobtrusive'], function($) {
$.validator.setDefaults({
ignore: '[data-js-val-prefix] *'
});
});
</script>
</head>
<body>
<form>
<div class="validation-summary-valid" data-valmsg-summary="true"><span>Please correct the errors and try again.</span>
<ul><li style="display:none"></li></ul>
</div>
<fieldset>
<legend>Include</legend>
<input name="Include" type="text" required />
</fieldset>
<fieldset data-js-val-prefix="Exclude">
<legend>Exclude</legend>
<input name="Exclude" type="text" required />
</fieldset>
<p><button type="submit">Submit</button></p>
</form>
</body> …Run Code Online (Sandbox Code Playgroud) 我正在尝试执行以下LINQ查询.
var tasks = session.Query<Task>()
.Where(t => t.StartDate.DayOfYear == DateTime.UtcNow.DayOfYear)
.ToList();
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为不支持DayOfYear.但是,如果我说:
var tasks = session.Query<Task>()
.Where(t => t.StartDate.Day == DateTime.UtcNow.Day)
.ToList();
Run Code Online (Sandbox Code Playgroud)
它工作正常.所以我决定查看NHibernate源代码,看看他们是如何让它工作的.我在MsSql2000Dialect.cs(MsSql2008Dialect类继承)中找到以下行:
RegisterFunction("day",
new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(day, ?1)"));
Run Code Online (Sandbox Code Playgroud)
因此,我在构造函数中使用以下行创建了自己的自定义方言(继承自MsSql2008Dialect):
RegisterFunction("dayofyear",
new SQLFunctionTemplate(NHibernateUtil.Int32, "datepart(dy, ?1)"));
Run Code Online (Sandbox Code Playgroud)
然后在我的配置中注册了自定义方言,但我仍然收到以下错误:
NHibernate.QueryException:无法解析属性:DayOfYear
如果有人能告诉我我做错了什么,我会很感激.谢谢
我的应用程序具有以下结构:
lib
package1
...
package2
...
repositories.config
src
MyProject.Web
packages.config
...
MyProject.sln
NuGet.config
Run Code Online (Sandbox Code Playgroud)
我的NuGet.config文件包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="disableSourceControlIntegration" value="true" />
<add key="repositorypath" value="../lib" />
</config>
</configuration>
Run Code Online (Sandbox Code Playgroud)
根据我的理解,disableSourceControlIntegration配置选项应该告诉visual studio将包添加到TFS,存储库路径用于将默认位置更改为packages目录.
我有这个设置,工作正常.但是,当我右键单击解决方案文件并说添加到源代码控制时,我可以看到lib目录已准备好在源代码管理资源管理器中签入.我认为这个文件夹会被忽略,只是在本地存在,然后当你做项目的构建时,就会在本地下载nuget包.
如果有人能告诉我我做错了什么,我会很感激的.谢谢
我发现以下帖子描述了如何测试自定义模型绑定器:
然而,这测试了单个模型绑定器。理想情况下,我希望能够注册所有活页夹并测试是否绑定了适当的模型。这就是我在 ASP.NET MVC 中实现我所寻找的目标的方式:
// Register the model binders
ModelBinders.Binders[typeof(DateTime)] = new DateTimeModelBinder();
...
var values = new NameValueCollection {
{ "Foo", "1964/12/02 12:00:00" }
};
var controllerContext = CreateControllerContext(); // Utility method
var bindingContext = new ModelBindingContext() {
ModelName = "Foo",
ValueProvider = new NameValueCollectionValueProvider(values, null)
};
var binder = ModelBinders.Binders.GetBinder(typeof(DateTime));
var result = (DateTime)binder.BindModel(controllerContext, bindingContext);
Run Code Online (Sandbox Code Playgroud)
这不仅允许我测试模型绑定器的结果,而且还确保选择正确的模型绑定器。
如果有人可以提供帮助,我将不胜感激。谢谢
我最近为我的代码确定了一种新的格式样式,并希望替换现有的代码.唯一的问题是,如果不是我的解决方案中的1000个文件,那就是100个,而且我不想单独格式化每个文件.
我想知道如何创建一个宏来打开具有.cs文件扩展名的解决方案中的每个文件,只需选择所有文本,然后剪切并粘贴它(相应地格式化它).如果它可以排序和删除使用语句也是很好的,但这并不重要,因为我认为这会有点困难.
我很感激你的帮助.谢谢
c# ×5
paypal ×2
.net ×1
asp.net-mvc ×1
jquery ×1
linq ×1
macros ×1
mocking ×1
nhibernate ×1
nuget ×1
php ×1
requirejs ×1
sql-server ×1
sqlgeography ×1
tfs ×1
unit-testing ×1