suchen
HeimPHP-FrameworkDenken Sie an PHPThinkPhp5.1 ermöglicht WeChat-Zahlungen und verschiedene Statusbeschreibungen nach der Zahlung

Während der Projektentwicklung müssen häufig WeChat-Zahlungsschnittstellenaufrufe verwendet werden, z. B. bei der Produktion von Einkaufszentren, Online-Zahlungen, Versicherungszahlungen usw. Der Herausgeber hat kürzlich mehrere Systeme zur Erhebung von Wassergebühren, Systeme zur Ausstellung von Garantieschreiben und zur Online-Registrierung entwickelt Die WeChat-Zahlungssysteme werden in allen Systemen verwendet und ich hoffe, dass sie für alle hilfreich sind.

1 wird unverändert in der Abfrage-API und der Zahlungsbenachrichtigung zurückgegeben und kann als benutzerdefinierter Parameter verwendet werden. Unter tatsächlichen Umständen wird dieses Feld nur im Zahlungsabschlussstatus zurückgegeben. Manchmal müssen wir beim Abfragen von Bestellungen während der Entwicklung einige bestimmte Werte zurückgeben, z. B. Mitglieds-ID, Zahlungsauftrags-ID, Anwendungs-ID, Mitgliedsname usw. Derzeit können wir „attach“ zum Übergeben von Parametern verwenden, „attach“ ist jedoch ein string. Manchmal ist der übergebene Wert ein Array, sodass Sie zum Konvertieren nur json_encode verwenden müssen, zum Beispiel:

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 ermöglicht WeChat-Zahlungen und verschiedene Statusbeschreibungen nach der Zahlung" >标记内)
    $dataUri = $qrCode->writeDataUri();
    return $dataUri;
}

Nach der Abfrage der Reihenfolge verwenden Sie json_decode zum Konvertieren, zum Beispiel:

