paypal - Paypal 自适应支付 API 的问题

标签 paypal coldfusion paypal-ipn paypal-sandbox paypal-adaptive-payments

我在使用仍在开发中的 Chained Payments API 时遇到问题。

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

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

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

最后我想我只是将它作为 IpnNotificationUrl 的 url 的一部分传递给 receipt.cfm?myKey=SOMEVERYRANDOMLYGENERATEDKEYHERE 但是当我传递 IpnNotificationUrl ,指定的 url 未被 ping,无论我是否在我的沙盒帐户中设置了单独的 IPN 通知 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#" />

我需要能够创建 key 并通过 Paypal 或 Paypal 需要传回。

就其值(value)而言,这是我从 GitHub 上的 Paypal SDK 调用

    <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 从该服务返回,这是我生成链接以将用户发送到 paypal 的方式。 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

最佳答案

我认为您对自适应支付交易实际上对应用程序和接收方具有单独的 IPN 这一事实感到困惑。如果您同时充当两者,您将获得 2 个独立的 IPN。

您在此处包含的是接收方/交易特定的 IPN。这不会包括 PayKey,而是交易 ID,就像您得到的那样。您会注意到根本没有 PayKey 参数(与包含它相反,而是空白,就像您最初所说的那样。)

如果您想要处理应用特定数据(包括 PayKey),您需要在应用特定 IPN 内执行此操作,我将您链接到我的示例中。您会注意到它包含的参数与您在此处获得的参数有很大不同。

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

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

您需要确保正确处理这两者。您的支付请求中的 IPNNotificationURL 参数将触发应用特定的 IPN,而接收方帐户中的 IPN 配置将触发交易特定的 IPN。

我看到您在请求中包含了 IPNNotificationURL 的值,但您获得的数据并非如此。您需要检查您的网络服务器日志,因为看起来一个服务器一定因为某种原因失败了,但另一个服务器却成功了。

关于paypal - Paypal 自适应支付 API 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26743547/

相关文章:

javascript - 未捕获的类型错误 : Cannot read property 'submit' of null for stripe payment

performance - cffile 与 file 函数,哪个更好?

php - 通过数据库插入处理 PayPal IPN

paypal - 如何测试并行支付 IPN 监听器

Magento 在 paypal 付款前下订单

php - 如何在 paypal php rest api 中添加折扣信息?

file - 如何找出在 ColdFusion 中创建文件的时间

cfml 中的正则表达式匹配大写的整个单词,后跟换行符

PHP/CodeIgniter PayPal IPN 无效验证

asp.net - 对于这种情况,我应该研究哪个 PayPal API?