


Banyak kali, panggilan antara muka pembayaran WeChat perlu digunakan semasa pembangunan projek, seperti pengeluaran pusat membeli-belah, pembayaran dalam talian, pembayaran insurans, dsb. Editor baru-baru ini telah membina beberapa sistem caj yuran air, sistem pengeluaran surat jaminan dan dalam talian pendaftaran Sistem semua menggunakan pembayaran WeChat Pengeluaran pembayaran WeChat dan penerangan beberapa status selepas pembayaran disenaraikan di bawah.
1 WeChat Pay
[Imbas kod QR untuk membayar]
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'); //设置商品ID $input->SetProduct_id($product_id); $input->SetDevice_info($pro_id); $input->SetAttach($attach); //调用统一下单API $result = \WxPayApi::unifiedOrder($config,$input); //dump($result); $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){ //创建基本的QR码 $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->setLabel('', 16, App::getAppPath().'/../public/static/user/font/msyhl.ttc', LabelAlignment::CENTER()); $qrCode->setLogoPath($logo); $qrCode->setLogoWidth(50); $qrCode->setValidateResult(false); //边距设置 $qrCode->setMargin(10); //直接输出二维码 header('Content-Type: '.$qrCode->getContentType()); //echo $qrCode->writeString(); //将二维码保存到指定目录 $qrCode->writeFile($path); //生成数据URI以内联图像数据(即在<img alt="ThinkPhp5.1 membuat pembayaran WeChat dan beberapa perihalan status selepas pembayaran" >标记内) $dataUri = $qrCode->writeDataUri(); return $dataUri; }
[Pembayaran antara muka JSAPI]
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'); //设置商品ID $input->SetProduct_id($product_id); //用户openID $input->SetOpenid($openId); $input->SetAttach($attach); //调用统一下单API $result = \WxPayApi::unifiedOrder($config,$input); $jsApiParameters = $tools->GetJsApiParameters($result); return $jsApiParameters; }
[Pesanan pertanyaan]
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'=>"订单不存在"]; } //dump($result); //return $result; }
2 Tetapan parameter lampirkan semasa membayar di WeChat
lampirkan, penjelasan rasmi: data tambahan dikembalikan seperti dalam API pertanyaan dan pemberitahuan pembayaran , dan boleh digunakan sebagai parameter Tentukan tersuai untuk digunakan Dalam situasi sebenar, medan ini hanya akan dikembalikan jika pembayaran selesai. Kadangkala kita perlu memulangkan beberapa nilai tertentu apabila menanyakan pesanan semasa pembangunan, seperti: ID ahli, ID pesanan pembayaran, ID aplikasi, nama ahli, dll. Pada masa ini, kita boleh menggunakan attach untuk lulus parameter, tetapi attach ialah rentetan. Kadangkala Selalunya nilai yang diluluskan ialah tatasusunan, jadi anda hanya perlu menggunakan json_encode untuk penukaran, contohnya:
$remarks = array( 'cid'=>1, 'member_id'=>2, 'apply_id'=>28, ); $attach = json_encode($remarks);
Selepas menanyakan pesanan, gunakan json_decode untuk penukaran, contohnya:
$arr = json_decode($result['attach'],true);
$arr yang diperoleh di sini ialah tatasusunan, yang boleh dipanggil terus mengikut peraturan panggilan tatasusunan
3 Beberapa status pembayaran WeChat
Apabila maklumat pesanan yang ditanya Apabila ia tidak wujud, pulangan adalah seperti berikut:
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" }
Apabila pembayaran untuk maklumat pesanan yang ditanya gagal, pulangan adalah seperti berikut:
array(11) { ["appid"] => string(18) "公众号APPId" ["attach"] => string(13) "你的传参值" ["mch_id"] => string(10) "商户ID" ["nonce_str"] => string(16) "BR3zfazCdI3vZj5e" ["out_trade_no"] => string(13) "1636555204840" ["result_code"] => string(7) "SUCCESS" ["return_code"] => string(7) "SUCCESS" ["return_msg"] => string(2) "OK" ["sign"] => string(64) "7927EC724A7FDBFF034621B1EC492DB4D130AC13A43E4C66C7B6AD7889736CD5" ["trade_state"] => string(6) "NOTPAY" ["trade_state_desc"] => string(15) "订单未支付" }
Apabila maklumat pesanan yang ditanya wujud, pemulangan adalah seperti berikut:
array(21) { ["appid"] => string(18) "公众号APPId" ["attach"] => string(13) "你的传参值" ["bank_type"] => string(10) "LZB_CREDIT" ["cash_fee"] => string(4) "2000" ["cash_fee_type"] => string(3) "CNY" ["fee_type"] => string(3) "CNY" ["is_subscribe"] => string(1) "Y" ["mch_id"] => string(10) "商户ID" ["nonce_str"] => string(16) "Y8iYqXqHfs22hexX" ["openid"] => string(28) "支付者微信openid" ["out_trade_no"] => string(13) "1636600772812" ["result_code"] => string(7) "SUCCESS" ["return_code"] => string(7) "SUCCESS" ["return_msg"] => string(2) "OK" ["sign"] => string(64) "7AC36F5EA6C4EE5D33584F0F1CDB54F804F0B196B49B61A4FFB6C045D521DA3C" ["time_end"] => string(14) "20211111111938" ["total_fee"] => string(4) "2000" ["trade_state"] => string(7) "SUCCESS" ["trade_state_desc"] => string(12) "支付成功" ["trade_type"] => string(5) "JSAPI" ["transaction_id"] => string(28) "4200001198202111115284536175" }
Pembayaran asli berjaya
array(22) { ["appid"] => string(18) "公众号APPId" ["attach"] => string(13) "你的传参值" ["bank_type"] => string(6) "OTHERS" ["cash_fee"] => string(1) "1" ["cash_fee_type"] => string(3) "CNY" ["device_info"] => string(1) "1" ["fee_type"] => string(3) "CNY" ["is_subscribe"] => string(1) "Y" ["mch_id"] => string(10) "商户ID" ["nonce_str"] => string(16) "Y8iYqXqHfs22hexX" ["openid"] => string(28) "支付者微信openid" ["out_trade_no"] => string(13) "1642682408295" ["result_code"] => string(7) "SUCCESS" ["return_code"] => string(7) "SUCCESS" ["return_msg"] => string(2) "OK" ["sign"] => string(64) "2F25084A568BBDA805DA8EE3FEB846448C9778DCBC2B745E8210D950E0742E38" ["time_end"] => string(14) "20220120204024" ["total_fee"] => string(1) "1" ["trade_state"] => string(7) "SUCCESS" ["trade_state_desc"] => string(12) "支付成功" ["trade_type"] => string(6) "NATIVE" ["transaction_id"] => string(28) "4200001358202201201811257221" }
Cadangan berkaitan: "
Atas ialah kandungan terperinci ThinkPhp5.1 membuat pembayaran WeChat dan beberapa perihalan status selepas pembayaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel ini menunjukkan aplikasi baris arahan bangunan (CLI) menggunakan keupayaan CLI ThinkPHP. Ia menekankan amalan terbaik seperti reka bentuk modular, suntikan ketergantungan, dan pengendalian ralat yang mantap, sambil menonjolkan perangkap biasa seperti Inu

