谷歌钱包回发网址电子邮件,相当格式JWT响应stdClass对象PHP电子邮件

时间:2014-07-03 17:30:14

标签: php postback html-email android-pay jwt

如何将这种文本格式从PHP对象中的JWT Response转换为HTML格式的print_r格式。

我已经尝试了

    //Pretty format plain-text to HTML.
    $message = preg_replace("\n\r?\n", "</p><p>", htmlspecialchars($message));

正如在stackoverflow上的另一个纯文本到HTML转换主题中所建议的那样。它完全没有向$ message返回任何内容,并在电子邮件中发送一个空白的身体。

以下是当前代码:

<?php
    require_once ('myprivatekeys.php');
    //JWT class to encode/decode payload into JWT format. */
    include_once "googlecheckout/JWT.php";

    // From: http://stackoverflow.com/a/11225015/270712
    $response = isset($HTTP_RAW_POST_DATA) ?
    $HTTP_RAW_POST_DATA : file_get_contents("php://input");
    $response = substr_replace($response, "", 0, 4);   //remove "jwt=" from raw http data
    $response = JWT::decode($response, $MerchantSecretKey);
    print_r($response->response->orderId);

    $subject = "Google Order Transaction waiting to be charged!";
    $message = print_r($response, true);
    $message .= "<br><B>Google Order waiting to be charged.</B>";

    //Pretty format plain-text to HTML.
    $message = preg_replace("\n\r?\n", "</p><p>", htmlspecialchars($message));

    // message lines should not exceed 70 characters (PHP rule), so wrap it
    $message = wordwrap($message, 70);
    // Always set content-type when sending HTML email
    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type:text/html;charset=UTF-8\r\n";
    // More headers
    $headers .= "From: <GoogleSales@website.com>\r\n";
    // send mail
    mail($emailTo,$subject,$message,$headers);
?>

以下是目前电子邮件在Google电子钱包中成功订购的方式。

stdClass Object ( [iss] => Google [request] => stdClass Object ( [description] => Private [name] => Buy 2123 [price] => 1592.25 [currencyCode] => USD ) [response] => stdClass Object ( [orderId] => GWDG_S.c2b69e16-30a0-4578-ab6c-b89acb1fc9bf ) [typ] => google/payments/inapp/item/v1/postback/buy [aud] => 04183051302638724136 [iat] => 1404407507 [exp] => 1404407527 )

     Google订单等待收费。

好的,你无法在这个问题中看到它,我会发布截图。

screenshot

P.S.&GT;如果我无法在一行中做任何事情,我最终会这样做,

我不想走这条路,因为变量可能会随时发生变化而且由于商家服务器错误而导致订单丢失!!!

有没有办法迭代所有变量的整个JWT响应并以某种方式循环它们?

$message .="currencyCode => ". $response->currencyCode . "<BR>";
$message .="Typ => ". $response->response->typ. "<BR>";
etc.. etc..

1 个答案:

答案 0 :(得分:0)

解决了问题并学习了一个新的HTML命令<pre>代表预格式化文本),可能很多人都不知道这个,但是如果你抛出那个其中的标签在任何现代浏览器中都可以将纯文本呈现为HTML,这可能是HTML5的新功能之一哈哈,我想我得到了我不应该阅读这些更改日志的内容。

固定代码:

$message .=  "<pre>".print_r($response, true)."</pre>";