Php Paypal自适应支付在沙箱模式下工作,但不在生产模式下工作

Php Paypal自适应支付在沙箱模式下工作,但不在生产模式下工作,php,paypal,paypal-adaptive-payments,Php,Paypal,Paypal Adaptive Payments,我正在尝试使用Paypal的自适应支付API,但很难将其切换到生产环境。在沙盒模式下,一切正常,我得到了正确的响应,但当我切换到我的live APP ID时,它就不起作用了 这些是我用于沙盒的配置值 PayPal URL : https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay?paykey=[TOKEN_HERE] Application ID : APP-80W284485P519543T 这些值在沙盒模式下对我有效

我正在尝试使用Paypal的自适应支付API,但很难将其切换到生产环境。在沙盒模式下,一切正常,我得到了正确的响应,但当我切换到我的live APP ID时,它就不起作用了

这些是我用于沙盒的配置值

PayPal URL : https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay?paykey=[TOKEN_HERE]
Application ID : APP-80W284485P519543T
这些值在沙盒模式下对我有效。但当我切换到以下生产值时,它停止工作

PayPal URL : https://www.paypal.com/webapps/adaptivepayment/flow/pay?paykey=[TOKEN_HERE]
Application ID : [ACTUAL APP ID]

This is what I mean by stops working.
  • 在生产模式下,应用程序获得支付密钥
  • 将其附加到Paypal URL,然后将其重定向到其站点
  • 在站点加载时,我收到以下消息

它最终出现在的URL-
https://ic.paypal.com/webapps/adaptivepayment/flow/payinit?execution=e6s1

截图-

这里还有一个“返回”按钮,当我点击它时,每次我都会被带到不同的站点(看起来我会被发送到随机失效URL)

我在下面包含了我使用的代码

$payRequest = new PayRequest();
$payRequest->actionType     = "PAY";
$payRequest->cancelUrl      = $cancelURL; //my success and fail urls
$payRequest->returnUrl      = $returnURL;

$payRequest->clientDetails  = new ClientDetailsType();
$payRequest->clientDetails->applicationId   = $this->config['application_id'];
$payRequest->clientDetails->deviceId        = $this->config['device_id'];
$payRequest->clientDetails->ipAddress       = $this->CI->input->ip_address();

$payRequest->currencyCode = $currencyCode;

$payRequest->requestEnvelope = new RequestEnvelope();
$payRequest->requestEnvelope->errorLanguage = "en_US";

//I set the receiver and the amounts. I also define that these are digital goods payments       
$receiver1 = new receiver();
$receiver1->email   = $opts['receiver_email'];
$receiver1->amount  = $opts['amount'];
$receiver1->paymentType = 'DIGITALGOODS';
$payRequest->receiverList = new ReceiverList();
$payRequest->receiverList = array($receiver1);

//Then I make the call
$ap          = new AdaptivePayments();
$response    = $ap->Pay($payRequest);

if(strtoupper($ap->isSuccess) == 'FAILURE') {
    log_message('error', "PAYMENT_FAIL : " . print_r($ap->getLastError(), true));
    return false;
} else {
    if($response->paymentExecStatus == "COMPLETED")  {
        header("Location: " . $this->config['success_url']);
        exit;
    } else {
        $token      = $response->payKey;
        $payPalURL  = $this->config['paypal_redirect_url'] . 'paykey='.$token;
        header("Location: ".$payPalURL);
        exit;
    }
}
这是从他们的示例实现中提取的代码,所以不确定这里出了什么问题。其他可能相关的信息

  • 我使用自适应支付来确保发送方和接收方 实际上做了交易

  • 我已将付款类型设置为“数字商品”

编辑

我已经附上了一个带有支付密钥的示例URL

https://www.paypal.com/webapps/adaptivepayment/flow/pay?paykey=AP-0H388650F08226841

我发现了让我如此悲伤的问题

Paypal SDK使用了在
/SDK/lib/Config/Paypal\u SDK\u clientproperties

常量包含用户名、密码、应用程序id、API url和其他一些。它们直接用于文件php/sdk/lib/CallerServices中。因此,与您在API中所期望的相反,这些值不会在安装阶段注入,因此如果您没有注意到该文件并更改这些值,上述代码将无法工作


要解决此问题,只需更新文件中定义的值,您就可以开始了。

是否可以包含$payPalURL的回音?@Robert sure,我已经用该信息更新了问题。
https://www.paypal.com/webapps/adaptivepayment/flow/pay?paykey=AP-0H388650F08226841