Artikel ini membincangkan pertimbangan utama untuk menggunakan ThinkPhp dalam arkitek tanpa pelayan, memberi tumpuan kepada pengoptimuman prestasi, reka bentuk tanpa statik, dan keselamatan. Ia menyoroti faedah seperti kecekapan kos dan skalabiliti, tetapi juga menangani cabaran

ThinkPhp's Container IOC menawarkan ciri -ciri canggih seperti pemuatan malas, mengikat kontekstual, dan suntikan kaedah untuk pengurusan ketergantungan yang cekap di php apps.Character Count: 159

Artikel ini membincangkan menghalang kelemahan suntikan SQL dalam ThinkPHP melalui pertanyaan parameter, mengelakkan SQL mentah, menggunakan ORM, kemas kini tetap, dan pengendalian ralat yang betul. Ia juga meliputi amalan terbaik untuk mendapatkan pertanyaan pangkalan data dan validat

Artikel ini menggariskan membina sistem giliran tugas yang diedarkan menggunakan ThinkPhp dan RabbitMQ, yang memberi tumpuan kepada pemasangan, konfigurasi, pengurusan tugas, dan skalabilitas. Isu -isu utama termasuk memastikan ketersediaan yang tinggi, mengelakkan perangkap biasa seperti implope

Artikel ini membincangkan rangka kerja ujian ThinkPHP, yang menonjolkan ciri-ciri utamanya seperti ujian unit dan integrasi, dan bagaimana ia meningkatkan kebolehpercayaan aplikasi melalui pengesanan bug awal dan kualiti kod yang lebih baik.

Artikel ini membincangkan perbezaan utama antara ThinkPhp 5 dan 6, yang memberi tumpuan kepada seni bina, ciri, prestasi, dan kesesuaian untuk peningkatan warisan. ThinkPhp 5 disyorkan untuk projek tradisional dan sistem warisan, sementara ThinkPhp 6 sesuai dengan PR baru

Artikel ini membincangkan amalan terbaik untuk mengendalikan muat naik fail dan mengintegrasikan penyimpanan awan di ThinkPhp, yang memberi tumpuan kepada keselamatan, kecekapan, dan skalabiliti.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Dreamweaver Mac版
Alat pembangunan web visual