위 챗 결제 개발 주문 조회 인 스 턴 스

특정한 기술 의 원인 으로 인해 업 체 가 예상 시간 내 에 최종 지불 통 지 를 받 지 못 할 수 있 습 니 다.이때 업 체 는 이 API 를 통 해 주문 의 상세 한 지불 상 태 를 조회 할 수 있 습 니 다.
주문 조회 API 의 URL 은:

https://api.weixin.qq.com/pay/orderquery?access_token=xxxxxx
URL 의 매개 변 수 는 현재 위 챗 공식 플랫폼 증빙 access 만 포함 합 니 다.token,주문 조회 의 실제 데 이 터 는 PostData 에 놓 여 있 습 니 다.형식 은 다음 과 같 습 니 다.
{
    "appid" : "wwwwb4f85f3a797777",
    "package" : "out_trade_no=11122&partner=1900090055&sign=4e8d0df3da0c3d0df38f",
    "timestamp" : "1369745073",
    "app_signature" : "53cca9d47b883bd4a5c85a9300df3da0cb48565c",
    "sign_method" : "sha1"
}
상기 내용 의 매개 변 수 는 표 와 같다.
매개 변수
설명 하 다.
appid
공중 플랫폼 계 정의 AppId;
package
주문 의 관건 적 인 정보 데 이 터 를 조회 하고 제3자 의 유일한 주문 번호 out 를 포함 합 니 다.trade_통상 호신П엽 partner(즉 앞에서 말 한 partnerid),서명 sign 입 니 다.그 중에서 sign 은 매개 변수 사전 순 서 를 정렬 하고 사용&연합 합 니 다.마지막 으로&key=partnerkey(유일한 배분)를 더 해 md5 연산 을 한 다음 에 전체 대문자 로 전환 하여 sign 을 얻 습 니 다.
timestamp
linux 시간 스탬프;
app_signature
결제 서명(paysign)생 성 방법 에서 말 한 서명 방식 에 따라 생 성 된 서명 필드 는 appid,appkey,package,timestamp 입 니 다.
sign_method
서명 방법(서명 생 성 을 계산 하지 않 음);
 2.세부 사항 실현
1.access token 획득
이 건 쉬 워 요.위 챗 공식 플랫폼 개발(26)ACCESS TOKEN 참고 하 세 요.
코드 는 다음 과 같 습 니 다:

$appid = "wx0000000000000000";
$appsecret = "e76050733c695748537fc4d4c21d0e2c";
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
$result = https_request($url);
$jsoninfo = json_decode($result, true);
$access_token = $jsoninfo["access_token"];
2.매개 변수 생 성
appid:직접 할당
timestamp:프로그램 직접 가 져 오기

$timestamp = time();
 sign_method:여 기 는 sha 1 입 니 다.
 난점 1:package 값 획득
 싸 인 을 먼저 받 아야 합 니 다.
 sign 은 outtrade_no,partner,key(partnerkey)세 가지 정보의 사전 순서 정렬,MD5 연산,대문자 로 전환

$sign= strtoupper(md5("out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&key=ebf5cf381de2d716d432bfda34fa9e57"));
 package 는 주문 서 를 조회 하 는 관건 적 인 정보 데이터 로 제3자 의 유일한 주문 번호 out 를 포함 합 니 다.trade_통상 호신П엽 partner(즉 앞에서 말 한 partnerid),서명 sign

$package = "out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&sign=".$sign;
난점 2:app 획득signature
app_signature 는 여전히 결제 서명(paySign)생 성 방법 에서 말 한 서명 방식 에 따라 생 성 되 었 습 니 다.서명 필드 는 appid,appkey,package,timestamp 입 니 다.

$obj['appid']   = "wx0000000000000000";
$obj['appkey']   = "8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6k";
$obj['package']  = $package;
$obj['timestamp']  = $timestamp;
$WxPayHelper->get_biz_sign($obj);
이렇게 각 항목 의 매개 변 수 를 모두 얻 었 다.
3.조회 제출

$jsonmenu = '
{
 "appid" : "wx0000000000000000",
 "package" : "'.$package.'",
 "timestamp" : "'.$timestamp.'",
 "app_signature" : "'.$app_signature.'",
 "sign_method" : "sha1"
}
';

$url = "https://api.weixin.qq.com/pay/orderquery?access_token=".$access_token;
$result = https_request($url, $jsonmenu);
var_dump($result);
전체 코드 는 다음 과 같다.

