PayPal GitHub上有很多代码示例,展示了如何以各种语言(php,VB,...)实现IPN监听器.但是,ASP.NET MVC没有.有人成功实施了吗?或者,与其他代码示例类似,是否有实现它的首选/官方方式?
我们使用Express Checkout API以编程方式使用paypal定期付款.
根据文档,该配置文件似乎最多需要24小时才能激活.我正在试图弄清楚如何设置结算开始日期,使其在个人资料激活的那天收费,而不是强迫它等待长达24小时.
基于API文档,似乎我需要在创建概要文件时传递开始日期,这迫使我(今天+ 1天)强制执行24小时延迟.但是如果配置文件立即激活并且我收到IPN消息,我仍然必须强迫客户等待那个24小时的时间......这似乎不太好.
虽然我可以做一个预付款的预付款,我试图避免这样做b/ci认为这会让我缩短更新期限(例如,如果这是6个月的订阅,我会提前1个月收取费用5一个月反复出现.),这会让消费者感到困惑.
我希望有人可以帮我这个.
文件.
所以我在我的网站上实现了paypal IPN,我正处于工作过程的中间.现在我想在pp表单中使用多个自定义变量,目前我只使用这个
<input type="hidden" name="custom" value="<?php echo $user_id; ?>">
Run Code Online (Sandbox Code Playgroud)
所以我知道允许名为'custom'的变量.我想知道我是否可以传递更多变量,以便根据他们的标准过滤付款.因此,如果运费超过0.00美元,我设置了一个变量"shipping_cost",如下所示:
<input type="hidden" name="shipping_cost" value="<?php echo $cost; ?>">
Run Code Online (Sandbox Code Playgroud)
或用于其他目的.这是允许的吗?或者paypal已经定义了我们可以使用的允许变量列表?我真的想解决这个问题,因为我们不能总是处理一种付款方式......谢谢大家.
当我使用Checkout express API调用时,我是否需要IPN监听器来确认付款?
有些地方认为,一旦我收到DoExpressCheckoutPayment的回复付款已经完成,我可以采取行动 - 更新数据库等.
有些帖子在这里http://www.zen-cart.com/showthread.php?72304- Paypal-IPN-and-Express-Checkout表明IPN已经过时或过时.
我有一个Asp.Net WEB API 2项目,我想实现一个即时支付通知(IPN)监听器控制器.
我找不到任何示例和nuget包.我只需要承认用户使用Paypal上的标准html按钮付款.这很简单.
所有nuget包都是创建发票或自定义按钮.这不是我需要的
paypal上的示例适用于经典的asp.net,而不适用于MVC或WEB API MVC
我确定有人已经这样做了,当我开始编码时,我感觉我正在重新发明轮子.
有没有IPN监听器控制器示例?
至少一个PaypalIPNBindingModel绑定Paypal查询.
[Route("IPN")]
[HttpPost]
public IHttpActionResult IPN(PaypalIPNBindingModel model)
{
if (!ModelState.IsValid)
{
return BadRequest();
}
return Ok();
}
Run Code Online (Sandbox Code Playgroud)
编辑
到目前为止,我有以下代码
[Route("IPN")]
[HttpPost]
public void IPN(PaypalIPNBindingModel model)
{
if (!ModelState.IsValid)
{
// if you want to use the PayPal sandbox change this from false to true
string response = GetPayPalResponse(model, true);
if (response == "VERIFIED")
{
}
}
}
string GetPayPalResponse(PaypalIPNBindingModel model, bool useSandbox)
{
string responseState = "INVALID";
// Parse …
Run Code Online (Sandbox Code Playgroud) 我正在将paypal结账放到我的网站上,但是我和听众一起倒下了.对于那些不熟悉Paypal IPN系统的人来说,Paypal基本上会向您的脚本发送一条有关交易的消息,您可以通过添加几个位来发回该消息.如果Paypal收到正确的答复,它将回复'已验证',如果没有,它会说'无效'.
第一位我成功了.我的代码能够从paypal接收信息,添加额外内容并将其发回.但是,Sandbox没有回复说"已验证"或"无效".我几乎从paypal网站上复制了我的代码,所以我希望这会相当简单,所以如果你花一点时间查看我的代码,也许一些新的眼睛可以找出我出错的地方.
这是代码.没什么特别的,它实际上只是获取信息,调整它,传回它并读取响应(它要么没有得到或者没有意识到它的到来)
<?php
$debug=true;
//Put together postback info
$postback = 'cmd=_notify-validate';
foreach($_POST as $key =>$value){
$postback .= "&$key=$value";
}
// build the header string to post back to PayPal system to validate
$header = "POST /cgi-bin/webscr HTTP/1.1\r\n";
$header .= "Host: www.sandbox.paypal.com\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($postback) . "\r\n\r\n";
$fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);//open the connection
if(!$fp){ //no conn
die();
}
//post data back
fputs($fp, $header . $postback);
while(!feof($fp)){
$res=fgets ($fp, …
Run Code Online (Sandbox Code Playgroud) 我的PayPal IPN脚本运行得很好.当我使用我的沙箱帐户进行测试时,付款会立即进行,但是当我使用客户的企业电子邮件时,我会在IPN日志调用中将其payment_status
作为"待定",并将其pending_reason
作为"单边".
我的客户的电子邮件已在PayPal上确认.所以有人能告诉我为什么我会遇到这个问题吗?
当尝试在Pyramid中使用PayPal IPN POST有效负载时(可能还有其他人),我得到了解码错误:
[...]
File "./project/views.py", line 716, in paypal_ipn
message = request.POST
File "build/bdist.linux-x86_64/egg/webob/request.py", line 745, in POST
File "build/bdist.linux-x86_64/egg/webob/multidict.py", line 74, in from_fieldstorage
File "build/bdist.linux-x86_64/egg/webob/multidict.py", line 67, in <lambda>
File "/sites/ts/lib64/python2.6/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xf3 in position 5: invalid continuation byte
Run Code Online (Sandbox Code Playgroud)
如何解决?
正如下面答案中的一条评论中提到的,我尝试了本教程.所以现在我有以下内容:
ipn.php文件:
<?php
$ipn_post_data = $_POST;
$url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
// Set up request to PayPal
$request = curl_init();
curl_setopt_array($request, array
(
CURLOPT_URL => $url,
CURLOPT_POST => TRUE,
CURLOPT_POSTFIELDS => http_build_query(array('cmd' => '_notify-validate') + $ipn_post_data),
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_HEADER => FALSE,
CURLOPT_SSL_VERIFYPEER => TRUE,
CURLOPT_CAINFO => 'cacert.pem',
));
// Execute request and get response and status code
$response = curl_exec($request);
$status = curl_getinfo($request, CURLINFO_HTTP_CODE);
// Close connection
curl_close($request);
if($status == 200 && $response == 'VERIFIED')
{
$subject = "valid"; …
Run Code Online (Sandbox Code Playgroud) IPN模拟器似乎无法发送测试订阅续订.现在,我的付款每年续订.
与注册IPN支付相比,这些交易是什么样的?
他们是否与pay(subscr_payment
)共享相同的txn_type ,还是算作辞职(向我发送两个不同的IPN,一个用于subscr_signup
付款,另一个用于付款)?
我一年前的自定义数据是否仍通过IPN发送?
我如何测试可再生支付?IPN测试仪似乎没有这样的类别.
paypal ×10
paypal-ipn ×10
c# ×2
php ×2
.net ×1
asp.net-mvc ×1
payment ×1
python ×1
recurring ×1
subscription ×1
utf-8 ×1