如何从贝宝获得成功或失败响应?

Posted

技术标签:

【中文标题】如何从贝宝获得成功或失败响应?【英文标题】:How to get success or failure response from paypal? 【发布时间】:2017-08-06 03:23:18 【问题描述】:

我正在尝试进行paypal付款。付款完成后,我们如何获得交易的详细信息以及如何在angularjs中获得paypal付款的成功或失败响应?

【问题讨论】:

Angular 2 paypal的可能重复 【参考方案1】:

我正在使用这个 php 代码来制作它。因此,在您在 Paypal 中完成交易后,他们会向您返回响应(即使交易失败)。只需检查数组中的参数“ACK”即可。

此响应是一个包含交易信息的数组。 如果您想授予您的交易信息。只需使用“GetTransactionDetails”方法,paypal 服务器就会返回一个包含所有信息的数组(您必须使用交易 ID 来进行查询,而不是您的令牌)。只需将此代码调整为 angularJS

    <?php

function verify_Transaction($idTrans,$show)
    $nvp = array(
        'METHOD'        => 'GetTransactionDetails',
        'VERSION'       => '124.0', 
        'PWD'           => 'YOUR PASS',
        'USER'          => 'YOUR USER',
        'SIGNATURE'     => 'YOUR SIGNATURE' ,
        'TRANSACTIONID' => yourTransactionID
        );

    $curl = curl_init();

    curl_setopt( $curl , CURLOPT_URL , 'https://api-3t.sandbox.paypal.com/nvp' );
    curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER , false );
    curl_setopt( $curl , CURLOPT_RETURNTRANSFER , 1 );
    curl_setopt( $curl , CURLOPT_POST , 1 );
    curl_setopt( $curl , CURLOPT_POSTFIELDS , http_build_query( $nvp ) );

    $response = urldecode( curl_exec( $curl ) ); 

    $responseNvp = array();

    if ( preg_match_all( '/(?<name>[^\=]+)\=(?<value>[^&]+)&?/' , $response , $matches ) ) 
        foreach ( $matches[ 'name' ] as $offset => $name ) 
            $responseNvp[ $name ] = $matches[ 'value' ][ $offset ];
        
    
    if($show)
    echo '<pre>';print_r($responseNvp);echo'</pre>';
    

    if($responseNvp['ACK']=='Success')
        //echo "true";
        return true;
    else
        //echo "false";
        return false;
    


?>

【讨论】:

以上是关于如何从贝宝获得成功或失败响应?的主要内容,如果未能解决你的问题,请参考以下文章

从贝宝内取消订阅会收到啥样的 ipn 响应?

停止从贝宝支付贝宝定期付款

如何从贝宝交易中获取国家和州?

错误 Alamofire 5 响应成功和响应失败

PayPal Hosted Pro 直接付款

Paypal:ipn响应问题