Paypal 响应中的 Receipt_id 为空,我该如何获取?

Posted

技术标签:

【中文标题】Paypal 响应中的 Receipt_id 为空,我该如何获取?【英文标题】:Receipt_id is null in Paypal response, How can I get it? 【发布时间】:2016-08-02 19:00:11 【问题描述】:

我已通过 activemerchant gem 将 Paypal 与我的 rails 应用程序集成,截至目前,我正在获取令牌和 payer_id,但我需要在响应中为 null 的receipt_id。

我已按照link 中给出的步骤进行操作。

Paypal 的回复如下

"timestamp"=>"2016-04-12T19:23:46Z", "ack"=>"Success", 
"correlation_id"=>"000a000f000r", "version"=>"124", "build"=>"000000", 
"token"=>"AB-000000000000000", "transaction_id"=>"kjKJKHkj09809FED2", 
"parent_transaction_id"=>NULL, "receipt_id"=>NULL, 
"transaction_type"=>"express-checkout", "payment_type"=>"instant", 
"payment_date"=>"2016-04-12T19:23:46Z", "gross_amount"=>"160.00", 
"gross_amount_currency_id"=>"USD", "fee_amount"=>"6.54", 
"fee_amount_currency_id"=>"USD", "tax_amount"=>"0.00", 
"tax_amount_currency_id"=>"USD", "exchange_rate"=>NULL, 
"payment_status"=>"Completed", "pending_reason"=>"none", 
"reason_code"=>"none", "protection_eligibility"=>"Eligible", 
"protection_eligibility_type"=>"ItemNotReceivedEligible,UnauthorizedPaymentEligible", 
"secure_merchant_account_id"=>"JHBJKJKJBKJBKJH",  
"success_page_redirect_requested"=>"false", 
"coupled_payment_info"=>NULL, "Token"=>"AB-000000000000000", 
"PaymentInfo"=>""TransactionID"=>"kjKJKHkj09809FED2", 
"ParentTransactionID"=>nil, "ReceiptID"=>nil, 
"TransactionType"=>"express-checkout", "PaymentType"=>"instant", 
"PaymentDate"=>"2016-04-12T19:23:46Z", "GrossAmount"=>"160.00", 
"FeeAmount"=>"6.54", "TaxAmount"=>"0.00", "ExchangeRate"=>nil, 
"PaymentStatus"=>"Completed", "PendingReason"=>"none", 
"ReasonCode"=>"none", "ProtectionEligibility"=>"Eligible", 
"ProtectionEligibilityType"=>"ItemNotReceivedEligible,UnauthorizedPaymentEligible", 
"SellerDetails"=>"SecureMerchantAccountID"=>"JHBJKJKJBKJBKJH"", 
"SuccessPageRedirectRequested"=>"false", "CoupledPaymentInfo"=>NULL

Paypal 账户中是否有任何配置来获取receipt_id,或者我必须添加/更改任何请求参数?

请提出建议。

提前致谢。

【问题讨论】:

您是在使用沙箱还是实际交易?我有一个类似的问题(实际上是在 .NET 中),但是使用沙箱我也有一个空的receipt_id,我想这可能是因为它不是一个完整的交易并且一个真正的交易可能有一个receipt_id。 是的,我正在使用沙盒帐户。 【参考方案1】:

我已经与 paypal 开发人员支持讨论过这个问题,似乎交易销售 ID 是记录并返回给用户的适当 ID,它也是信用卡交易的 paypal 帐户中记录的内容,所以如果用户有一个支持问题,这是提供给帐户以查找交易详细信息的最简单的号码。

我不是 100% 确定如何访问所谓的receipt_id,但我不认为它打算在对支付端点的响应中填充。如果您要获得一个receipt_id,它很可能来自于到达端点GET /v1/payments/sale/<Transaction-Id>

根据api,receipt_id定义为

Receipt id 是返回的 16 位数字支付识别号码,供访客用户识别付款。

我认为“访客用户”可能具有与任何交易都不相关的特定含义,但我对此并不肯定。

我建议在您从 payments 端点获取事务 ID 后,使用此 endpoint。从 payment.transactions[0].related_resources[0].sale.id 的支付端点返回的 json 中的 id 似乎是记录简单信用卡交易的适当 ID,我想将参考号返回给客户和存储以供日后查找交易。

我还能够使用该 ID 来询问上述销售端点以获取更多信息,但我从来没有能够获得receipt_id 来填充沙盒操作。

希望这会有所帮助,我发现 REST api 缺少一些文档。

"transactions": [
    
      "amount": 
        "total": "7.47",
        "currency": "USD",
        "details": 
          "tax": "0.03",
          "shipping": "0.03"
        
      ,
      "description": "This is the payment transaction description.",
      "related_resources": [
        
          "sale": 
            "id": "4RR959492F879224U",
            "create_time": "2013-01-31T04:12:02Z",
            "update_time": "2013-01-31T04:12:04Z",

【讨论】:

以上是关于Paypal 响应中的 Receipt_id 为空,我该如何获取?的主要内容,如果未能解决你的问题,请参考以下文章

在 PayPal Sandbox 中没有收到对侦听器的 IPN 响应

Paypal Success 交易返回值为空 - 有时

Paypal 响应未出现在 Paypal IPN 中的 notify_url 页面上

Magento 1.9.1 PayPal Express 评论页面为空

付款人电子邮件作为 PayPal 响应中的参数

如何从php中的paypal curl响应获取付款参考号