首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google Checkout IPN

Google Checkout IPN
EN

Stack Overflow用户
提问于 2012-07-23 06:51:39
回答 1查看 504关注 0票数 0

我已经设置了一个立即购买按钮,它有一个设置值,它发送到谷歌服务器正确,并显示现在付款页面等。我也发送一个额外的参数使用商家私人数据或任何它的名称。

我做这一切的方式都是通过cURL,所以在我没有发现并阻止它的情况下,用户没有办法强制降低费用。(对所有输入进行验证等)。

所以既然我要传递所有的数据。我需要一种方法来找回它,但我现在不确定如何做到这一点。

我已经看过文档了,我只是被它们弄糊涂了。

我知道我需要找出它是否收费,然后如果它是自动为他们处理费用。但是,有没有办法让它发生,然后当我收到钱时,我可以用我发送给他们的额外数据更新数据库?如果是这样,我该怎么做呢?

这是我当前的代码:

代码语言:javascript
复制
$fields = array(
            'item_name_1'=>urlencode($name),
            'item_description_1'=>urlencode($name . ' of [xxx]'),
            'item_quantity_1'=>urlencode('1'),
            'item_price_1'=>urlencode($value),
        'item_currency_1'=>urlencode('GBP'),
        '_charset_'=>'utf-8',
    'shopping-cart.merchant-private-data' => '[username]',
    'shopping-cart.items.item-1.digital-content.description' => 'Your account has been upgraded. 


    'shopping-cart.items.item-1.digital-content.email-delivery' => 'true'
             );
$fields_string = "";
foreach($fields as $key=>$value)
        {
    $fields_string .= $key.'='.$value.'&'; 
    }
rtrim($fields_string,'&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,'https://checkout.google.com/api/checkout/v2/checkoutForm/Merchant/8048xxx');
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
$result = curl_exec($ch);
curl_close($ch);

对于Google结账的流程(当他们点击立即购买按钮时)

这是当前不起作用的“处理”的代码。

代码语言:javascript
复制
if(isset($_POST['serial-number'])){
    // new order made
    $sn = $_POST['serial-number'];
    $id = '804xxx';
    $key = 'xxxxx';

    $fields = array('_type'=>'notification-history-request',
                    'serial-number'=>urlencode($sn));

                    $fields_string = "";
                    foreach($fields as $key=>$value) {
                         $fields_string .= $key.'='.$value.'&'; 
                    }

                    rtrim($fields_string, '&');

                    $ch = curl_init();
                    curl_setopt($ch, CURLOPT_URL, 'https://checkout.google.com/api/checkout/v2/reportsForm/Merchant/8048xxx');
                    curl_setopt($ch, CURLOPT_POST, count($fields));
                    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);

                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic ' . base64_encode($id . ':' . $key), 'Content-Type: application/xml;charset=UTF-8', 'Accept: application/xml;charset=UTF-8'));
                    $result = curl_exec($ch);
                    if(curn_errno($ch)){
                        $w = fopen('log.text', 'w+');
                        fwrite($w, 'Error: ' . curl_error($ch));
                        fclose($w);
                    } else {
                        $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
                        $f = fopen('test.txt', 'w+');
                        fwrite($f, 'Status: ' . $status . ' ' . print_r($result, true));
                        fclose($f);
                    }
                    curl_close($ch);
   }

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-24 00:08:52

要获取回购状态信息和商家私有数据,您需要监听发送到您的回调URL的通知。请参考下面的文档,了解如何与Checkout Notifications API集成。

http://support.google.com/checkout/sell/bin/answer.py?hl=en&answer=70647

http://support.google.com/checkout/sell/bin/answer.py?hl=en-GB&answer=134463

https://developers.google.com/checkout/developer/Google_Checkout_XML_API_Notification_API

当您收到通知时,从merchant-private-data字段中读取您的自定义数据。

有关类似问题的解决方案,请参阅此answer

您可能还想看看各种语言的Checkout示例代码库:

https://developers.google.com/checkout/samplecode

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

https://stackoverflow.com/questions/11604621

复制
相关文章

相似问题

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