首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2结帐支付API不能给我成功的回呼

2结帐支付API不能给我成功的回呼
EN

Stack Overflow用户
提问于 2014-05-21 11:54:28
回答 4查看 5.6K关注 0票数 2

嗨,我正在尝试创建一个付款,它将使用2 2checkout,我遵循了2co在文件中提供的说明,所有的东西似乎都正常工作,但我从来没有收到确认信息,我的订单已经完成,我在沙箱上做了一个帐户,我使用了从那里得到的信息,但仍然没有运气。

现在看,这是第一个包含表单和2co.js文件的代码

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
  <title>Example Form</title>
  <script type="text/javascript" src="https://www.2checkout.com/checkout/api/2co.min.js"></script>
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
</head>
<body>
<form id="myCCForm" action="test3.php" method="post">
  <input name="token" type="hidden" value="" />
  <div>
    <label>
      <span>Card Number</span>
      <input id="ccNo" type="text" value="" autocomplete="off" required />
    </label>
  </div>
  <div>
    <label>
      <span>Expiration Date (MM/YYYY)</span>
      <input id="expMonth" type="text" size="2" required />
    </label>
    <span> / </span>
    <input id="expYear" type="text" size="4" required />
  </div>
  <div>
    <label>
      <span>CVC</span>
      <input id="cvv" type="text" value="" autocomplete="off" required />
    </label>
  </div>
  <input type="submit" value="Submit Payment" />
</form>

<script>
    // Called when token created successfully.
    var successCallback = function(data) {
        var myForm = document.getElementById('myCCForm');

        // Set the token as the value for the token input
        myForm.token.value = data.response.token.token;

        // IMPORTANT: Here we call `submit()` on the form element directly instead of using jQuery to prevent and infinite token request loop.
        myForm.submit();
    };

    // Called when token creation fails.
    var errorCallback = function(data) {
        // Retry the token request if ajax call fails
        if (data.errorCode === 200) {
            // This error code indicates that the ajax call failed. We recommend that you retry the token request.
        } else {
            alert(data.errorMsg);
        }
    };

    var tokenRequest = function() {
        // Setup token request arguments
        var args = {
            sellerId: "901249656",
            publishableKey: "0A0C4A4D-FE71-41D0-A960-7C637F347785",
            ccNo: $("#ccNo").val(),
            cvv: $("#cvv").val(),
            expMonth: $("#expMonth").val(),
            expYear: $("#expYear").val()
        };

        // Make the token request
        TCO.requestToken(successCallback, errorCallback, args);
    };

    $(function() {
        // Pull in the public encryption key for our environment
        TCO.loadPubKey('sandbox', function() {
            // Execute when Public Key is available
        });​

        $("#myCCForm").submit(function(e) {
            // Call our token request function
            tokenRequest();

            // Prevent form from submitting
            return false;
        });
    });

</script>
</body>
</html> 

我从我的沙箱演示帐户中获得了我的sellerId: "901249656",publishableKey: "0A0C4A4D-FE71-41D0-A960-7C637F347785",

现在这是另一个页面"test3.php

代码语言:javascript
复制
<?php
require_once("2checkout-php-master/lib/Twocheckout.php");
Twocheckout::privateKey('4D67BA12-CE09-4F1D-AB20-0133F24E3472');
Twocheckout::sellerId('901249656');
Twocheckout::sandbox(true);  #Uncomment to use Sandbox

try {
    $charge = Twocheckout_Charge::auth(array(
        "merchantOrderId" => "123",
        "token" => 'Y2U2OTdlZjMtOGQzMi00MDdkLWJjNGQtMGJhN2IyOTdlN2Ni',
        "currency" => 'USD',
        "total" => '10.00',
        "billingAddr" => array(
            "name" => 'Testing Tester',
            "addrLine1" => '123 Test St',
            "city" => 'Columbus',
            "state" => 'OH',
            "zipCode" => '43123',
            "country" => 'USA',
            "email" => 'testingtester@2co.com',
            "phoneNumber" => '555-555-5555'
        ),
        "shippingAddr" => array(
            "name" => 'Testing Tester',
            "addrLine1" => '123 Test St',
            "city" => 'Columbus',
            "state" => 'OH',
            "zipCode" => '43123',
            "country" => 'USA',
            "email" => 'testingtester@2co.com',
            "phoneNumber" => '555-555-5555'
        )
    ), 'array');
    if ($charge['response']['responseCode'] == 'APPROVED') {
        echo "Thanks for your Order!";
    }
} catch (Twocheckout_Error $e) {
    $e->getMessage();
}

我从他们提供的链接中下载了Twocheckout.php。

现在的问题是,它假设如果页面上有任何错误,它会给我“未经授权”。因此,如果没有错误,一切都好,它应该给我‘授权’。所发生的是,我转到'test3.php‘,停止在那里没有任何错误或笔记,只是白色的页面,当尝试刷新它会发出'resend’

有什么能帮上忙的吗?我的错是什么?我假设当我提交这个信息时,我应该看到有人在我的演示页面“沙箱帐户”中下了新的订单。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-01-30 08:43:37

请检查https://www.2checkout.com/checkout/api/2co.min.js是否已完全加载,然后只需调用

代码语言:javascript
复制
TCO.loadPubKey('sandbox', function() {
            // Execute when Public Key is available
});​

使用此代码

代码语言:javascript
复制
$.getScript('https://www.2checkout.com/checkout/api/2co.min.js', function() {
                    try {
                            // Pull in the public encryption key for our environment
                            TCO.loadPubKey('sandbox');
                        } catch(e) {
                            alert(e.toSource());
                        }
                });
票数 2
EN

Stack Overflow用户

发布于 2016-03-12 08:30:50

在test3.php服务器端,您需要更改try块中“token”的值。

代码语言:javascript
复制
'token' => 'Y2U2OTdlZjMtOGQzMi00MDdkLWJjNGQtMGJhN2IyOTdlN2Ni', //wrong value.

把它改成

代码语言:javascript
复制
'token' => $_POST['token'], //correct value.

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2017-06-19 15:53:23

我已经了解到(困难的方法),要成功地运行这个示例代码,您需要一个“沙箱”帐户。

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

https://stackoverflow.com/questions/23782448

复制
相关文章

相似问题

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