ホームページ バックエンド開発 PHPの問題 php WeChat の支払いプロセスとは何ですか?

php WeChat の支払いプロセスとは何ですか?

Aug 27, 2019 pm 03:24 PM
php 微信 支払いプロセス

php WeChat の支払いプロセスとは何ですか?

# 準備:

1. WeChat 認証サービス アカウントと WeChat 支払いを開きます

2. WeChat 支払い SDK、ダウンロード アドレス: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1

3. WeChat 支払いプラットフォームにログインします https:/ /pay.weixin.qq.com/index.php/account/api_cert 支払い証明書のダウンロード

方法の手順:

1.デモ ファイルの処理

(1) 公式デモをダウンロードします (ファイル名は WxpayAPI_php_v3 です)。後でディレクトリを書きやすいように、ファイル名を wxpay に変更します。

(2) lib フォルダーにある WxPay.Api.php を開きます。ファイルの 537 行目には、curl ネットワーク リクエスト構成コードがあります。 cURL によるピアの証明書の検証を無効にするために、

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
ログイン後にコピー

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
ログイン後にコピー

に置き換えられます。

(3) lib フォルダーにある WxPay.Config.php ファイルを開き、25 行目以降でアカウントに応じた基本情報の設定を完了します;

const APPID = '公众账号APPID';
const MCHID = '商户号';
const KEY = '商户支付密钥';
const APPSECRET = '公众帐号secert';
ログイン後にコピー

(4) lib を開きますフォルダ WxPay.Notify.php ファイルの下の、79 行目のコード:

if($needSign == true && 
$this->GetReturn_code($return_code) == "SUCCESS")
{
$this->SetSign();
}
ログイン後にコピー

が次のように変更されます:

if($needSign == true && 
$this->GetReturn_code() == "SUCCESS")
{
$this->SetSign();
}
ログイン後にコピー

(5) 証明書証明書ディレクトリを開き、中にある 2 つの証明書を独自のものに置き換えます。支払い証明書。

関連する推奨事項: "

PHP チュートリアル "

2. パブリック アカウントのバックグラウンド設定

(1) Web ページの承認済みドメイン名 (マイ ドメイン) を設定します。 name is ( xy.chuyin.ren);

php WeChat の支払いプロセスとは何ですか?

(2) 支払い承認ディレクトリを設定します。ドメイン名は (xy.chuyin.ren) です。このドメイン名が指すディレクトリにデモが存在します。weixinopen/ フォルダの下のデモの jsapi.php ファイルは example/ ディレクトリにあるため、支払い承認ディレクトリは xy.chuyin.ren/weixinopen/wxpay/ となります。 example/


php WeChat の支払いプロセスとは何ですか?

3. 支払いプロセス

example ディレクトリにある jsapi.php ファイルを開き、支払いの開始と処理はすべてここで完了します。

(1) ユーザー openid を取得します。

APPID と APPSecert は以前に構成済みであるため、ここで処理する必要はありません。

//①、获取用户openid
$tools = new JsApiPay();
$openId = $tools->GetOpenid();
ログイン後にコピー

ここで初期化された JsApiPay() クラスは、最初にオブジェクトを取得します。このファイルは、example/ ディレクトリの WxPay.JsApiPay.php に対応します。GetOpenid() メソッドを呼び出すと、独自の openID が自動的に取得されます。

(2) 統合注文

//②、统一下单
$input = new WxPayUnifiedOrder();
$input->SetBody("test");
$input->SetAttach("test");
$input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));
$input->SetTotal_fee("1");
$input->SetTime_start(date("YmdHis"));
$input->SetTime_expire(date("YmdHis", time() + 600));
$input->SetGoods_tag("test");
$input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
$input->SetTrade_type("JSAPI");
$input->SetOpenid($openId);
$order = WxPayApi::unifiedOrder($input);
echo &#39;<font color="#f00"><b>统一下单支付单信息</b></font><br/>&#39;;
printf_info($order);
$jsApiParameters = $tools->GetJsApiParameters($order);
ログイン後にコピー

WxPay.Api.php の 24 行目のunifiedOrder() メソッドに対応し、注文情報と支払いコールバック関数を設定します。ここで変更:

A. 製品名:

$input->SetBody("test");
ログイン後にコピー

B. 注文番号

$input->SetOut_trade_no(WxPayConfig::MCHID.date("YmdHis"));
ログイン後にコピー

C. 支払い金額

$input->SetTotal_fee("1");
ログイン後にコピー

D. 支払い確認リンク

notify.php ファイルの場所を設定するので、ここでは http://xy.chuyin.ren/weixinopen/wxpay/example/notify.php

のように設定することもできます。他のアドレスを書き込みます, もちろん、支払い承認ドメイン名の下にある必要があります. 支払いが成功すると、リンクで指定されたメソッドが自動的にコールバックされ、そこで判定とデータベース操作が実行されます。

$input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
ログイン後にコピー

E. 追加パラメータ

$input->SetAttach("test");
ログイン後にコピー

追加パラメータは入力することも、入力しないこともできます。入力する場合は、文字列にスペースを含めないことをお勧めします。

この時点で、[Pay] をクリックすると、支払いが成功するはずです。

(3) 支払いの開始

<script type="text/javascript">
//调用微信JS api 支付
function jsApiCall()
{
WeixinJSBridge.invoke(
&#39;getBrandWCPayRequest&#39;,
<?php echo $jsApiParameters; ?>,
function(res){
WeixinJSBridge.log(res.err_msg);
alert(res.err_code+res.err_desc+res.err_msg);
}
);
}
 
function callpay()
{
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener(&#39;WeixinJSBridgeReady&#39;, jsApiCall, false);
}else if (document.attachEvent){
document.attachEvent(&#39;WeixinJSBridgeReady&#39;, jsApiCall); 
document.attachEvent(&#39;onWeixinJSBridgeReady&#39;, jsApiCall);
}
}else{
jsApiCall();
}
}
</script>
ログイン後にコピー

[今すぐ支払う]ボタンをクリックすると、callpay() 関数が呼び出され、この関数が jsApiCall() 関数を呼び出して支払いプログラムを開きます。

php WeChat の支払いプロセスとは何ですか?

jsApiCall() 関数はアクションのすべてのステップを監視します:

php WeChat の支払いプロセスとは何ですか?

res.err_msg はフロントエンドを示しますget_brand_wcpay_request:cancel の判定 支払いをキャンセルする場合、es.err_msg は get_brand_wcpay_request:ok となり、フロントエンドが支払いが成功したと判断したことを示しており、これに基づいて成功ページにジャンプできます。


(4) 成功コールバックのサポート

支払い結果はフロントエンドの jsApiCall() 関数を通じて監視できますが、これは信頼できません。支払いが成功したかどうかを確認するには、notify.php を通じてビジネス ロジックを処理する必要があります。支払い確認リンク SetNotify_url() は事前に設定されています。支払いが完了すると、WeChat サーバーはリンクに従って自動的に notify.php ファイルを要求し、このファイルを開きます。実際、このファイルのメイン コードは 2 つだけです。行:

$notify = new PayNotifyCallBack();
$notify->Handle(false);
ログイン後にコピー

ここから WxPay.Notify.php クラス ファイルの Handle() 関数をトレースします:

/**
 * 
 * 回调入口
 * @param bool $needSign  是否需要签名输出
 */
final public function Handle($needSign = true)
{
$msg = "OK";
//当返回false的时候,表示notify中调用NotifyCallBack回调失败获取签名校验失败,此时直接回复失败
$result = WxpayApi::notify(array($this, &#39;NotifyCallBack&#39;), $msg);
if($result == false){
$this->SetReturn_code("FAIL");
$this->SetReturn_msg($msg);
$this->ReplyNotify(false);
return;
} else {
//该分支在成功回调到NotifyCallBack方法,处理完成之后流程
$this->SetReturn_code("SUCCESS");
$this->SetReturn_msg("OK");
}
$this->ReplyNotify($needSign);
}
ログイン後にコピー

メイン コード:

$result = WxpayApi::notify(array($this, &#39;NotifyCallBack&#39;), $msg);
然后来到WxPay.Api.php文件的第411行,notify()函数:
/**
 * 
 * 支付结果通用通知
 * @param function $callback
 * 直接回调函数使用方法: notify(you_function);
 * 回调类成员函数方法:notify(array($this, you_function));
 * $callback  原型为:function function_name($data){}
 */
public static function notify($callback, &$msg)
{
//获取通知的数据
$xml = $GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;];
//file_put_contents(&#39;log.txt&#39;,$xml,FILE_APPEND);
//如果返回成功则验证签名
try {
$result = WxPayResults::Init($xml);
} catch (WxPayException $e){
$msg = $e->errorMessage();
return false;
}
return call_user_func($callback, $result);
}
ログイン後にコピー

$xml=$GLOBALS ['HTTP_RAW_POST_DATA'] はここです 支払いが成功すると、ユーザーは XML 形式の文字列である結果を返します。

php WeChat の支払いプロセスとは何ですか?

ここで返された XML データを記録し、それを開いて、$out_trade_no が支払い前に設定した注文番号であるかどうか、$attach が追加のパラメーター セットであるかどうかを確認できます。

注文番号を取得したら、データベース内のデータ変更など、決済成功後のロジックを直接書きます。

これでWeChat決済のJsApi決済の全体的な分析が完了しました。

php WeChat の支払いプロセスとは何ですか?

以上がphp WeChat の支払いプロセスとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DeepSeekイメージジェネレーションチュートリアル DeepSeekイメージジェネレーションチュートリアル Feb 19, 2025 pm 04:15 PM

DeepSeek:強力なAI画像生成ツール! DeepSeek自体は画像生成ツールではありませんが、その強力なコアテクノロジーは、多くのAI塗装ツールを根本的にサポートしています。 DeepSeekを使用して画像を間接的に生成する方法を知りたいですか?読み続けてください! DeepSeekベースのAIツールで画像を生成します。次の手順では、これらのツールを使用するように導きます。AIペイントツールの起動:DeepSeekベースのAIペイントツールを検索して開きます(たとえば、「Simple AI」を検索します)。描画モードを選択します。「AI図面」または同様の関数を選択し、「アニメアバター」、「ランドスケープ」などのニーズに応じて画像タイプを選択します。

Gateio中国の公式ウェブサイトgate.io取引プラットフォームWebサイト Gateio中国の公式ウェブサイトgate.io取引プラットフォームWebサイト Feb 21, 2025 pm 03:06 PM

2013年に設立された主要な暗号通貨取引プラットフォームであるGate.ioは、中国のユーザーに完全な公式のウェブサイトを提供します。このウェブサイトは、スポット取引、先物取引、貸付など、幅広いサービスを提供し、中国のインターフェース、リッチリソース、コミュニティサポートなどの特別な機能を提供します。

セサミオープンドアログイン登録登録ゲート。io交換登録公式ウェブサイトの入り口 セサミオープンドアログイン登録登録ゲート。io交換登録公式ウェブサイトの入り口 Mar 04, 2025 pm 04:51 PM

Gate.io(Sesame Open Door)は、世界をリードする暗号通貨取引プラットフォームです。このチュートリアルでは、アカウントの登録とログイン、KYC認定、FIAT通貨とデジタル通貨充電、取引ペアの選択、制限/市場取引注文、注文およびトランザクションレコードの表示などの手順を把握しているため、暗号通貨取引のためのgate.ioプラットフォームを迅速に開始できます。 初心者であろうとベテランであろうと、このチュートリアルから利益を得て、gate.ioの取引スキルを簡単に習得できます。

OUYI Exchange App国内ダウンロードチュートリアル OUYI Exchange App国内ダウンロードチュートリアル Mar 21, 2025 pm 05:42 PM

この記事では、中国のOUYI OKXアプリの安全なダウンロードに関する詳細なガイドを提供します。国内のアプリストアの制限により、ユーザーはOUYI OKXの公式Webサイトからアプリをダウンロードするか、公式Webサイトが提供するQRコードを使用してスキャンおよびダウンロードすることをお勧めします。ダウンロードプロセス中に、公式Webサイトのアドレスを確認し、アプリケーションの許可を確認し、インストール後にセキュリティスキャンを実行し、2要素の検証を有効にしてください。 使用中は、地方の法律や規制を遵守し、安全なネットワーク環境を使用し、アカウントのセキュリティを保護し、詐欺に対して警戒し、合理的に投資してください。 この記事は参照のみであり、投資のアドバイスを構成していません。

Gateio Exchangeアプリ古いバージョンGateio Exchangeアプリ古いバージョンダウンロードチャネル Gateio Exchangeアプリ古いバージョンGateio Exchangeアプリ古いバージョンダウンロードチャネル Mar 04, 2025 pm 11:36 PM

Gateio Exchangeアプリは、公式のサードパーティのアプリケーション市場、フォーラムコミュニティ、その他のチャネルをカバーする古いバージョン用のチャネルをダウンロードします。また、古いバージョンを簡単に取得し、新しいバージョンやデバイスの互換性を使用する際の不快感を解決するのに役立ちます。

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

OKXトレーディングプラットフォームの取り扱い料金のリスト OKXトレーディングプラットフォームの取り扱い料金のリスト Feb 15, 2025 pm 03:09 PM

OKXトレーディングプラットフォームは、取引手数料、引き出し料金、資金調達料金など、さまざまな料金を提供しています。スポットトランザクションの場合、取引手数料はトランザクションのボリュームとVIPレベルによって異なり、「マーケットメーカーモデル」を採用します。つまり、市場はトランザクションごとに低いハンドリング料金を請求します。さらに、OKXは、通貨標準契約、USDT契約、配送契約など、さまざまな先物契約も提供しており、各契約の料金構造も異なります。

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

See all articles