ThinkpHP 프레임 워 크 가 실 현 된 위 챗 결제 인터페이스 개발 의 전체 예시
8735 단어 ThinkPHP위 챗 페 이 먼 트
위 챗 결제 인터페이스 개발 은 간단 합 니 다.우 리 는 공식 적 으로 권한 을 신청 한 다음 에 공식 적 인 글 을 참고 하면 결제 개발 을 실현 할 수 있 습 니 다.다음은 간단 한 예 를 들 어 구체 적 으로 다음 과 같 습 니 다.
최근 에 한 마이크로 상점 에서 위 챗 결제 인 터 페 이 스 를 만 들 었 는데 지금 정리 해서 보 내 주세요.
우선 위 챗 결제 인터페이스 가 개 통 된 공식 번호 가 필요 합 니 다.이 는 모두 가 알 고 있 을 것 입 니 다.개통 후에 위 챗 은 메 일 로 메 일 을 보 낼 것 입 니 다.메 일의 내용 은 필요 한 인터페이스 정 보 를 개발 하 는 것 입 니 다(계 정 비밀번호 같은 것 포함).
개발 절차
1.공공 번호 플랫폼 에 들 어가 면 도 메 인 이름 바 인 딩,리 셋 주소 설정 등 몇 가지 인 자 를 설정 합 니 다.
1.설정 중->공중 번호 설정->기능 설정->JS 인터페이스 보안 도 메 인 설정
2.위 챗 결제->개발 설정->js 결제 인터페이스,리 셋 주소 등 을 설정 합 니 다.정식 디 렉 터 리 와 테스트 디 렉 터 리 를 모두 쓸 수 있 습 니 다.테스트 디 렉 터 리 는 개인 마이크로 신 호 를 화이트 리스트 에 먼저 추가 해 야 사용 할 수 있 습 니 다.(알림:TP 프레임 워 크 의 어린 파트너 들 이 결제 권한 디 렉 터 리 를 작성 할 때 이렇게 작성 할 수 있 습 니 다.도 메 인 이름/index.php/컨트롤 러/테스트 를 통 해 통과 할 수 있 습 니 다.위 챗 에서 도 확인 할 수 있 습 니 다.예전 에 인터넷 에서 이러 면 안 된다 는 말 을 들 었 는데 지금 업 그 레이 드 된 것 같 습 니 다.하하,그리고 하 나 는 도 메 인 이름 이 반드시 준비 되 어 있어 야 합 니 다.만약 에 현지에서 테스트 를 하 는 친구 들 이 땅콩 껍질 을 사용 할 수 있다 면 저 는 광 고 를 하 는 것 이 아니 라 개인 적 으로 좋 을 것 같 습 니 다)
3.개발 자 센터 에서“웹 페이지 권한 부여 사용자 기본 정보&rdquo 획득;도 메 인 이름 에 자신의 도 메 인 이름 을 쓰 고 위 챗 로그 인 에 필요 한 것;
2.위 에 가서 큰 걸음 으로 설치 한 후에 우리 의 개발 작업 을 시작 할 수 있 습 니 다.
1.TP 를 사용 하 는 친구 들 은 아래 의 가방 으로 tp 의 확장 에 넣 을 수도 있 고 홈 페이지 에서 sdk 가방 을 다운로드 할 수도 있 습 니 다.구체 적 인 디 렉 터 리:ThinkpHP\Library\Vendor\,다른 것 은 상관 하지 않 아 도 됩 니 다.
2.가방 에 있 는 WxPayPubConfig.php 파일 을 열 고 위 챗 결제 의 인터페이스 정 보 를 작성 하면 됩 니 다.
3.위의 두 번 째 단 계 는 모두 설정 입 니 다.이 단 계 는 결제 류 를 쓰 는 것 입 니 다.사실은 아무것도 아 닙 니 다.복사 해서 붙 여 넣 으 면 됩 니 다.
1.Wxpay 컨트롤 러 를 새로 만 듭 니 다.물론 이름 을 지 을 수도 있 습 니 다.방문 하 는 이름 은 위 챗 에 설 정 된 인증 디 렉 터 리 와 같 으 면 됩 니 다.클릭 하여 Wxpay 다운로드
2.코드 의 부분 은 더 이상 말 하지 않 고 아래 에 코드 를 직접 올 립 니 다.
<?php
namespace Home\Controller;
use Think\Controller;
//
class WxpayController extends Controller {
// access_token uri, code jsapi
public function js_api_call() {
$order_sn = I('get.order_sn', '');
if (empty($order_sn)) {
header('location:'.__ROOT__.'/');
}
vendor('Weixinpay.WxPayPubHelper');
// jsapi
$jsApi = new \JsApi_pub();
//========= 1: openid============
// code openid
if (!isset($_GET['code'])){
// code
$url = $jsApi->createOauthUrlForCode(' /Wxpay/js_api_call?order_sn='.$order_sn);
//$url = $jsApi->createOauthUrlForCode(\WxPayConf_pub::JS_API_CALL_URL);
Header("Location: $url");
}else{
// code , openid
$code = $_GET['code'];
$jsApi->setCode($code);
$openid = $jsApi->getOpenId();
}
$res = array(
'order_sn' => '20150109113322',
'order_amount' => 255
);
//========= 2: , prepay_id============
//
$unifiedOrder = new \UnifiedOrder_pub();
//
//
//appid ,
//mch_id ,
//noncestr ,
//spbill_create_ip ,
//sign ,
$total_fee = $res['order_amount']*100;
//$total_fee = 1;
$body = " {$res['order_sn']}";
$unifiedOrder->setParameter("openid", "$openid");//
$unifiedOrder->setParameter("body", $body);//
// ,
$out_trade_no = $res['order_sn'];
$unifiedOrder->setParameter("out_trade_no", $out_trade_no);//
$unifiedOrder->setParameter("total_fee", $total_fee);//
//$unifiedOrder->setParameter("attach", "order_sn={$res['order_sn']}");//
$unifiedOrder->setParameter("notify_url", \WxPayConf_pub::NOTIFY_URL);//
$unifiedOrder->setParameter("trade_type", "JSAPI");//
// ,
//$unifiedOrder->setParameter("sub_mch_id","XXXX");//
//$unifiedOrder->setParameter("device_info","XXXX");//
//$unifiedOrder->setParameter("attach","XXXX");//
//$unifiedOrder->setParameter("time_start","XXXX");//
//$unifiedOrder->setParameter("time_expire","XXXX");//
//$unifiedOrder->setParameter("goods_tag","XXXX");//
//$unifiedOrder->setParameter("openid","XXXX");//
//$unifiedOrder->setParameter("product_id","XXXX");// ID
$prepay_id = $unifiedOrder->getPrepayId();
//========= 3: jsapi ============
$jsApi->setPrepayId($prepay_id);
$jsApiParameters = $jsApi->getParameters();
$wxconf = json_decode($jsApiParameters, true);
if ($wxconf['package'] == 'prepay_id=') {
$this->error(' , ');
}
$this->assign('res', $res);
$this->assign('jsApiParameters', $jsApiParameters);
$this->display('jsapi');
}
// url,
public function notify_url() {
vendor('Weixinpay.WxPayPubHelper');
//
$notify = new \Notify_pub();
//
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
$notify->saveData($xml);
// , 。
// , , ,
// ( 30 8 ) ,
// , 。
if($notify->checkSign() == FALSE){
$notify->setReturnParameter("return_code", "FAIL");//
$notify->setReturnParameter("return_msg", " ");//
}else{
$notify->setReturnParameter("return_code", "SUCCESS");//
}
$returnXml = $notify->returnXml();
//== , =======
// log
//$log_name = "notify_url.log";//log
//$this->log_result($log_name, "【 notify 】:
".$xml."
");
$parameter = $notify->xmlToArray($xml);
//$this->log_result($log_name, "【 notify 】:
".$parameter."
");
if($notify->checkSign() == TRUE){
if ($notify->data["return_code"] == "FAIL") {
// ,
//$this->log_result($log_name, "【 】:
".$xml."
");
// 【 】
echo 'error';
}
else if($notify->data["result_code"] == "FAIL"){
// ,
//$this->log_result($log_name, "【 】:
".$xml."
");
// 【 】
echo 'error';
}
else{
//$this->log_result($log_name, "【 】:
".$xml."
");
// process , ,
if ($this->process($parameter)) {
// success,
echo 'success';
}else {
// ,
echo 'error';
}
}
}
}
//
private function process($parameter) {
// ,
/*
*
* $parameter = array(
'out_trade_no' => xxx,//
'total_fee' => XXXX,//
'openid' => XXxxx,// ID
);
*/
return true;
}
}
?>
4.이상 은 위 챗 결제 의 전체 절차 입 니 다.스 캔 결제 의 차이 가 많 지 않 을 것 입 니 다.저 는 하지 않 았 습 니 다.사용 한 친구 도 공유 할 수 있 습 니 다.^ ^;결제 캡 처 몇 장 주세요.더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ThinkPHP5 일반 데이터 작업1. 데이터베이스는:thinkphp5, 새 데이터 테이블think_test 2.\application\database.php에서 수정 3.\application\index\model 다음에 새 모델 파일 테스트.ph...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.