PHP 가 위 챗 H5 에 접속 하여 지불 하 는 방법 예시
코드 접속 을 하기 전에 위 챗 배경 에 도 메 인 이름 을 되 돌 릴 수 있 는 권한 을 부여 해 야 합 니 다.이 도 메 인 이름 은 반드시 ICP 를 거 쳐 등록 해 야 합 니 다.
개발 주요 절차
정식 개발
위 챗 결 제 를 조정 하고 필요 한 매개 변수 만 설명 합 니 다.
위 챗 의 단일 인터페이스 통일 을 요청 합 니 다.인터페이스 주소:https://api.mch.weixin.qq.com/pay/unifiedorder
인터페이스 요청 파라미터
서명 생 성
코드:
/**
*
* @param array $params
* @param string $key
*/
public function genSign($params, $key)
{
foreach ($params as $k=>$v) {
if (!$v) {
unset($params[$k]);
}
}
ksort($params);
$paramStr = '';
foreach ($params as $k => $v) {
$paramStr = $paramStr . $k . '=' . $v . '&';
}
$paramStr = $paramStr . 'key='.$key;
$sign = strtoupper(md5($paramStr));
return $sign;
}
요청 을 하 다매개 변 수 를 XML 데이터 로 변환 하면 요청 할 수 있 습 니 다.
배열 을 XML 코드 로 변환:
/**
* XML
* @param array $params
*/
public function array_to_xml($params)
{
if(!is_array($params)|| count($params) <= 0) {
return false;
}
$xml = "<xml>";
foreach ($params as $key=>$val) {
if (is_numeric($val)) {
$xml.="<".$key.">".$val."</".$key.">";
} else {
$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
}
}
$xml.="</xml>";
return $xml;
}
요청 코드:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
$return = curl_exec($ch);
curl_close($ch);
return $return;
위 챗 은 XML 데 이 터 를 되 돌려 줍 니 다.
<xml><return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
<appid><![CDATA[wxdded766660f9b840]]></appid>
<mch_id><![CDATA[1516216351]]></mch_id>
<device_info><![CDATA[100]]></device_info>
<nonce_str><![CDATA[2DUN2i2pGnlC6vDi]]></nonce_str>
<sign><![CDATA[95CEA831D598299097A32D8FEEC6BDEF]]></sign>
<result_code><![CDATA[SUCCESS]]></result_code>
<prepay_id><![CDATA[wx22194530678545eb3713f2f10724143329]]></prepay_id>
<trade_type><![CDATA[MWEB]]></trade_type>
<mweb_url><![CDATA[https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx22194530678545eb3713f2f10724143329&package=87106983]]></mweb_url>
return_code 는 SUCCESS 대표 에 게 지불 요청 이 성공 하 였 습 니 다.mweb_url 은 지불 을 위해 페이지 를 돌 립 니 다.이때 클 라 이언 트 는 mweb 을 통 해url 은 이미 위 챗 결 제 를 조정 할 수 있 습 니 다.
중간 처리
위 챗 을 받 고 돌아 오 는 mweburl 매개 변수 후 서버 에서 deepLink 를 더 얻 을 수 있 습 니 다.
코드:
/**
* deepLink
* @param string $url mweb_url
* @param string $ip IP
*/
public function getDeeplink(string $url, string $ip)
{
$headers = array("X-FORWARDED-FOR:$ip", "CLIENT-IP:$ip");
ob_start();
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_HTTPHEADER , $headers );
curl_setopt ($ch, CURLOPT_REFERER, "pay.o9di.cn");
curl_setopt( $ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Linux; Android 6.0.1; OPPO R11s Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36');
curl_exec($ch);
curl_close ($ch);
$out = ob_get_contents();
ob_clean();
$a = preg_match('/weixin:\/\/wap.*/',$out, $str);
if ($a) {
return substr($str[0], 0, strlen($str[0])-1);
} else {
return '';
}
}
weixin://wap/pay?prepayid%3Dwx22201221074146ac747121890095299503&package=2656135616&noncestr=1542888966&sign=e31dbc2d1231708ff8a982b15a6c7646즉,얻 은 deepLink 값 을 위해 클 라 이언 트 도 이 값 을 통 해 직접 지불 할 수 있 습 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.