【问题标题】:eway direct payment curl code not workingeway直接付款卷曲代码不起作用
【发布时间】:2014-07-13 16:57:19
【问题描述】:

我正在尝试使用 eway 付款方式向客户收费。我正在通过 curl 实现该过程,这是该函数的代码。

 public function testing_direct() {


    $url = 'https://api.sandbox.ewaypayments.com/DirectPayment.json'; // PROD
    $postData = array(
        'Method' => 'TokenPayment',
        'TransactionType' => 'Recurring',
        'TokenCustomerID' => '918549937032',
        'TotalAmount' => '1995',
        'InvoiceNumber' => '123',
        'InvoiceDescription' => 'testing'
    );

    $ch = curl_init($url);
    $api_authentication = base64_encode('####;****');

    curl_setopt_array($ch, array(
        CURLOPT_POST => TRUE,
        CURLOPT_RETURNTRANSFER => TRUE,
        CURLOPT_HTTPHEADER => array(
            'Content-Type: application/json','Authorization:####'
        ),
        CURLOPT_POSTFIELDS => json_encode($postData)
    ));

    $response = curl_exec($ch);

    // Check for errors
    if ($response === FALSE) {
        die(curl_error($ch));
    }


    $responseData = json_decode($response, TRUE);

    print_r($responseData);
    die;
}

此代码根本不打印任何内容...错误日志中也没有任何内容...任何关于它为什么不工作的想法??

谢谢

【问题讨论】:

    标签: php curl payment-gateway


    【解决方案1】:

    需要修复一些问题才能使该脚本正常工作,尤其是在身份验证方面,这是导致问题的最直接原因。

    需要检查请求的 HTTP 状态,因为 curl_exec 仅在出现错误时才返回 FALSE - 例如404(未找到页面)或 401(未授权)仍被视为成功请求。

    // Check for errors
    if ($response === FALSE) {
        die(curl_error($ch));
    }
    
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    if ($code != 200) {
        die('HTTP error: '.$code);
    }
    

    实际的身份验证似乎存在两个主要问题:在用户名(API 密钥)和密码之间使用分号而不是冒号,并且缺少身份验证的 Basic 部分:

    $api_authentication = base64_encode('####:****');
    
    CURLOPT_HTTPHEADER => array(
            'Content-Type: application/json','Authorization: Basic '.$api_authentication
    ),
    

    这可以通过使用CURLOPT_USERPWD来简化:

    CURLOPT_USERPWD => '####:****',
    

    除此之外,请注意 $postData 数组需要一些额外的嵌套:TokenCustomerID 应该是 CustomerTotalAmount 的子字段,Invoice 字段应该是 Payment 的子字段:

    $postData = array(
        'Method' => 'TokenPayment',
        'TransactionType' => 'Recurring',
        'Customer' => array(        
          'TokenCustomerID' => '911058757297',
        ),
        'Payment' => array(
            'TotalAmount' => '1900',
            'InvoiceNumber' => '123',
            'InvoiceDescription' => 'testing',
         ),
    );
    

    查看示例 in the documentation 以获取完整的示例请求。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2011-03-21
      • 2013-08-31
      • 2014-04-23
      • 2021-02-07
      • 1970-01-01
      • 2023-03-19
      • 2011-08-31
      • 2012-04-08
      • 2018-06-05
      相关资源
      最近更新 更多