0

我在使用Chained Payments API时遇到了问题,它仍在开发中。使用贝宝自适应付款时遇到的问题API

说到沙盒:我读过,出于某种原因,PayKey(Paypal为交易创建的唯一标识符)不会被传回交易。当然,在我的测试中,我获得了大部分数据(例如买家的电子邮件地址,姓名,地址信息),但我没有收到paykey。

此字段不只是空白,它根本不存在。我对form范围做了最基本的循环,并将结果写入文件(显然,我不会在生产中做这种基本的事情,这只是为了理解我得到的数据)。

所以我想我会传递我自己的唯一标识符,将它存储在数据库中,然后通过自定义变量传递它。这((custom)字段)很奇怪,每次都会变回空白。

最后我想我只是把它作为的IpnNotificationUrlreceipt.cfm?myKey=SOMEVERYRANDOMLYGENERATEDKEYHERE但是当我通过IpnNotificationUrl,指定的网址是不是ping通,我是否没有在我的沙箱帐户单独IPN Notification URL设置的URL的一部分。该帐户中指定的URL每次都会正确ping通。

这两个文件是相同的,只是它们写入不同名称的文本文件。我没有收到任何文件中的错误。

<cfoutput><cfsavecontent variable="buildfile">--- Break --- 
    <cfloop list="#structkeylist(form)#" index="i"> 
    #i#: #form[i]# 
    </cfloop> 
</cfsavecontent></cfoutput> 

<cffile file="#expandpath(".")#\dump_new.txt" action="write" output="#buildfile#" /> 

我需要能够创建一个密钥,并通过贝宝或贝宝需要通过回传。

对于它的价值,这是来自PayPal的SDK我调用GitHub上

<cfinvoke component="svc.adaptivepayments" method="payRequest" returnvariable="response"> 
     <cfinvokeargument name="returnURL" value="#request.serverURL#/success.cfm"> 
     <cfinvokeargument name="cancelURL" value="#request.serverURL#/cancel.cfm"> 
     <cfinvokeargument name="ipnNotificationUrl" value="http://myurl/taction/pp_rect2.cfm"> 
     <cfinvokeargument name="senderEmail" value=""> 
     <cfinvokeargument name="custom" value="test data"> 
     <cfinvokeargument name="receiverAmount" value="#ArrayToList(pp_amounts)#"> 
     <cfinvokeargument name="receiverEmail" value="#ArrayToList(pp_emails)#"> 
     <cfinvokeargument name="receiverPrimary" value="true,false,false,false,false,false"> 
     <cfinvokeargument name="feesPayer" value="PRIMARYRECEIVER"> 
     <cfinvokeargument name="receiverPaymentType" value="DIGITALGOODS,DIGITALGOODS,DIGITALGOODS,DIGITALGOODS,DIGITALGOODS,DIGITALGOODS"> 
     <cfinvokeargument name="actionType" value="PAY"> 
     <cfinvokeargument name="currencyCode" value="USD"> 
    </cfinvoke> 

编辑:为了澄清,Paykey来源于此服务回来,这是我如何生成用户发送到贝宝的链接。 Paykey根本不会传递给我的IPN,尽管其他交易数据的确如此。我删除了某些信息。我仔细检查过,没有这个信息是paykey或可在paykey创建时间(所以有两端没有唯一标识符)

---休息---

