贝宝订单请求永远不会回来
PayPal Order Request never gets back
亲爱的大家,
我从 payPal 开始,
并且我尝试实现随 SDK 提供的标准示例(c#,FW 4.6.1)
下面是我的服务器端方法
public async static Task<PayPalHttp.HttpResponse> CreateOrder()
{
OrdersCreateRequest oRequest = new OrdersCreateRequest();
oRequest.Prefer("return=representation");
//System.Net.ServicePointManager.Expect100Continue = true;
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
oRequest.RequestBody(BuildRequestBodyWithMinimumFields());
//3. Call PayPal to set up a transaction
PayPalHttp.HttpClient oClient = PayPalClient.client();
oClient.SetConnectTimeout(new TimeSpan(0, 0, 0, 10, 0));
var oResponse = await oClient.Execute(oRequest);
var result = oResponse.Result<Order>();
return oResponse;
}
在这里jquery打电话
paypal.Buttons({
style: {
shape: 'rect',
color: 'blue',
layout: 'vertical',
label: 'pay',
},
createOrder: function () {
return fetch('/shop/paypal_test.aspx/CreateOrder', {
method: 'post',
headers: {
'content-type': 'application/json'
}
}).then(function (res) {
return res.json();
}).then(function (data) {
return data.orderID; // Use the same key name for order ID on the client and server
});
}
}).render('#paypal-button-container');
问题是对 oClient.Execute 的响应永远不会返回。
PayPalClient 完全按照 SDK 示例构建。
查看 PayPal API 调用日志,API 被正确调用并标有绿色标志。
你有什么想法吗?
提前致谢
“一去不复返”是什么意思?你说有一个“绿旗”,这是否意味着有一个 HTTP 2xx 成功响应?响应正文中是否有id
?
如果您将响应正文转发到您的前端,则前端不应该寻找 data.orderID
键,因为除非您提供,否则不会有这样的键。这是一个更好的前端示例,它显示为 data.id
: https://developer.paypal.com/demo/checkout/#/pattern/server
请注意,该示例还在 onApprove 函数中包含一个获取。您需要实现这样一个路由来捕获您的订单,否则将不会创建交易。
亲爱的,
我终于找到了解决方案。
如前所述,在API调用后,在developer.paypal网站上,相关调用已被标记为绿色标志,这意味着调用已正确进行。
然后,我研究了服务器代码以及任务的管理方式。
异步调用嵌入在私有方法中,由“等待”响应的同步方法调用。
这样一切正常
此处是允许例程运行且不会停止到“client.Execute(oRequest)”的代码片段。
[WebMethod(EnableSession = true)]
public static PayPalCheckoutSdk.Orders.Order SetupTransaction()
{
data.tessutigenovataddei.com.Order oOrder = null;
//save order in database.
oOrder = CreateOrderWithPaypal();
OrdersCreateRequest oRequest = new OrdersCreateRequest();
oRequest.Prefer("return=representation");
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
oRequest.RequestBody(BuildRequestBodyWithMinimumFields(oOrder));
PayPalHttp.HttpClient oClient = PayPalClient.client();
oClient.SetConnectTimeout(new TimeSpan(0, 0, 0, 10, 0));
var oResponseTask = SetupTransactionAsync(oClient, oRequest);
oResponseTask.Wait();
return oResponseTask.Result.Result<PayPalCheckoutSdk.Orders.Order>();
}
private async static Task<PayPalHttp.HttpResponse> SetupTransactionAsync(PayPalHttp.HttpClient client, OrdersCreateRequest request)
{
SynchronizationContext.SetSynchronizationContext(null);
PayPalHttp.HttpResponse oResponse = await client.Execute(request);
return oResponse;
}
感谢支持
亲爱的大家, 我从 payPal 开始, 并且我尝试实现随 SDK 提供的标准示例(c#,FW 4.6.1)
下面是我的服务器端方法
public async static Task<PayPalHttp.HttpResponse> CreateOrder()
{
OrdersCreateRequest oRequest = new OrdersCreateRequest();
oRequest.Prefer("return=representation");
//System.Net.ServicePointManager.Expect100Continue = true;
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
oRequest.RequestBody(BuildRequestBodyWithMinimumFields());
//3. Call PayPal to set up a transaction
PayPalHttp.HttpClient oClient = PayPalClient.client();
oClient.SetConnectTimeout(new TimeSpan(0, 0, 0, 10, 0));
var oResponse = await oClient.Execute(oRequest);
var result = oResponse.Result<Order>();
return oResponse;
}
在这里jquery打电话
paypal.Buttons({
style: {
shape: 'rect',
color: 'blue',
layout: 'vertical',
label: 'pay',
},
createOrder: function () {
return fetch('/shop/paypal_test.aspx/CreateOrder', {
method: 'post',
headers: {
'content-type': 'application/json'
}
}).then(function (res) {
return res.json();
}).then(function (data) {
return data.orderID; // Use the same key name for order ID on the client and server
});
}
}).render('#paypal-button-container');
问题是对 oClient.Execute 的响应永远不会返回。
PayPalClient 完全按照 SDK 示例构建。
查看 PayPal API 调用日志,API 被正确调用并标有绿色标志。
你有什么想法吗?
提前致谢
“一去不复返”是什么意思?你说有一个“绿旗”,这是否意味着有一个 HTTP 2xx 成功响应?响应正文中是否有id
?
如果您将响应正文转发到您的前端,则前端不应该寻找 data.orderID
键,因为除非您提供,否则不会有这样的键。这是一个更好的前端示例,它显示为 data.id
: https://developer.paypal.com/demo/checkout/#/pattern/server
请注意,该示例还在 onApprove 函数中包含一个获取。您需要实现这样一个路由来捕获您的订单,否则将不会创建交易。
亲爱的, 我终于找到了解决方案。
如前所述,在API调用后,在developer.paypal网站上,相关调用已被标记为绿色标志,这意味着调用已正确进行。
然后,我研究了服务器代码以及任务的管理方式。
异步调用嵌入在私有方法中,由“等待”响应的同步方法调用。
这样一切正常
此处是允许例程运行且不会停止到“client.Execute(oRequest)”的代码片段。
[WebMethod(EnableSession = true)]
public static PayPalCheckoutSdk.Orders.Order SetupTransaction()
{
data.tessutigenovataddei.com.Order oOrder = null;
//save order in database.
oOrder = CreateOrderWithPaypal();
OrdersCreateRequest oRequest = new OrdersCreateRequest();
oRequest.Prefer("return=representation");
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
oRequest.RequestBody(BuildRequestBodyWithMinimumFields(oOrder));
PayPalHttp.HttpClient oClient = PayPalClient.client();
oClient.SetConnectTimeout(new TimeSpan(0, 0, 0, 10, 0));
var oResponseTask = SetupTransactionAsync(oClient, oRequest);
oResponseTask.Wait();
return oResponseTask.Result.Result<PayPalCheckoutSdk.Orders.Order>();
}
private async static Task<PayPalHttp.HttpResponse> SetupTransactionAsync(PayPalHttp.HttpClient client, OrdersCreateRequest request)
{
SynchronizationContext.SetSynchronizationContext(null);
PayPalHttp.HttpResponse oResponse = await client.Execute(request);
return oResponse;
}
感谢支持