Example #1
0
function pay($mchid, $appid, $no, $payurl, $openid, $money, $desc = '美啦啦砸金蛋活动')
{
    //签名参与参数
    $parameters = ['partner_trade_no' => $mchid . date('Ymd') . $no, 'mchid' => $mchid, 'mch_appid' => $appid, 'openid' => $openid, 'check_name' => 'NO_CHECK', 'amount' => $money, 'desc' => $desc, 'spbill_create_ip' => '124.172.237.174', 'nonce_str' => createNoncestr()];
    $sign = getSign($parameters);
    //获取签名
    $parameters['sign'] = $sign;
    $xml = arrayToXml($parameters);
    //生成请求XML
    return postXmlSSLCurl($xml, $payurl);
}
Example #2
0
function arrayToXml($data, $rootNodeName = 'data', $xml = null)
{
    if (ini_get('zend.ze1_compatibility_mode') == 1) {
        ini_set('zend.ze1_compatibility_mode', 0);
    }
    if (is_null($xml)) {
        $xml_str = "<?xml version='1.0' encoding='utf-8'?><{$rootNodeName} />";
        $xml = simplexml_load_string($xml_str);
    }
    foreach ($data as $key => $value) {
        if (is_numeric($key)) {
            $key = "item_" . (string) $key;
        }
        $key = preg_replace('/[^a-z]/i', '', $key);
        if (is_array($value)) {
            $node = $xml->addChild($key);
            arrayToXml($value, $rootNodeName, $node);
        } else {
            $value = htmlentities($value);
            $xml->addChild($key, $value);
        }
    }
    return $xml->asXML();
}
Example #3
0
 /**
 @param	array	array to be turned into xml
 @param	depth	internal use
 */
 static function toXml($array, $depth = 0)
 {
     foreach ($array as $k => $v) {
         if (is_array($v)) {
             $v = arrayToXml($v);
         }
         $ele[] = str_repeat("\t", $depth) . '<' . $k . '>' . $v . '</' . $k . '>';
     }
     return implode("\n", $ele);
 }
Example #4
0
 private function arrayToXml(SimpleXMLElement $xml, array $array)
 {
     foreach ($array as $k => $v) {
         if (is_array($v)) {
             arrayToXml($xml->addChild($k), $v);
         } else {
             $xml->addChild($k, $v);
         }
     }
     return $xml;
 }
 public function alarmnotify()
 {
     $post_data = $GLOBALS['HTTP_RAW_POST_DATA'];
     \Think\Log::record("alarmnotify" . $post_data);
     $result = xmlToArray($post_data);
     $resp = true;
     $respdata["return_code"] = "SUCCESS";
     $respdata["return_msg"] = "";
     $map["appid"] = $result["appid"];
     $map["mch_id"] = $result["mch_id"];
     $map["openid"] = $result["openid"];
     $map["out_trade_no"] = $result["out_trade_no"];
     // while (true) {  //alarmnotify和orderpaid调用时序无保证,未将历史订单的支付流水写入订单表就一直循环
     $orderdata = M("mall_order_his")->where($map)->order('id DESC')->find();
     if ($orderdata["id"] != "") {
         //已经记录过的订单数据
         $map1["openid"] = $orderdata["openid"];
         $map1["dcnum"] = $orderdata["out_trade_no"];
         //TODO:进行安全校验,修订订单支付状态
         $dddata = M("ml_mall_order")->where($map1)->order('id asc')->find();
         if ($dddata["statekz"] == "0" || $dddata["statekz"] == "1") {
             //未支付,设置为已支付,没有记录交易流水的将交易流水写入订单表
             M("mall_order")->where($map1)->save(array("statekz" => 1, "transaction_id" => $orderdata["transaction_id"]));
         }
         if ($resp == true) {
             //根据不同的错误设置返回数据
             return arrayToXml($respdata);
         } else {
             return arrayToXml($respdata);
         }
     } else {
         $order = M("mall_order_his");
         /* 保存附件 */
         if ($order->create($result) && $order->add()) {
             $resp = true;
         } else {
             $resp = false;
             $respdata["return_msg"] = "保存订单数据错误";
         }
     }
 }
Example #6
0
/**
 * 调用api接口
 * @param url $apiurl api.muxiangdao.cn/Article/articleList
 * @param array $param ['status'=>'1','page'=>'2','pageshow'=>'10'];
 * @param string $format eg:array(arr),object(obj),json;defalut = array
 */
function get_api($apiurl, $param, $format = 'array')
{
    if (is_array($param)) {
        $string = '?';
        foreach ($param as $key => $val) {
            $string .= $key . '=' . $val . '&';
        }
        $param = substr($string, 0, -1);
    }
    $url = $apiurl . $param;
    $json = get_url($url);
    $start = strpos($json, '{');
    $end = -1 * (strlen(strrchr($json, '}')) - 1);
    if ($end) {
        $json = substr($json, $start, $end);
    } else {
        $json = substr($json, $start);
    }
    $obj = json_decode($json);
    $array = object_to_array($obj);
    $xml = arrayToXml($array);
    switch ($format) {
        case 'array':
            $data = $array;
            break;
        case 'arr':
            $data = $array;
            break;
        case 'obj':
            $data = $obj;
            break;
        case 'object':
            $data = $obj;
            break;
        case 'json':
            $data = $json;
            break;
        default:
            $data = $array;
    }
    return $data;
}
Example #7
0
 function arrayToXml($array, &$xml)
 {
     foreach ($array as $key => $value) {
         if (is_array($value)) {
             if (is_int($key)) {
                 $key = "e";
             }
             $label = $xml->addChild($key);
             arrayToXml($value, $label);
         } else {
             $xml->addChild($key, $value);
         }
     }
 }
Example #8
0
 /**
  * Ajax返回
  * 
  * @param $data
  * @param $format (json or xml)
  * @return default json
  */
 public function ajaxReturn($data, $format = 'json')
 {
     $format = strtolower($format);
     if (empty($format) || $format == 'json') {
         $rs = json_encode($data);
     } else {
         if ($format == 'xml') {
             $rs = arrayToXml($data);
         } else {
             $rs = '不支持的数据格式:' . $format;
         }
     }
     print_r($rs);
 }