Souvent, les appels de l'interface de paiement WeChat doivent être utilisés pendant le développement de projets, tels que : la production d'un centre commercial, le paiement en ligne, le paiement d'assurance, etc. L'éditeur a récemment construit plusieurs systèmes de facturation des frais d'eau, des systèmes d'émission de lettres de garantie et des systèmes d'enregistrement en ligne. Les systèmes de paiement WeChat sont utilisés dans chacun d'entre eux. La production du paiement WeChat et la description de plusieurs statuts après le paiement sont répertoriés ci-dessous. J'espère que cela sera utile à tout le monde.
1 , renvoyé tel quel dans l'API de requête et la notification de paiement, et peut être utilisé comme paramètre personnalisé. Dans les circonstances réelles, ce champ ne sera renvoyé que dans l'état d'achèvement du paiement. Parfois, nous devons renvoyer certaines valeurs spécifiques lors de l'interrogation des commandes pendant le développement, telles que : l'ID de membre, l'ID d'ordre de paiement, l'ID d'application, le nom du membre, etc. À l'heure actuelle, nous pouvons utiliser attach pour transmettre des paramètres, mais attach est un chaîne. Parfois, la valeur transmise est souvent un tableau, il vous suffit donc d'utiliser json_encode pour la conversion, par exemple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | public function wxPayImg( $body , $out_trade_no , $fee , $product_id , $logo , $path , $attach , $pro_id ){
require_once Env::get('app_path'). "api/wxpay/lib/WxPay.Api.php" ;
$config = new WxPayConfig();
$input = new \WxPayUnifiedOrder();
$input ->SetBody( $body );
$input ->SetOut_trade_no( $out_trade_no );
$input ->SetTotal_fee( $fee );
$notify = $config ->GetNotifyUrl();
$input ->SetNotify_url( $notify );
$input ->SetTrade_Type('NATIVE');
$input ->SetProduct_id( $product_id );
$input ->SetDevice_info( $pro_id );
$input ->SetAttach( $attach );
$result = \WxPayApi::unifiedOrder( $config , $input );
$qr_url = $result ['code_url'];
$img = $this ->createCode( $qr_url , $logo , $path );
$array = array ('img'=> $img ,'out_trade_no'=> $out_trade_no );
return $array ;
}
public function createCode( $code_url , $logo , $path ){
$qrCode = new QrCode( $code_url );
$qrCode ->setSize(300);
$qrCode ->setWriterByName('png');
$qrCode ->setEncoding('UTF-8');
$qrCode ->setErrorCorrectionLevel(ErrorCorrectionLevel::HIGH());
$qrCode ->setForegroundColor(['r' => 0, 'g' => 0, 'b' => 0, 'a' => 0]);
$qrCode ->setBackgroundColor(['r' => 255, 'g' => 255, 'b' => 255, 'a' => 0]);
$qrCode ->setLogoPath( $logo );
$qrCode ->setLogoWidth(50);
$qrCode ->setValidateResult(false);
$qrCode ->setMargin(10);
header('Content-Type: '. $qrCode ->getContentType());
$qrCode ->writeFile( $path );
$dataUri = $qrCode ->writeDataUri();
return $dataUri ;
}
|
Copier après la connexion
Après avoir interrogé la commande, utilisez json_decode pour la conversion, par exemple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public function jsApiPay( $openId , $Body , $out_trade_no , $fee , $product_id , $attach ){
require_once Env::get('app_path'). "api/wxpay/lib/WxPay.Api.php" ;
$tools = new JsApiPay();
$input = new \WxPayUnifiedOrder();
$input ->SetBody( $Body );
$input ->SetOut_trade_no( $out_trade_no );
$input ->SetTotal_fee( $fee );
$config = new WxPayConfig();
$notify = $config ->GetNotifyUrl();
$input ->SetNotify_url( $notify );
$input ->SetTrade_Type('JSAPI');
$input ->SetProduct_id( $product_id );
$input ->SetOpenid( $openId );
$input ->SetAttach( $attach );
$result = \WxPayApi::unifiedOrder( $config , $input );
$jsApiParameters = $tools ->GetJsApiParameters( $result );
return $jsApiParameters ;
}
|
Copier après la connexion
Le $arr obtenu ici. est un tableau, suivez directement Il suffit d'appeler les règles d'appel du tableau
3 Plusieurs statuts de paiement WeChat
Lorsque les informations de commande demandées n'existent pas, le retour est le suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public function QueryOrder( $number , $transaction_id =NULL){
require_once App::getAppPath().'api/wxpay/lib/WxPay.Api.php';
require_once App::getAppPath().'api/wxpay/lib/WxPay.Notify.php';
$input = new \WxPayOrderQuery();
$input ->SetOut_trade_no( $number );
$input ->SetTransaction_id( $transaction_id );
$config = new WxPayConfig();
$result = \WxPayApi::orderQuery( $config , $input );
if ( $result ['result_code']=='SUCCESS'){
if ( $result ['trade_state']=='SUCCESS'){
$arr = json_decode( $result ['attach'],true);
$pay_time = $this ->getPayTime( $result ['time_end']);
return ['code'=>100,'result_code'=> $result ['result_code'],'attach'=> $arr ,'pay_time'=> $pay_time ,'result'=> $result ,'msg'=> "支付成功" ];
} else {
return ['code'=>101,'result_code'=> $result ['result_code'],'err_code'=> $result ['err_code'],'result'=> $result ,'msg'=> "订单未支付" ];
}
} else {
return ['code'=>103,'result_code'=> $result ['result_code'],'result'=> $result ,'msg'=> "订单不存在" ];
}
}
|
Copier après la connexion
Lorsque le paiement des informations de commande demandées échoue , le retour est le suivant :
1 2 3 4 5 6 | $remarks = array (
'cid'=>1,
'member_id'=>2,
'apply_id'=>28,
);
$attach = json_encode( $remarks );
|
Copier après la connexion
Lorsque les informations de commande demandées échouent Lorsque les informations de commande existent, le retour est le suivant :
1 | $arr = json_decode( $result ['attach'],true);
|
Copier après la connexion
Paiement natif réussi
1 2 3 4 5 6 7 8 9 10 11 | array (9) {
[ "appid" ] => string(18) "公众号APPId"
[ "err_code" ] => string(13) "ORDERNOTEXIST"
[ "err_code_des" ] => string(15) "订单不存在"
[ "mch_id" ] => string(10) "商户ID"
[ "nonce_str" ] => string(16) "H0K6KPemexExM5DV"
[ "result_code" ] => string(4) "FAIL"
[ "return_code" ] => string(7) "SUCCESS"
[ "return_msg" ] => string(2) "OK"
[ "sign" ] => string(64) "8779CA8C7F4931B4296C19FFFB176A3111F74B7244123A0C0EB7AD8DB2B1BDA49DA"
}
|
Copier après la connexion
Recommandations associées : "
tutoriel vidéo thinkphp
"
Ce qui précède est le résumé par l'éditeur de certaines connaissances pertinentes sur le paiement WeChat. J'espère que cela sera utile à tous les développeurs qui aident !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!