public function jsApiPay($openId,$Body,$out_trade_no,$fee,$product_id,$attach){
    require_once Env::get(&#39;app_path&#39;)."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(&#39;JSAPI&#39;);
    //设置商品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;
}

Das hier erhaltene $arr ist ein Array, das direkt folgt. Rufen Sie einfach die Aufrufregeln des Arrays auf Die Rückgabe lautet wie folgt:

public function QueryOrder($number,$transaction_id=NULL){
    require_once App::getAppPath().&#39;api/wxpay/lib/WxPay.Api.php&#39;;
    require_once App::getAppPath().&#39;api/wxpay/lib/WxPay.Notify.php&#39;;
    $input = new \WxPayOrderQuery();
    $input->SetOut_trade_no($number);
    $input->SetTransaction_id($transaction_id);
    $config = new WxPayConfig();
    $result = \WxPayApi::orderQuery($config, $input);
    if($result[&#39;result_code&#39;]==&#39;SUCCESS&#39;){
        if($result[&#39;trade_state&#39;]==&#39;SUCCESS&#39;){
            $arr = json_decode($result[&#39;attach&#39;],true);
            $pay_time = $this->getPayTime($result[&#39;time_end&#39;]);
            return [&#39;code&#39;=>100,&#39;result_code&#39;=>$result[&#39;result_code&#39;],&#39;attach&#39;=>$arr,&#39;pay_time&#39;=>$pay_time,&#39;result&#39;=>$result,&#39;msg&#39;=>"支付成功"];
        }else{
            return [&#39;code&#39;=>101,&#39;result_code&#39;=>$result[&#39;result_code&#39;],&#39;err_code&#39;=>$result[&#39;err_code&#39;],&#39;result&#39;=>$result,&#39;msg&#39;=>"订单未支付"];
        }
    }else{
        return [&#39;code&#39;=>103,&#39;result_code&#39;=>$result[&#39;result_code&#39;],&#39;result&#39;=>$result,&#39;msg&#39;=>"订单不存在"];
    }
    //dump($result);
    //return $result;
}

Wenn die abgefragten Bestellinformationen fehlschlagen. Wenn die Bestellinformationen vorhanden sind, lautet die Rückgabe wie folgt:

$remarks = array(
    &#39;cid&#39;=>1,
    &#39;member_id&#39;=>2,
    &#39;apply_id&#39;=>28,
);
$attach = json_encode($remarks);

Native Zahlung erfolgreich

$arr = json_decode($result[&#39;attach&#39;],true);

Verwandte Empfehlungen: „

Thinkphp-Video-Tutorial


Das Obige ist die Zusammenfassung einiger relevanter Kenntnisse über WeChat-Zahlungen durch den Herausgeber. Ich hoffe, es wird allen Entwicklern helfen!

Das obige ist der detaillierte Inhalt vonThinkPhp5.1 ermöglicht WeChat-Zahlungen und verschiedene Statusbeschreibungen nach der Zahlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Was sind die Hauptmerkmale des integrierten Test-Frameworks von ThinkPhp?Was sind die Hauptmerkmale des integrierten Test-Frameworks von ThinkPhp?Mar 18, 2025 pm 05:01 PM

In dem Artikel wird das integrierte Test-Framework von ThinkPhP erläutert, wobei die wichtigsten Funktionen wie Einheit und Integrationstests hervorgehoben werden und wie die Anwendungszuverlässigkeit durch frühzeitige Fehlererkennung und verbesserte Codequalität verbessert wird.

Wie kann man ThinkPhp zum Aufbau von Echtzeit-Aktienmarktdaten-Feeds verwenden?Wie kann man ThinkPhp zum Aufbau von Echtzeit-Aktienmarktdaten-Feeds verwenden?Mar 18, 2025 pm 04:57 PM

In Artikel wird ThinkPhp für Echtzeit-Aktienmarktdaten-Feeds mit dem Schwerpunkt auf Setup, Datengenauigkeit, Optimierung und Sicherheitsmaßnahmen erörtert.

Was sind die wichtigsten Überlegungen für die Verwendung von ThinkPhp in einer serverlosen Architektur?Was sind die wichtigsten Überlegungen für die Verwendung von ThinkPhp in einer serverlosen Architektur?Mar 18, 2025 pm 04:54 PM

In dem Artikel werden wichtige Überlegungen zur Verwendung von ThinkPhp in serverlosen Architekturen erörtert, wobei der Schwerpunkt auf Leistungsoptimierung, staatslosem Design und Sicherheit liegt. Es unterstreicht Vorteile wie Kosteneffizienz und Skalierbarkeit, befasst sich aber auch mit Herausforderungen

So implementieren Sie Service -Erkennung und Lastausgleich in ThinkPhp -Microservices?So implementieren Sie Service -Erkennung und Lastausgleich in ThinkPhp -Microservices?Mar 18, 2025 pm 04:51 PM

In dem Artikel wird die Implementierung der Service -Erkennung und des Lastausgleichs in ThinkPhp Microservices erläutert und sich auf Setup, Best Practices, Integrationsmethoden und empfohlene Tools konzentrieren. [159 Zeichen]

Was sind die erweiterten Merkmale des Abhängigkeitsinjektionsbehälters von ThinkPhp?Was sind die erweiterten Merkmale des Abhängigkeitsinjektionsbehälters von ThinkPhp?Mar 18, 2025 pm 04:50 PM

IOC -Container von ThinkPhp bietet erweiterte Funktionen wie fauler Laden, Kontextbindung und Methodeninjektion für eine effiziente Abhängigkeitsführung in PHP -Apps.character Count: 159

Wie kann man ThinkPhp zum Erstellen von Tools in Echtzeitkollaboration verwenden?Wie kann man ThinkPhp zum Erstellen von Tools in Echtzeitkollaboration verwenden?Mar 18, 2025 pm 04:49 PM

In dem Artikel wird die Verwendung von ThinkPhp zum Aufbau von Tools in Echtzeitkollaboration erläutert und sich auf Setup, WebSocket-Integration und Best Practices für Sicherheitsförderungen konzentriert.

Was sind die wichtigsten Vorteile der Verwendung von ThinkPhp zum Aufbau von SaaS -Anwendungen?Was sind die wichtigsten Vorteile der Verwendung von ThinkPhp zum Aufbau von SaaS -Anwendungen?Mar 18, 2025 pm 04:46 PM

ThinkPhp profitiert SaaS -Apps mit leichten Design, MVC -Architektur und Erweiterbarkeit. Es verbessert die Skalierbarkeit, beschleunigt die Entwicklung und verbessert die Sicherheit durch verschiedene Merkmale.

Wie erstelle ich ein verteiltes Task -Warteschlangensystem mit ThinkPhp und Rabbitmq?Wie erstelle ich ein verteiltes Task -Warteschlangensystem mit ThinkPhp und Rabbitmq?Mar 18, 2025 pm 04:45 PM

Der Artikel beschreibt das Erstellen eines verteilten Task -Warteschlangensystems mit ThinkPhp und RabbitMQ, wobei sich die Installation, Konfiguration, Aufgabenverwaltung und Skalierbarkeit konzentriert. Zu den wichtigsten Problemen gehören die Gewährleistung einer hohen Verfügbarkeit, die Vermeidung häufiger Fallstricke wie Unmensch

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

SublimeText3 Linux neue Version

SublimeText3 Linux neue Version

SublimeText3 Linux neueste Version

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen