Heim  >  Artikel  >  PHP-Framework  >  ThinkPhp5.1 ermöglicht WeChat-Zahlungen und verschiedene Statusbeschreibungen nach der Zahlung

ThinkPhp5.1 ermöglicht WeChat-Zahlungen und verschiedene Statusbeschreibungen nach der Zahlung

XuPing.Yang
XuPing.YangOriginal
2022-02-10 15:06:462371Durchsuche

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>标记内)
    $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