【问题标题】:PayPal reference transaction- status code 400 in responsePayPal 参考交易状态码 400 作为响应
【发布时间】:2017-04-06 06:46:24
【问题描述】:

我尝试使用 PayPal Reference Transactin。我已经签订了计费协议,并在任何交易完成之前设置了计费协议 ID。

我做了一个简单的交易请求,但是得到了:

PPHttpConnection.php 第 108 行中的 PPConnectionException:
访问时得到 Http 响应码 400 https://api-3t.sandbox.paypal.com/2.0.

我的代码(写在 Laravel 5.3 中,带有 Mercer-sdk-php 包):

$user=Auth::user();

$currencyCode = 'GBP';
$price=config('constants.offer_submit_price');

$reference_id=$user->userExt()->where('field_name', '=', 'billing_agreement')->firstOrFail()->field_value;
$amount = new BasicAmountType($currencyCode, $price);

$paymentDetails = new PaymentDetailsType();
$paymentDetails->OrderTotal = $amount;

$RTRequestDetails = new DoReferenceTransactionRequestDetailsType();
$RTRequestDetails->PaymentDetails = $paymentDetails;
$RTRequestDetails->ReferenceID = $reference_id;
$RTRequestDetails->PaymentAction ='sale';

$RTRequest = new DoReferenceTransactionRequestType();
$RTRequest->DoReferenceTransactionRequestDetails  = $RTRequestDetails;

$RTReq = new DoReferenceTransactionReq();
$RTReq->DoReferenceTransactionRequest = $RTRequest;

$paypalService = new PayPalAPIInterfaceServiceService($this->config);
try {
    $setRTResponse = $paypalService->DoReferenceTransaction($RTReq);
} catch (Exception $ex) {
    dd($ex);
}

这就是脚本产生的SAOP包络:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="urn:ebay:api:PayPalAPI" xmlns:ebl="urn:ebay:apis:eBLBaseComponents" xmlns:cc="urn:ebay:apis:CoreComponentTypes" xmlns:ed="urn:ebay:apis:EnhancedDataTypes" >
    <soapenv:Header>
    <ns:RequesterCredentials>
    <ebl:Credentials>
        <ebl:Username>username
</ebl:Username>
<ebl:Password>password
</ebl:Password>
<ebl:Signature>signature
</ebl:Signature>
</ebl:Credentials>
</ns:RequesterCredentials>
</soapenv:Header>
<soapenv:Body>
    <ns:DoReferenceTransactionReq>
    <ns:DoReferenceTransactionRequest>
    <ebl:DoReferenceTransactionRequestDetails>
    <ebl:ReferenceID>B-reference_id
</ebl:ReferenceID>
<ebl:PaymentAction>sale
</ebl:PaymentAction>
<ebl:PaymentDetails>
    <ebl:OrderTotal currencyID="GBP">10
</ebl:OrderTotal>
<ebl:ButtonSource>PayPal_SDK
</ebl:ButtonSource>
</ebl:PaymentDetails>
</ebl:DoReferenceTransactionRequestDetails>
<ebl:Version>106.0
</ebl:Version>
</ns:DoReferenceTransactionRequest>
</ns:DoReferenceTransactionReq>
</soapenv:Body>
</soapenv:Envelope>'

【问题讨论】:

  • huehuehuehuehue

标签: php paypal


【解决方案1】:

在朋友的帮助下,我找到了问题所在。

$RTRequestDetails->PaymentAction ='Sale';

而不是

$RTRequestDetails->PaymentAction ='sale';

PayPal SOAP API 需要正确区分大小写。 很遗憾,他们没有发送任何信息什么是错的。

【讨论】:

    猜你喜欢
    • 2011-12-29
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 2018-05-11
    • 2016-01-18
    • 2015-01-07
    • 2016-07-10
    • 2020-01-16
    相关资源
    最近更新 更多