PayPal“授权失败"; [英] PayPal "Authorization Failed"

查看:1175
本文介绍了PayPal“授权失败";的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

(这是我第一次使用PayPal API,请多多包涵.)

(This is the first time I've worked with the PayPal API so bear with me.)

我正在尝试使用BMCreateButton API动态创建加密的按钮,并使用

I'm trying to create encrypted buttons on the fly using the BMCreateButton API, using slightly modified code from this page. Unfortunately I can't seem to get this working, as I get an "authentication/authorization failed" message in the PHP error log. (I've also asked this on the PayPal developer forum but haven't got an answer.)

此代码:

function createButton($name, $price) {
    // Check to make sure that our version of PHP supports SOAP.
    if((PHP_VERSION_ID < 50101) || !in_array("soap", get_loaded_extensions())) {
        error_log("PHP not running with SOAP");
    } else {
        include_once("config.php"); //this file holds the credentials and whether it's running in sandbox mode or not
        //basic variable validation
        $price = floatval($price);

        // Import the PayPal WSDL.
        $location = $sandbox ? "https://api-3t.sandbox.paypal.com/2.0/" : "https://api-3t.paypal.com/2.0/";
        $soapClient = new SoapClient("https://www.paypalobjects.com/wsdl/PayPalSvc.wsdl", array(
            location => $location
        ));

        // Set our API credentials.
        $credentials->Credentials->Username = $username;
        $credentials->Credentials->Password = $password;
        $credentials->Credentials->Signature = $signature;
        $soapClient->__setSoapHeaders(new SoapHeader("urn:ebay:api:PayPalAPI", "RequesterCredentials", $credentials));

        // Start creating our BMCreateButtonReq object.  For full details about this object, see
        // http://tinyurl.com/3mxau6j .
        $BMCreateButtonReq->BMCreateButtonRequest->Version = "71.0";

        $BMCreateButtonReq->BMCreateButtonRequest->ButtonCode = "ENCRYPTED";

        // What type of button are we creating?
        $BMCreateButtonReq->BMCreateButtonRequest->ButtonType = "CART";

        // Specific variables for this button.  For the full list of options, see
        // http://tinyurl.com/6qyanl .  For a basic payment, these two should be enough.

        $BMCreateButtonReq->BMCreateButtonRequest->ButtonVar[] = "amount=$price";
        $BMCreateButtonReq->BMCreateButtonRequest->ButtonVar[] = "item_name=$name";

        // Run the API call.
        $response = $soapClient->BMCreateButton($BMCreateButtonReq);

        if($response->Ack == "Success" || $response->Ack == "SuccessWithWarning") {
            // If successful, the button code will be in the Website element of $response.
            // It'll be a full HTML form, so don't wrap it in any <form> tags -- just
            // display it as-is.
            echo $response->Website;
        } else {
            error_log("Could not create PayPal button. " . serialize($response->Errors));
            echo "<p class=\"note\">Cannot create button</p>";

        }
    }
}

在错误日志中给出此信息:

gives this in the error log:

Could not create PayPal button. O:8:"stdClass":4:{s:12:"ShortMessage";s:35:"Authentication/Authorization Failed";s:11:"LongMessage";s:49:"You do not have permissions to make this API call";s:9:"ErrorCode";s:5:"10002";s:12:"SeverityCode";s:5:"Error";}

我已经检查了凭据,它们是正确的,并且由于沙箱和实时API失败.我是否缺少一些基本知识,或者我可能忽略的代码中有错误?

I've checked the credentials and they're correct, and fail with the sandbox as well as the live API. Am I missing something fundamental, or is there an error in the code I may have overlooked?

推荐答案

我记得这个!

函数内部是否定义了$username$password$signature?如果没有,则需要在函数顶部添加global $username, $password, $signature.

Are $username, $password, and $signature defined inside the function? If not, you need to add global $username, $password, $signature at the top of the function.

这篇关于PayPal“授权失败";的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