Php 从cURL付款向paypal IPN添加自定义变量
我的问题:设置将在IPN上返回的paypal变量 因此,背景: 我正在与CodeIgniter合作,我正在使用一个预先制作的在线库来处理整个paypal的事情。图书馆承担着繁重的工作,而且效果很好。 [这是我正在使用的图书馆][1] 据我所知,该库使用XML格式向paypal发送一个包含所有所需信息的cURL请求,基本上如paypal本身所示[here][2] 这个库的文档记录很差,我不知道如何采取下一步 下一步是,向将显示在IPN上的cURL请求添加数据 确切地说;我会找到一种添加数据的方法,我更感兴趣的是这应该是如何结束的 这是cURL请求的一个经典事务部分(根据我收集的信息): 我想知道我需要的信息应该是什么样子的,例如,如果我想传递userID,它会是类似于Php 从cURL付款向paypal IPN添加自定义变量,php,codeigniter,curl,paypal,Php,Codeigniter,Curl,Paypal,我的问题:设置将在IPN上返回的paypal变量 因此,背景: 我正在与CodeIgniter合作,我正在使用一个预先制作的在线库来处理整个paypal的事情。图书馆承担着繁重的工作,而且效果很好。 [这是我正在使用的图书馆][1] 据我所知,该库使用XML格式向paypal发送一个包含所有所需信息的cURL请求,基本上如paypal本身所示[here][2] 这个库的文档记录很差,我不知道如何采取下一步 下一步是,向将显示在IPN上的cURL请求添加数据 确切地说;我会找到一种添加数据的方法,
"userID":"4",
它应该嵌套在其他参数中吗
如果需要任何其他代码,我会很乐意发布它,我确实广泛地搜索了这个主题,我找到的所有答案都与表单和隐藏字段有关,而不是我的情况(如前所述,paypal是通过使用cURL的PHP函数激发的)
提前谢谢
编辑:
你好!!感谢您的回复,也非常感谢您的精彩演讲:)
我将自适应支付控制器与支付方法结合使用
我刚刚意识到发票ID确实被退回了,这非常合适。
不过,我在您的回答中遗漏了一些内容,IPN没有返回许多字段,包括customerID(这是我尝试使用的,我只是假设没有返回任何内容)
以下是IPN捕获的我的返回论点:
cmd=_notify-validate
&transaction_subject=
&payment_date=12%3A02%3A40+Jan+29%2C+2014+PST
&txn_type=web_accept
&last_name=patrick
&residence_country=US
&item_name=
&payment_gross=50.00
&mc_currency=USD
&business=test@example.com //not the actual email
&payment_type=instant
&protection_eligibility=Ineligible
&verify_sign=ASsSVovq77sBsVg2xPiCnEG3N9AIAD1pW3tgoSX59hTmz9AA9lT6AH0E
&payer_status=verified
&test_ipn=1
&tax=0.00
&payer_email=patrick.buyer%40gmail.com
&txn_id=69J264685H5924531&quantity=0
&receiver_email=test@example.com //not the actual email
&first_name=patrick
&payer_id=5MLPF23854T8Q
&receiver_id=F5K3CSR99E9WA
&item_number=
&payment_status=Completed
&payment_fee=1.75
&mc_fee=1.75
&mc_gross=50.00
&custom=
&charset=windows-1252
¬ify_version=3.7
&ipn_track_id=50879f4bb9d2
似乎并非所有控制器的控件都由IPN返回。
发票将完全符合我的要求,我将按答复进行标记。
非常感谢你的时间和努力
编辑2:
$PayPalResult['RawResponse']由于某种原因不存在,我对$PayPalResult进行了var_转储(在adaptive_payment controller中,就在我重定向到paypal之前)
简而言之,我的IPN类正在被调用,但它找不到任何要处理的信息(我已经通过日志确认了这一点,调试显示该类已被调用,但不存在$\u POST数据)
编辑3:
XML请求生成得很好,我测试的特定属性是myownID,它出现在请求中
由于某些原因,虽然没有发送回$u POST信息。
IPN方法中的这一行:
$this->_日志('debug-IPN导出应用程序为'.var_导出($_POST))
在我的日志中显示如下内容:
调试-应用程序的IPN导出为
[XMLRequest] => ReturnAllen\u USPAYhttp://httpexample.no-ip.biz/ROOT/index.php/userControllers/regularuserActions/viewShoppingCartAPP-80W284485P519543TmyownIDIsrael109.67.55.127ILSBALANCECREDITCARDhttp://httpexample.no-ip.biz/root/index.php/main/IPN25XXXXXX@gmail.com5SERVICEfalsehttp://httpexample.no-ip.biz/ROOT/index.php/userControllers/regularuserActions/paypalSuccess
编辑:从应用程序IPN接收到我的IPN方法的最新IPN属性
cmd=_notify-validate&
transaction=
&payment_request_date=Sun+Feb+02+08%3A25%3A52+PST+2014
&return_url=http%3A%2F%2Fhttpexample.no-ip.biz%2FROOT%2Findex.php%2FuserControllers%2FregularuserActions%2FpaypalSuccess
&fees_payer=EACHRECEIVER
&ipn_notification_url=http%3A%2F%2Fhttpexample.no-ip.biz%2Froot%2Findex.php%2Fpaypal%2Fpaypal_ipn%2Frunagain
&sender_email=patrick.buyer%40gmail.com
&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AwGY-gIhQZM2WI9Ae63J.CxI7j4y
&test_ipn=1
&cancel_url=http%3A%2F%2Fhttpexample.no-ip.biz%2FROOT%2Findex.php%2FuserControllers%2FregularuserActions%2FviewShoppingCart
&pay_key=AP-6RR41041VH869594S
&action_type=PAY
&transaction_type=Adaptive+Payment+PAY
&status=COMPLETED
&log_default_shipping_address_in_transaction=false
&charset=windows-1252
¬ify_version=UNVERSIONED
&reverse_all_parallel_payments_on_error=false
我是该库的开发人员,我很乐意提供帮助。不过,您发布的JSON内容引用了PayPal新的RESTAPI,我的库并没有使用它。它使用了,这仍然比今天的RESTAPI更成熟,限制更少 您特别使用哪种API?该库附带已设置的控制器,并在请求中包含所有可能的参数。请求中包含的任何数据也将返回到IPN中 如果需要包含自定义字段,则需要在可用时使用自定义参数,或者另一个选项是在数据库中保存数据,然后在custom或INVNUM中传递记录ID。这样,ID将返回IPN,您可以从DB中提取所有详细信息 如果正在使用Pay API,则可以在$Receiver数据中包含InvoiceID参数,该参数已包含在Pay()的控制器方法中。Pay_with_options()结合了Pay和SetPaymentOptions API,它提供了更多参数,包括可以使用的CustomID,也将返回IPN
如果您提供更多关于您正在使用的API的详细信息,我可以为您提供更多帮助。对此进行了编辑。感谢您记住,自适应支付有一个特定于应用程序的IPN和一个特定于商户的IPN。您的应用程序将收到一个到您在API请求中指定的IPN URL的链接。我相信其中一个会包含客户ID。如果商户(卖家帐户)在自己的Paypal帐户中配置了IPN,那么他们也会收到带有交易特定数据的IPN。感谢您的回答,这是否意味着我应该获得两套不同的IPN?一个用于merchent帐户,另一个用于应用程序本身?我想这是有道理的。我猜我需要两个不同的URL来处理IPN?是的,API会有特定于应用程序的IPN的URL,然后你的PayPal配置文件会有卖家帐户IPN的位置。我似乎无法让应用程序IPN正常工作,但我不想用它来打扰你,如果您能提供有关此问题的任何文档,我将非常高兴,因为现在发票工作得非常完美(尽管通过发票传递userID属性有点奇怪:)。让我看看生成的XML请求的示例。它在结果中返回为$PayPalResult['RawResponse']
array(10) {
["Errors"]=>
array(0) {
}
["Ack"]=>
string(7) "Success"
["Build"]=>
string(7) "7935900"
["CorrelationID"]=>
string(13) "8c2afcee2d74b"
["Timestamp"]=>
string(29) "2014-01-31T02:37:38.806-08:00"
["PayKey"]=>
string(20) "AP-1WW538504G900525L"
["PaymentExecStatus"]=>
string(7) "CREATED"
["RedirectURL"]=>
string(81) "https://www.sandbox.paypal.com/webscr?cmd=_ap-payment&paykey=AP-1WW538504G900525L"
["XMLRequest"]=>
string(1439) "ReturnAllen_USPAYhttp://httpexample.no-ip.biz/ROOT/index.php/userControllers/regularuserActions/viewShoppingCartAPP-80W284485P519543T109.67.55.127USDBALANCECREDITCARDhttp://httpexample.no-ip.biz/root/index.php/main/IPNIPN100XXXXXXX@gmail.com5SERVICEfalsehttp://httpexample.no-ip.biz/ROOT/index.php/userControllers/regularuserActions/paypalSuccess"
["XMLResponse"]=>
string(373) "2014-01-31T02:37:38.806-08:00Success8c2afcee2d74b7935900AP-1WW538504G900525LCREATED"
}
cmd=_notify-validate&
transaction=
&payment_request_date=Sun+Feb+02+08%3A25%3A52+PST+2014
&return_url=http%3A%2F%2Fhttpexample.no-ip.biz%2FROOT%2Findex.php%2FuserControllers%2FregularuserActions%2FpaypalSuccess
&fees_payer=EACHRECEIVER
&ipn_notification_url=http%3A%2F%2Fhttpexample.no-ip.biz%2Froot%2Findex.php%2Fpaypal%2Fpaypal_ipn%2Frunagain
&sender_email=patrick.buyer%40gmail.com
&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AwGY-gIhQZM2WI9Ae63J.CxI7j4y
&test_ipn=1
&cancel_url=http%3A%2F%2Fhttpexample.no-ip.biz%2FROOT%2Findex.php%2FuserControllers%2FregularuserActions%2FviewShoppingCart
&pay_key=AP-6RR41041VH869594S
&action_type=PAY
&transaction_type=Adaptive+Payment+PAY
&status=COMPLETED
&log_default_shipping_address_in_transaction=false
&charset=windows-1252
¬ify_version=UNVERSIONED
&reverse_all_parallel_payments_on_error=false