簡體   English   中英

貝寶卡付款

[英]Paypal card payment

嗨,所以我正在使用php Paypal SDK,輸入重定向URL時,以下代碼適用。 但是我正在嘗試設置直接卡付款,這是否需要重定向網址,因為所有示例代碼似乎都將其省略了?

但是,當使用重定向URL對象時,我的應用程序只是將我重定向到Paypal api沙箱,並要求登錄帳戶(這不是直接卡付款)

繼承人我的代碼返回:

致命錯誤:訪問https://api.sandbox.paypal.com/v1/payments/payment時,出現未捕獲的異常'PayPal \\ Exception \\ PayPalConnectionException,消息為'Got Http響應代碼400'。 在/Applications/MAMP/htdocs/tealtique/library/paypal/rest-api-sdk-php/lib/PayPal/Core/PayPalHttpConnection.php中的第176行

我的代碼不包含名稱間隔,因為該文件是控制器對象,並且名稱間隔沒有問題。

    $apiContext = $this->paypal_access_token();
    $payment_description = 'Payment to comapany';
    $invoice_number = uniqid();

    $addr = new BaseAddress();
    $addr->setLine1($_POST['adr_line1']);
    $addr->setCity($_POST['adr_city']);
    $addr->setCountryCode($_POST['adr_country']);
    $addr->setPostalCode($_POST['adr_postal_code']);
    $addr->setState($_POST['adr_county']);

    $card = new CreditCard();
    $card->setNumber($_POST['card_number']);
    $card->setType($_POST['card_type']);
    $card->setExpireMonth($_POST['card_expire_mounth']);
    $card->setExpireYear($_POST['card_expire_year']);
    $card->setCvv2($_POST['card_cvv2']);
    $card->setFirstName($_POST['card_first_name']);
    $card->setLastName($_POST['card_last_name']);
    $card->setBillingAddress($addr);

    $fi = new FundingInstrument();
    $fi->setCreditCard($card);

    $payer = new Payer();
    $payer->setPaymentMethod("paypal");

    $item = new Item();
    $item->setName('Payment Instalment')
        ->setCurrency(PAYPAL_CURRENCY)
        ->setQuantity(1)
        ->setPrice($_POST['payment_amount']);

    $itemList = new ItemList();
    $itemList->setItems(array($item));

    $details = new Details();
    $details->setShipping(0)
            ->setFee(PAYPAL_FEE)
            ->setTax(0)
            ->setSubtotal($_POST['payment_amount']);

    $amount = new Amount();
    $amount->setCurrency(PAYPAL_CURRENCY)
        ->setTotal($_POST['payment_amount'])
        ->setDetails($details);

    $transaction = new Transaction();
    $transaction->setAmount($amount)
        ->setItemList($itemList)
        ->setDescription($payment_description)
        ->setInvoiceNumber($invoice_number);

    $payment = new Payment();
    $payment->setIntent("sale")
        ->setPayer($payer)
        ->setTransactions(array($transaction));

    try {       
        $payment->create($apiContext);
    } catch (Exception $ex) {
        echo 'exception : <pre>';print_r(json_decode($ex->getData()));
        exit(1);
    }


    //$approvalUrl = $payment->getApprovalLink();
    //header('location:' . $approvalUrl);

我也對如何使用sdk捕獲錯誤消息感到困惑,因為Paypal開發人員網站上的文檔僅說明了將重新發生的錯誤以及錯誤的含義,而不是如何捕獲它們。

第一件事:

您可以捕獲PayPalHttpConnection異常並打印詳細信息,以了解失敗原因。 為此,在代碼周圍添加一個try catch塊。

try {
    $creditCard->create($apiContext);
    echo $creditCard;
}
catch (\PayPal\Exception\PayPalConnectionException $ex) {
    echo $ex->getData();
}

我將其添加到https://github.com/paypal/PayPal-PHP-SDK/wiki的Wiki頁面之一中

其次,如果您打算使用信用卡直接付款,則不需要重定向URL。 您可以Payments using credit card information https://paypal-php-sdk.herokuapp.com/上提供的Payments using credit card information來跟蹤樣本Payments using credit card information

另外,您可以通過一個命令輕松地在本地計算機上設置示例,因為該命令已隨SDK一起提供。 只需按照此處給出的說明進行操作

暫無
暫無

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

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