payer_email: redacted 

    charset: windows-1252 

    item_name: 

    payment_gross: 10.00 

    payer_id: A62WKW8N3YDYU 

    transaction_subject: 

    item_number: 

    payment_status: Completed 

    payment_fee: 0.55 

    notify_version: 3.8 

    verify_sign: A.CSYz4u5IILQm5wM0J0JbJiIcEuAHODNEgw.2k7ZMYT31eXFO6G0R1o 

    mc_currency: USD 

    quantity: 0 

    residence_country: US 

    tax: 0.00 

    first_name: John 

    receiver_email: redacted 

    last_name: Blow 

    mc_fee: 0.55 

    ipn_track_id: dd4151b653ead 

    payer_status: verified 

    custom: 

    fieldnames: payer_email,charset,item_name,payment_gross,payer_id,transaction_subject, 
    item_number,payment_status,payment_fee,notify_version,verify_sign, 
    mc_currency,quantity,residence_country,tax,first_name,receiver_email, 
    last_name,mc_fee,ipn_track_id,payer_status,custom,mc_gross,test_ipn, 
    business,txn_id,receiver_id,txn_type,payment_type,payment_date,protection_eligibility 

    mc_gross: 10.00 

    test_ipn: 1 

    business: redacted 

    txn_id: 71N09598H1922352W 

    receiver_id: VBETUFDEQL5BC 

    txn_type: web_accept 

    payment_type: instant 

    payment_date: 12:53:10 Nov 04, 2014 PST 

    protection_eligibility: Ineligible 
+0

我从来没有经历过一个空白的PayKey回来。您需要PayKey重定向到PayPal,所以如果它是空白,它根本就不起作用。您能否为您的付费电话提供原始API请求和响应? – 2014-11-04 20:39:57

+0

我意识到这似乎令人困惑,我附加了我的帖子这个评论:澄清,Paykey从这项服务回来,这是我如何生成链接发送用户到贝宝。 Paykey根本不会传递给我的IPN,尽管其他交易数据的确如此。 – 2014-11-04 20:45:19

+0

我刚刚在包含IPN的服务器上运行了测试支付请求,并且我在IPN详细信息中获得了PayKey。你可以在这里看到一个[app specific IPN]的示例(http://sandbox.angelleye.com/paypal/ipn/admin/raw-log-detail.php?id=6806),其中包括PayKey的预期。你可以提供你获得的IPN数据的RAW转储吗? – 2014-11-04 20:53:42

回答

1

我认为你的迷恋是因为Adaptive Payments交易实际上为应用程序和接收器分开了IPN。如果您充当两者,您将获得2个独立的IPN。

这里包含的是接收者/交易特定的IPN。这不包括一个PayKey,而是一个交易ID,就像你正在得到的那样。您会注意到根本没有PayKey参数(与其包含在一起,但与您最初所述相同,但是空白)。

如果要处理应用程序特定数据(包括PayKey),则需要执行从应用程序特定的IPN内部,这是我链接你为我的示例。您会注意到它包含的参数与您在此获得的参数大不相同。

在我的示例中,我确实是应用程序所有者和事务的接收者,所以我同时获得了2个IPN,但是当然我的IPN脚本被配置为相应地处理它们。

再次,我有一个app specific IPN,其中包括应用程序特定的数据,包括PayKey。然后,我还得到了一个separate transaction specific IPN,其中包含您在此显示的数据,但不包含PayKey。

您需要确保您正确处理两者。您的Pay请求中的IPNNotificationURL参数会触发特定于应用程序的IPN,因为接收者帐户中的IPN配置会触发特定于事务的IPN。

我看到您的请求中包含IPNNotificationURL的值,但您得到的数据不是这样。您需要检查您的Web服务器日志,因为它似乎由于某种原因必须失败,但随后另一个命中并成功。

+0

感谢您的协助。在您提到上述内容之前,我没有看到提及特定于应用程序的IPN。看起来很奇怪,一个人在工作,另一个人不在(如你所说)。感谢您指点我正确的方向。 – 2014-11-04 21:20:56

+0

我的确解决了我的问题,感谢您的建议,但也想说,因为我研究了其他与PayPal相关的事情,我在很多地方找到了您的名字,例如在GetVerifiedStatus上查找信息,我发现your php api sample invocation。非常感谢。 – 2014-11-05 22:54:04

+0

哈,是的,我是一个PayPal怪胎。这个类库非常有用,我今天推出了一个非常重要的更新,因此请确保您已获得最新版本。 – 2014-11-05 23:21:41