PHP 위 챗 환불 신청 절차 인 스 턴 스 코드 구현
초기 준비:
당연히 위 챗 결 제 를 해 결 했 습 니 다.그렇지 않 으 면 어떻게 환불 하 는 지,이번 에는 공식 demo 를 사용 하 겠 습 니 다.물론 인터넷 에 도 많은 신 들 이 스스로 demo 를 다시 쓰 고 포장 했다.아마 더욱 간결 하 게 사용 하기 좋 을 것 이다.그러나 나 는 사용 하 는 것 을 제창 하지 않 는 다.그 이 유 는 다음 과 같다.
(1)기능 이 불완전 할 수 있 습 니 다.그 는 위 챗 결제 만 실 현 했 을 수도 있 습 니 다.그러나 환불 신청,환불 조회,주문 조회,주문 취소 등 업무 기능 도 추 후 필요 할 수 있 습 니 다.만약 에 대 신의 SDK 에 의존 하 는 편리 함 이 있 으 면 새로운 업무 수요 가 있 으 면 어 리 석 습 니 다.
(2)안전 을 고려 할 때 지불 과 관련 된 돈 은 반드시 안전 해 야 한다.공식 SDK 는 나 도 토 설 했 지만 적어도 상대 적 으로 안전 할 것 이 고 다시 쓰 는 것 은 당분간 문 제 를 눈치 채 지 못 했 지만 혹시 라 도 허점 이 있 으 면 좋 지 않 을 것 이다.
이 편 은 공식 적 으로 제공 하 는 SDK 에서 가장 중요 한 파일 인 WxPay.api.php 에서 제공 하 는 refund()방법 으로 이 루어 집 니 다.이 방법 은 WxPay.api.php 파일 의 141 줄 에 있 습 니 다.코드 는 다음 과 같 습 니 다.
/**
*
* ,WxPayRefund out_trade_no、transaction_id
* out_refund_no、total_fee、refund_fee、op_user_id
* appid、mchid、spbill_create_ip、nonce_str
* @param WxPayRefund $inputObj
* @param int $timeOut
* @throws WxPayException
* @return ,
*/
public static function refund($inputObj, $timeOut = 6){
$url = "https://api.mch.weixin.qq.com/secapi/pay/refund";
//
if(!$inputObj->IsOut_trade_noSet() && !$inputObj->IsTransaction_idSet()) {
throw new WxPayException(" ,out_trade_no、transaction_id !");
}else if(!$inputObj->IsOut_refund_noSet()){
throw new WxPayException(" , out_refund_no!");
}else if(!$inputObj->IsTotal_feeSet()){
throw new WxPayException(" , total_fee!");
}else if(!$inputObj->IsRefund_feeSet()){
throw new WxPayException(" , refund_fee!");
}else if(!$inputObj->IsOp_user_idSet()){
throw new WxPayException(" , op_user_id!");
}
$inputObj->SetAppid(WxPayConfig::APPID);// ID
$inputObj->SetMch_id(WxPayConfig::MCHID);//
$inputObj->SetNonce_str(self::getNonceStr());//
$inputObj->SetSign();//
$xml = $inputObj->ToXml();
$startTimeStamp = self::getMillisecond();//
$response = self::postXmlCurl($xml, $url, true, $timeOut);
$result = WxPayResults::Init($response);
self::reportCostTime($url, $startTimeStamp, $result);//
return $result;
}
공식 적 인 방법 은 어떤 매개 변수 가 필요 한 지 잘 쓰 여 있 고 필요 한 매개 변수 인 SDK 가 우리 에 게 보완 해 주 었 습 니 다.저 는 이 방법 을 다시 포장 해서 프로젝트 에서 호출 할 수 있 습 니 다.
/**
*
* @param string $order_id ID
* @return (array ),
*/
function wxRefund($order_id){
// SDK Api
require_once APP_ROOT."/Api/wxpay/lib/WxPay.Api.php";
// ,
$order = M('order')->where(array('id'=>$order_id,'is_refund'=>2,'order_status'=>1))->find();
$merchid = WxPayConfig::MCHID;
if(!$order) return false;
$input = new WxPayRefund();
$input->SetOut_trade_no($order['order_sn']); //
$input->SetTransaction_id($order['transaction_id']); // ,
$input->SetOut_refund_no(getrand_num(true)); //
$input->SetTotal_fee($order['total_price']); // ,
$input->SetRefund_fee($order['total_price']); // , , ,
$input->SetOp_user_id($merchid);
$result = WxPayApi::refund($input); //
// file_put_contents
//file_put_contents(APP_ROOT.'/Api/wxpay/logs/log3.txt',arrayToXml($result),FILE_APPEND);
return $result;
}
여기 서 말 을 해 야 합 니 다.반환 값 의 유형 은 말 하지 않 고 지불 할 때 XML 데 이 터 를 되 돌려 주 었 습 니 다.여기 서 배열 을 되 돌려 주 었 습 니 다.당 황 스 럽 습 니 다.하하 하지만 배열 로 돌아 가 는 것 이 좋 습 니 다.직접 판단 하여 처리 할 수 있 습 니 다.방법 호출 은 더욱 간단 하 다.
//
$result = wxRefund($order_id);
// file_put_contents
//file_put_contents(APP_ROOT.'/Api/wxpay/logs/log4.txt',arrayToXml($result),FILE_APPEND);
if(($result['return_code']=='SUCCESS') && ($result['result_code']=='SUCCESS')){
//
}else if(($result['return_code']=='FAIL') || ($result['result_code']=='FAIL')){
//
//
$reason = (empty($result['err_code_des'])?$result['return_msg']:$result['err_code_des']);
}else{
//
}
환불 성공 반환 은 다음 과 같 습 니 다.친 측 오류 없 음:이것 은 공식 SDK 를 통합 하여 이 루어 진 것 입 니 다.SDK 를 사용 하지 않 으 면 더욱 간단 한 방법 을 사용 할 수 있 습 니 다.PHP 는 위 챗 결제(jsapi 결제)와 환불(통합 결제 SDK 필요 없 음)을 실현 합 니 다.
총결산
위 에서 말씀 드 린 것 은 소 편 이 소개 한 PHP 구현 위 챗 환불 신청 절차 인 스 턴 스 코드 입 니 다.여러분 께 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 이 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.