self::REQUEST_URL, 'timeout' => 5.0, ]); } // 签名 public static function signature($params = [],$must = []) { if($must){ foreach($params as $k => $v){ if(!in_array($k,$must)){ unset($params[$k]); } } } ksort($params, SORT_STRING); var_dump($params); $parts = []; foreach($params as $k => $v){ array_push($parts,$k.'='.$v); } $mch_key = self::getSecret(); $parts[] = "key=".$mch_key; var_dump(implode('&',$parts)); $sign = md5(implode('&',$parts)); return $sign; } /** * @description: 发起支付订单 * @param {*} $amount 金额单位分 * @param {*} $orderNo 订单号 * @param {*} $type 支付通道 * @return {*} */ public static function pay($amount,$orderNo,$type = self::PRODUCT_TEST) { $must = ['mchId','productId','outTradeNo','amount','reqTime','notifyUrl']; $mch_id = self::getMerchantId(); $data = []; $data['mchId'] = $mch_id; $data['amount'] = $amount; $data['outTradeNo'] = $orderNo; $data['notifyUrl'] = self::getNotifyUrl(); $data['reqTime'] = time() * 1000; $data['productId'] = $type; $data['sign'] = self::signature($data,$must); $client = self::getClient(); $response = $client->post('api/v1/pay/unifiedOrder', [ 'json' => $data, 'headers' => [ 'Content-Type' => 'application/json', ] ]); $body = $response->getBody(); return json_decode($body->getContents(), true); } }