Ejemplo n.º 1
0
 public static function payToChange($mchid, $appId, $signKey, $openid, $amount, $desc, $selfIp, $apiClientCertPem, $apiClientKeyPem, $rootcaPem)
 {
     if (empty($mchid) || empty($appId) || empty($signKey) || empty($openid) || empty($amount) || empty($desc) || empty($selfIp) || empty($apiClientCertPem) || empty($apiClientKeyPem) || empty($rootcaPem)) {
         Log::error('wxpay tochange - params error! ' . json_encode(func_get_args()));
         return false;
     }
     $data = array('nonce_str' => Util::getRandomStr(32), 'mch_appid' => $appId, 'mchid' => $mchid, 'partner_trade_no' => $mchid . date('Ymd') . mt_rand(1000000000, 1999999999), 'check_name' => 'NO_CHECK', 'openid' => $openid, 'amount' => $amount, 'spbill_create_ip' => $selfIp, 'desc' => $desc);
     $data['sign'] = self::sign($data, $signKey);
     $postXml = Util::arrayToXml($data);
     $responseXml = HttpUtil::postSSL('https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers', $postXml, $apiClientCertPem, $apiClientKeyPem, $rootcaPem);
     if ($responseXml === false) {
         return false;
     }
     libxml_disable_entity_loader(true);
     $ret = simplexml_load_string($responseXml, 'SimpleXMLElement', LIBXML_NOCDATA);
     $ret = json_decode(json_encode($ret), true);
     if ($ret['return_code'] != 'SUCCESS') {
         Log::pay('wxpay tochange error - return_code FAIL, err=' . json_encode($ret, JSON_UNESCAPED_UNICODE) . ' data=' . json_encode(func_get_args(), JSON_UNESCAPED_UNICODE));
         return false;
     }
     if ($ret['result_code'] != 'SUCCESS') {
         Log::pay('wxpay tochange error - result_code FAIL, err=' . json_encode($ret, JSON_UNESCAPED_UNICODE) . ' data=' . json_encode(func_get_args(), JSON_UNESCAPED_UNICODE));
         if ($ret['err_code'] == 'NOTENOUGH') {
             // TODO
         }
         return false;
     }
     return $ret;
 }