首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >支付卡支付

支付卡支付
EN

Stack Overflow用户
提问于 2015-04-18 23:03:03
回答 1查看 663关注 0票数 0

嗨,所以我正在使用Paypal,当输入重定向url时,下面的代码可以工作。然而,我试图设置直接卡支付,这是否需要一个重定向的网址,因为所有的样本代码似乎没有它?

然而,在使用重定向url对象时,我的应用程序只是将我重定向到Paypal沙箱,并请求帐户登录(这不是直接卡支付)。

下面是我返回的代码:

致命错误:未命名的异常'PayPal\ exception \PayPalConnectionException‘带有消息’当访问https://api.sandbox.paypal.com/v1/payments/payment时获得Http响应代码400‘。在/Applications/MAMP/htdocs/tealtique/library/paypal/rest-api-sdk-php/lib/PayPal/Core/PayPalHttpConnection.php的第176号线上

我的代码不包括名称间隔,因为文件是一个控制器对象,并且名称间隔没有问题。

代码语言:javascript
复制
    $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开发人员网站上的文档来捕获错误消息,我也有点困惑,我只是说明了哪些错误会重现,它们意味着什么,而不是如何捕获它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-23 05:48:28

首先要做的是:

您可以捕获PayPalHttpConnection异常并打印详细消息,说明其失败的原因。要做到这一点,请在代码周围添加一个try catch块。

代码语言:javascript
复制
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 informationhttps://paypal-php-sdk.herokuapp.com/提供的示例进行操作

此外,您可以通过一个命令轻松地在本地计算机中设置示例,因为SDK已经提供了示例。只需按照指示给在这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29723892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档