用于银行交易中预期目的的带有自定义发票编号的 PayPal Rest API 付款

Posted

技术标签:

【中文标题】用于银行交易中预期目的的带有自定义发票编号的 PayPal Rest API 付款【英文标题】:PayPal Rest API payment with custom invoice number for intended purpose in bank transaction 【发布时间】:2014-09-19 13:10:42 【问题描述】:

编辑仅供参考:如果您打算做类似企业的事情,请不要使用 PayPal REST API。这可能会浪费很多时间。 正如 PayPal 自己提到的 (https://developer.paypal.com/docs/faq/#classic-api-questions) 经典 API 具有更多功能,目前没有计划终止生命周期。


我需要使用新的 API 实现贝宝交易。除了一件事,一切都很好:

在经典 API 中,我可以设置发票编号来引用我的自定义商店编号。当贝宝将钱汇给银行时,该交易具有预期目的,即给定的发票号码。

现在使用 rest api,预期用途字段为空。我没有找到任何钩子如何给出这个发票号码。

例如从贝宝使用这个网站:https://devtools-paypal.com/hateoas/index.html?interactive=OFF&env=sandbox#

我创建这样的付款:


    "intent": "sale",
    "payer": 
        "payment_method": "paypal"
    ,
    "transactions": [
        
            "amount": 
                "currency": "USD",
                "total": "110.54"
            ,
            "description": "This is the payment transaction description."
        
    ],
    "redirect_urls": 
        "return_url": "http://www.ebay.com",
        "cancel_url": "http://www.milo.com"
    

我想做这样的事情:


    "intent": "sale",
    "payer": 
        "payment_method": "paypal"
    ,
    "transactions": [
        
            "amount": 
                "currency": "USD",
                "total": "110.54"
            ,
            "description": "This is the payment transaction description.",
            "my_custom_transaction_id" : "shop_transaction_no_234"
        
    ],
    "redirect_urls": 
        "return_url": "return_url",
        "cancel_url": "cancel_url"
    

【问题讨论】:

在与 paypal 技术支持人员交谈后:我不应该使用其余的 API -,.- 谢谢,此警告的文档页面....是时候回滚了 他们如何解释他们的答案?为什么不应该使用 Rest API? @antongorodezkiy:他们说 rest api 处于 beta 状态。并非经典 api 的所有功能都已经实现。因此,如果您使用 rest API,您可能无法使用经典做一些事情。用于识别付款的发票 ID 等必不可少的东西 ;-) 【参考方案1】:

我能够找到解决方案: 创建付款:

use PayPal\Api\Transaction;

$customvalue = 'shop_transaction_no_234';

$transaction = new Transaction();

$transaction->setCustom($customvalue);

付款完成后,响应如下:


    "intent": "sale",
    "payer": 
        "payment_method": "paypal"
    ,
    "transactions": [
        
            "amount": 
                "currency": "USD",
                "total": "110.54"
            ,
            "description": "This is the payment transaction description.",
            "custom" : "shop_transaction_no_234"
        
    ],
    "redirect_urls": 
        "return_url": "return_url",
        "cancel_url": "cancel_url"
    

补充说明,如果你想从 paypal 响应中获取交易详情,我是这样做的

use PayPal\Api\Payment;
/**
 * Get Ids from url
 */
$paymentId  = $_GET['paymentId'];
$payerId    = $_GET['PayerID'];

/**
 * Get payment details and assign to object
 */
$payment    = Payment::get($paymentId, $paypal);
$obj        = json_decode($payment);

/**
 * this script returns the custom value you assigned
 */
$custom     = $obj->transactions[0]->custom;

就是这样!希望这对所有人都有用:)

【讨论】:

时间过去和 API 更改。现在paypal的交易对象有更多的领域。你的“习惯”,这不是我想要的。我没有测试它,但我认为强烈建议使用 invoice_number 来存储自定义商店的发票编号以跟踪您的交易。不过谢谢!

以上是关于用于银行交易中预期目的的带有自定义发票编号的 PayPal Rest API 付款的主要内容,如果未能解决你的问题,请参考以下文章

订单号、交易编号和发票编号之间的差异

Magento - 自定义发票号码

Omnipay - 如何将“自定义”或“发票”参数传递给 Paypal?

paypal 按钮/IPN 发票名称

Oracle银行存取钱系统

按自定义模式排序列