2016-11-16 1 views
0

내 요청을하기 위해 사용하는 코드는 다음과 같습니다. 여기 Paysafe에 요청을 보내려고하면 API에서 다음 응답을 계속받습니다.

{ 
    "total_amount": "1000", 
    "currency_code": "USD", 
    "merchant_ref_num": "12345678", 
    "customer_notification_email": "[email protected]", 
    "profile": { 
     "firstName": "Test", 
     "lastName": "Sample", 
     "merchantCustomerId": "12345678" 
    }, 
    "billingDetails": { 
     "city": "Montreal", 
     "country": "CA", 
     "street": "123 Main Apt 200", 
     "zip": "H1H1H1", 
     "state": "QC", 
     "phone": "555-555-5555" 
    }, 
    "extendedOptions": [ 
     { 
      "key": "authType", 
      "value": "auth" 
     }, 
     { 
      "key": "orderTimeout", 
      "value": 2592000 
     }, 
     { 
      "key": "suppressCustomerEmail", 
      "value": true 
     }, 
     { 
      "key": "silentPost", 
      "value": false 
     } 
    ], 
    "callback": [ 
     { 
      "format": "get", 
      "rel": "on_success", 
      "uri": "https://secure4137.hostgator.com/~cmedei/optimal/callbacks/callback.php", 
      "returnKeys": [ 
       "id", 
       "profile.paymentToken", 
       "profile.id", 
       "transaction.errorCode", 
       "transaction.errorMessage", 
       "transaction.confirmationNumber", 
       "transaction.amount", 
       "transaction.authType", 
       "transaction.status", 
       "transaction.currencyCode", 
       "transaction.merchantRefNum", 
       "transaction.card.brand", 
       "transaction.card.country", 
       "transaction.card.expiry", 
       "transaction.card.lastDigits", 
       "transaction.card.threeDEnrolment", 
       "transaction.card.threeDResult", 
       "transaction.card.type", 
       "transaction.paymentType", 
       "transaction.prepaidcard.lastDigits" 
      ], 
      "retries": 3, 
      "synchronous": true 
     }, 
     { 
      "format": "get", 
      "rel": "on_decline", 
      "uri": "https://secure4137.hostgator.com/~cmedei/optimal/callbacks/callback.php", 
      "returnKeys": [ 
       "id", 
       "profile.paymentToken", 
       "profile.id", 
       "transaction.errorCode", 
       "transaction.errorMessage", 
       "transaction.confirmationNumber", 
       "transaction.amount", 
       "transaction.authType", 
       "transaction.status", 
       "transaction.currencyCode", 
       "transaction.merchantRefNum", 
       "transaction.card.brand", 
       "transaction.card.country", 
       "transaction.card.expiry", 
       "transaction.card.lastDigits", 
       "transaction.card.threeDEnrolment", 
       "transaction.card.threeDResult", 
       "transaction.card.type", 
       "transaction.paymentType", 
       "transaction.prepaidcard.lastDigits" 
      ], 
      "retries": 3, 
      "synchronous": true 
     } 
    ], 
    "redirect": [ 
     { 
      "rel": "on_success", 
      "uri": "http://localhost:8080/hosted_api/main/success/", 
      "returnKeys": [ 
       "id", 
       "transaction.confirmationNumber", 
       "transaction.amount", 
       "transaction.status", 
       "transaction.errorCode", 
       "transaction.errorMessage", 
       "transaction.riskReasonCode", 
       "transaction.card.lastDigits", 
       "transaction.card.brand", 
       "transaction.card.type" 
      ] 
     }, 
     { 
      "rel": "on_decline", 
      "uri": "http://localhost:8080/hosted_api/main/failure/", 
      "returnKeys": [ 
       "id", 
       "transaction.confirmationNumber", 
       "transaction.amount", 
       "transaction.status", 
       "transaction.errorCode", 
       "transaction.errorMessage", 
       "transaction.riskReasonCode", 
       "transaction.card.lastDigits", 
       "transaction.card.brand", 
       "transaction.card.type" 
      ] 
     }, 
     { 
      "rel": "on_error", 
      "uri": "http://localhost:8080/hosted_api/main/error/", 
      "returnKeys": [ 
       "id", 
       "transaction.confirmationNumber", 
       "transaction.amount", 
       "transaction.status", 
       "transaction.errorCode", 
       "transaction.errorMessage", 
       "transaction.riskReasonCode", 
       "transaction.card.lastDigits", 
       "transaction.card.brand", 
       "transaction.card.type" 
      ] 
     }, 
     { 
      "rel": "on_timeout", 
      "uri": "http://localhost:8080/hosted_api/main/timeout/", 
      "returnKeys": [ 
       "id", 
       "transaction.confirmationNumber", 
       "transaction.amount", 
       "transaction.status", 
       "transaction.errorCode", 
       "transaction.errorMessage", 
       "transaction.riskReasonCode", 
       "transaction.card.lastDigits", 
       "transaction.card.brand", 
       "transaction.card.type" 
      ] 
     }, 
     { 
      "rel": "on_hold", 
      "uri": "http://localhost:8080/hosted_api/main/onhold/", 
      "returnKeys": [ 
       "id", 
       "transaction.confirmationNumber", 
       "transaction.amount", 
       "transaction.status", 
       "transaction.errorCode", 
       "transaction.errorMessage", 
       "transaction.riskReasonCode", 
       "transaction.card.lastDigits", 
       "transaction.card.brand", 
       "transaction.card.type" 
      ] 
     } 
    ], 
    "shoppingCart": [ 
     { 
      "amount": "1000", 
      "quantity": "1", 
      "description": "Fast Order" 
     } 
    ] 
} 

내가이 JSON 코드를 제거하더라도 내가 같은 오류가 발생합니다 응답

{ 
    "error": { 
    "code": 401, 
    "message": "Not authorised" 
    } 
} 

로 다시 얻고 것입니다. 그래서 내 자격 증명이 잘못되었다고 가정합니다.

<?php 
header("Content-type:application/json"); 
header("Authorization:application/Basic Og=="); 

?> 

답변

0

제공하신 정보가 꺼져있는 것 같습니다. PHP 헤더의 권한 부여는 매우 짧습니다. 몇 가지 이유가있을 수 있습니다.

키에 Base64 인코딩을 사용해야합니다. 이것은 헤더의 정보를 전달하는 데 필요한 것입니다.

base64_encode($APIKey) 

이렇게하면 정보가 올바르게 전달됩니다. 이렇게 보일 것입니다.

<?php 
header("Content-type:application/json"); 
header("Authorization:application/Basic cTRlajZHRW5YWXJkUk9pS3JySEo6UEFBMGViNmU0M2Q2MmFkNTk5OTg"); 
?> 

한 가지 더 있습니다.

어떤 엔드 포인트를 사용하고 있는지 확실하지 않지만 올바른 위치를 가리키고 있는지 확인하십시오. 그 이유는 잘못된 곳으로 보낼 때 키를 확인할 수 없기 때문에 시스템에서 보내는 내용을 알 수 없기 때문입니다.

이 정보가 도움이되기를 바랍니다.

관련 문제