include_once("WxPayHelper.php");

//1.   access token
$appid = "wx0000000000000000";
$appsecret = "e76050733ce76050733ce76050733cdd";
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
$result = https_request($url);
$jsoninfo = json_decode($result, true);
$access_token = $jsoninfo["access_token"];


//2.    
$timestamp = time();
$sign= strtoupper(md5("out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&key=asdfasdfasdfasdfasdfasdfasdfasdf"));
$package = "out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&sign=".$sign;

//2.1      app_signature
$obj['appid']   = "wx0000000000000000";
$obj['appkey']   = "8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6k";
$obj['package']  = $package;
$obj['timestamp']  = $timestamp;
$WxPayHelper = new WxPayHelper();
//get_biz_sign     ,       ,     
$app_signature = $WxPayHelper->get_biz_sign($obj);

//3.     json        ,  
$jsonmenu = '
{
 "appid" : "wx0000000000000000",
 "package" : "'.$package.'",
 "timestamp" : "'.$timestamp.'",
 "app_signature" : "'.$app_signature.'",
 "sign_method" : "sha1"
}
';

$url = "https://api.weixin.qq.com/pay/orderquery?access_token=".$access_token;
$result = https_request($url, $jsonmenu);
var_dump($result);

function https_request($url, $data = null){
 $curl = curl_init();
 curl_setopt($curl, CURLOPT_URL, $url);
 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
 if (!empty($data)){
  curl_setopt($curl, CURLOPT_POST, 1);
  curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
 }
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 $output = curl_exec($curl);
 curl_close($curl);
 return $output;
}
3.주문 결과
상기 절 차 를 실행 한 후 주문 결 과 는 다음 과 같다.

{
 "errcode": 0,
 "errmsg": "ok",
 "order_info": {
  "ret_code": 0,
  "ret_msg": "",
  "input_charset": "GBK",
  "trade_state": "0",
  "trade_mode": "1",
  "partner": "1234567890",
  "bank_type": "CMB_FP",
  "bank_billno": "201405273540085997",
  "total_fee": "1",
  "fee_type": "1",
  "transaction_id": "1218614901201405273313473135",
  "out_trade_no": "JfuKdiBig4zZnE4n",
  "is_split": "false",
  "is_refund": "false",
  "attach": "",
  "time_end": "20140527194139",
  "transport_fee": "0",
  "product_fee": "1",
  "discount": "0",
  "rmb_total_fee": ""
 }
}
각 필드 의 의 미 는 표 와 같다.
매개 변수
설명 하 다.
ret_code
조회 결과 상태 코드,0 은 성공 을 나타 내 고 다른 것 은 오 류 를 나타 낸다.
ret_msg
결과 오류 정보 조회 하기;
input_charset
정보 에 있 는 인 코딩 방식 되 돌리 기;
trade_state
주문 상태,0 은 성공,기타 실패;
trade_mode
거래 모델,1 은 즉시 입금,기타 보류;
partner
재부 통상 호,즉 앞의 partnerid;
bank_type
은행 유형;
bank_billno
은행 주문 번호;
total_fee
총 금액,단 위 는 분 리 됩 니 다.
fee_type
화폐 종 류 는 1 위안 이다.
transaction_id
돈 지불 주문 번호;
out_trade_no
제3자 주문 번호;
is_split
분개장 여 부 는 false 는 무 분개장 이 고 true 는 분개장 이 있 습 니 다.
is_refund
환불 여부,false 는 환불 이 없 으 며,ture 는 환불 입 니 다.
attach
상점 데이터 패키지,즉 주문 패 키 지 를 생 성 할 때 상점 이 기입 한 attach;
time_end
완료 시간 지불;
transport_fee
물류 비용 은 단위 별로 나눈다.
product_fee
물품 비용 은 단위 별로 나눈다.
discount
할인 가격 은 단위 별로 나눈다.
rmb_total_fee
인민폐 로 환산 한 후의 총 금액,단 위 는 분,일반적으로 totalfee 면 됩 니 다.
프로그램 이 잘못 되면 errcode 와 errmsg 에서 설명 합 니 다.
위 챗 개발 에서 조회 기능 에 대한 자 료 를 정리 하고 위 챗 개발 결제 에 도움 이 되 고자 하 는 친구 입 니 다.

좋은 웹페이지 즐겨찾기