簡體   English   中英

從cURL請求時出現Paypal Adaptivepayments問題

[英]Paypal Adaptivepayments Issue when requesting from cURL

我在php中創建了一個簡單的Web應用程序,它消耗了paypal的adaptivePayments / Pay Api,我使用POSTMAN進行了一些測試,並且一切正常,我發出了初始請求,我得到了payKey,也可以使用此payKey來檢查狀態使用/ AdaptivePayments / PaymentDetails Api進行交易,問題是當我嘗試通過php代碼發出請求時:

    $endpoint = 'https://svcs.sandbox.paypal.com/AdaptivePayments/Pay';

    $payload['actionType']                       = "PAY";
    $payload['clientDetails']['applicationId']   = "APP-80W284485P519543T";
    $payload['clientDetails']['ipAddress']       = "xxx.xxx.xxx.xxx";
    $payload['currencyCode']                     = "USD";
    $payload['feesPayer']                        = "EACHRECEIVER";
    $payload['memo']                             = "Transaction";
    $payload['receiverList']['receiver']         = $receivers;
    $payload['requestEnvelope']['errorLanguage'] = "en_US";
    $payload['returnUrl']                        = "URL";
    $payload['cancelUrl']                        = "URL";

    $json = json_encode($payload);

    $ch = curl_init($endpoint);

    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'X-PAYPAL-SECURITY-USERID: ACCOUNT',
        'X-PAYPAL-SECURITY-PASSWORD: PASSWORD',
        'X-PAYPAL-SECURITY-SIGNATURE: SIGNATURE',
        'X-PAYPAL-REQUEST-DATA-FORMAT: JSON',
        'X-PAYPAL-RESPONSE-DATA-FORMAT: JSON',
        'X-PAYPAL-APPLICATION-ID: APP-80W284485P519543T',
        'Content-Type: application/json',
        'Content-Length: ' . strlen($json)
    ));

    $result = curl_exec($ch);

$ receivers是一個PHP數組,其中包含有關電子郵件和付款金額的信息,如下所示:

Array
(
    [0] => Array
        (
            [amount] => 19.8
            [email] => client2-ubs@gmail.com
            [primary] => 
        )


    [1] => Array
        (
            [amount] => 20.7
            [email] => client1-ubs@gmail.com
            [primary] => 
        )


    [2] => Array
        (
            [amount] => 45
            [email] => store-ubs@gmail.com
            [primary] => 1
        )
    )

我沒有收到任何錯誤,我什至得到了用來創建html按鈕的payKey,以便用戶可以為他的商品付款,問題是當我檢查付款狀態/ AdaptivePayments / PaymentDetails時,我得到了:

{
    "responseEnvelope": {
        "timestamp": "2015-08-06T23:59:23.075-07:00",
        "ack": "Success",
        "correlationId": "bab22ca0bd887",
        "build": "17603431"
    },
    "cancelUrl": "https://23410a33.ngrok.com/universal-bank-of-souls/",
    "currencyCode": "USD",
    "paymentInfoList": null,
    "returnUrl": "https://23410a33.ngrok.com/universal-bank-of-souls/",
    "status": "CREATED",
    "payKey": "AP-8ML17897XK803351A",
    "actionType": "PAY",
    "feesPayer": "EACHRECEIVER",
    "sender": {
        "useCredentials": "false"
    }
}

由於某些奇怪的原因,paymentInfoList為null,因此用戶在單擊貝寶按鈕時會看到一個錯誤(交易錯誤)。

如我之前所說,如果我使用POSTMAN進行交易,然后檢查狀態,則會得到正確的響應:

{
    "responseEnvelope": {
        "timestamp": "2015-08-07T00:14:08.510-07:00",
        "ack": "Success",
        "correlationId": "b9049ba0d4cf1",
        "build": "17603431"
    },
    "cancelUrl": "URL",
    "currencyCode": "USD",
    "memo": "Bank of souls payment",
    "paymentInfoList": {
        "paymentInfo": [
            {
                "receiver": {
                    "amount": "123.30",
                    "email": "client2-ubs@gmail.com",
                    "primary": "false",
                    "paymentType": "SERVICE",
                    "accountId": "SLKM4ZQ5FMSHG"
                },
                "pendingRefund": "false"
            },
            {
                "receiver": {
                    "amount": "510.30",
                    "email": "client1-ubs@gmail.com",
                    "primary": "false",
                    "paymentType": "SERVICE",
                    "accountId": "8PUDR7LSRS4MJ"
                },
                "pendingRefund": "false"
            },
            {
                "receiver": {
                    "amount": "704.00",
                    "email": "store-ubs@gmail.com",
                    "primary": "true",
                    "paymentType": "SERVICE",
                    "accountId": "E29BAQX7C7P3N"
                },
                "pendingRefund": "false"
            }
        ]
    },
    "returnUrl": "URL",
    "status": "CREATED",
    "payKey": "AP-9MU4806743660523S",
    "actionType": "PAY",
    "feesPayer": "EACHRECEIVER",
    "reverseAllParallelPaymentsOnError": "false",
    "sender": {
        "useCredentials": "false"
    }
}

(paymentInfoList實際上包含帶有商品的json對象,但這是使用POSTMAN手動進行的請求)

這可能是PHP問題嗎? 一些調試curl連接的想法會對我有很大幫助。

PD:我整天都在調試,我什至將$ json變量print_r(我得到json格式)並直接復制/粘貼到郵遞員及其工作中,但是由於某些原因,使用curl的同一請求沒有發送$接收者信息。

解決了,我使用兩個不同的api憑據發出請求(創建訂單和請求訂單信息),而且,當接收到不同於原始憑據的api憑據時,貝寶似乎隱藏了訂單商品,但是仍然顯示訂單狀態(創建,完成等)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM