検索
ホームページバックエンド開発PHPチュートリアルPHP を使用してクイック入金機能を実装する (インターフェイスを含む)_PHP チュートリアル

PHP を使用してクイック入金機能を実装する (インターフェイスを含む)_PHP チュートリアル

Jul 21, 2016 pm 03:01 PM
frameworkmodphpzend使用関数成し遂げるインターフェース支払うフレーム使用プロジェクト

このプロジェクトはzendフレームワークを使用して実装されています
modules/default/controllers/IndexController.php
IndexController.php

コードをコピーします コードは次のとおりです:
/*Mock Order
*$MockOrder データベースから取り出した情報で、ドルリクエストに関する情報が含まれています。ここに死ぬほど書きました。
*orderId 注文番号、データベーステーブルの主キー (一意)。 //必要なフィールド
*usr_idtype 必要に応じてドキュメント タイプ。
*usr_idcode ID 番号、必要に応じて。
*etx_status が割引されるかどうかは、ニーズによって異なります。
*time_create は、独自のニーズに応じて、優先時間を満たしているかどうかを確認します。
*ets_license パッケージ コードは、ニーズに応じた製品カテゴリのようなものです。
*contact_type 連絡先タイプ、固定選択値 1、2。1 つの電子メール、2 つの携帯電話番号、必要に応じて、ドル側は空にすることができます。
*contact_text 連絡先情報。 contact_type に従って入力します。必要に応じて、ドル側は空にすることができます。
*あなたのニーズに応じてパッケージ価格と製品価格を設定します。
*orderPrice はお客様のニーズに基づいた実際の価格です。
*orderAmount は注文の実際の支払い金額であり、これには手数料がかかります。 //必須フィールド
*orderTime 注文時間。 //必須フィールド
*paySuccess 注文が正常に支払われたかどうか。 // 必須フィールド b *Buysuccess アカウントは成功し、注文の支払い時間はニーズに応じて成功します。 // 必須フィールド 总 *要するに、必須フィールドは注文に関連しています
*Orderid、Orderamount、Ordertime、リクエストに必要なフィールド
Paysuccess、Paytime レスポンスに必要なフィールド
*/
$ Mockorder = ARRRR ay ();) $MockOrder['orderId'] = '100000125'; --必須
$MockOrder['usr_idtype'] = '1';//書類の種類、ID カード
$MockOrder['usr_idcode'] = '371111199011111111';//ID カード番号
$MockOrder['etx_status'] = '0';//割引か否か
$MockOrder['time_create'] = '1352338189';//時間が割引かどうかを検証
$MockOrder['ets_license'] = '1';//パッケージコードと製品カテゴリ
$MockOrder['contact_type'] = '1';//連絡先情報タイプ 1、電子メール
$MockOrder['contact_text'] = 'x@163.com';//連絡先情報、電子メール
$ MockOrder['etsPrice'] = '30800';//パッケージ価格と商品価格
$MockOrder['orderPrice'] = '30800';//実際の価格
$MockOrder['orderAmount'] = '31100';//注文に対して支払われた実際の価格に手数料を加えたもの。 --Necessary
$MockOrder['orderTime'] = '1352338199';// 注文の生成時間。 --Necessary
$MockOrder['paySuccess'] = '0';//注文が正常に支払われたかどうか。 --Necessary
$MockOrder['buySuccess'] = '0';//アカウントが正常に生成されたかどうか
$MockOrder['payTime'] = '0';//注文の支払い時間。--Necessary

//BillRequest は Kuaiqian に必要なパラメータです
$this->view->BillRequest = new Application_Model_BillRequest($MockOrder);
Zend_Debug::dump($this->view- >BillRequest) ;exit;
}

//bgUrl アドレスはここを指します
public function acceptAction()
{
//データベース設計を受信します
/* $MockReceive 配列を使用してシミュレートします
* $MockReceive = array();
* $MockReceive[ 'id'] 主キー;
* $MockReceive['orderId'] 販売者注文番号;
* $MockReceive['receiveTime'] 受付時間;
* $MockReceive['queryString']http_build_encode($_REQUEST);
* $ MockReceive['dealId'] Kuaiqian 取引番号;
* $MockReceive['bankDealId'] 銀行取引番号;
* $MockReceive['payResult'] 処理結果 10: 支払い成功; 11: 支払い失敗;
* $MockReceive[' dealTime'] 高速送金取引時間;
* $MockReceive['payAmount'] 注文の実際の支払い金額;
* $MockReceive['fee'] 料金;
* $MockReceive['errCode'] エラー コード;
* /


/*$_REQUEST は Kuaiqian によって返されたデータです

* version ゲートウェイのバージョン、固定値: v2.0、注文送信時のゲートウェイのバージョン番号と一致します。
* 言語 Web ページに表示される言語タイプ (1 中国語表示) は、注文送信時に Web ページに表示される言語タイプと一致します
* SignType 署名タイプ、4PKI 署名、注文送信時の署名タイプと一致します
* payType 支払い方法、00 all、注文送信時の支払い方法と一致していること
* BankId 銀行コード
* orderId 販売者注文番号、注文送信時の販売者注文番号と一致していること
* orderTime 販売者注文送信時間は、注文が送信されたときの販売者の注文送信時間と一致するようにしてください
* orderAmount は販売者の注文金額であり、注文が送信されたときの販売者の注文金額と一致します。
* dealId ファーストマネー取引番号
* BankDealId 銀行取引番号
ext2 拡張フィールド 2、注文送信時の拡張フィールド 2 と一致
* payResult 処理結果 10: 支払い成功; 11: 支払い失敗
* errCode エラー コード。空であること
* SignMsg 署名文字列
*/
$BillResponse = new Application_Model_BillResponse($_REQUEST);
//$BillResponse->checkSignMsg は、バグなどを防ぐために署名文字列が正しいかどうかを検証します。
if($BillResponse-> ;checkSignMsg){
//注文の支払いが成功したかどうかを判断します
if( $BillResponse->isSuccess){
//Kuaiqian に戻ります。Kuaiqian はリダイレクト URL アドレスに従って新しいページにジャンプします。これが成功ページです。
Return "1http:/ /99bill/default/index/sucess";exit;
}else{
//Kuaiqian に戻り、Kuaiqian は次の場所にジャンプしますリダイレクト URL アドレスに基づく新しいページ。これは失敗ページです
return " 1http://99bill/default/index/fail";exit;
}
}
//Kuaiqian に戻ります。Kuaiqian はリダイレクト URL アドレスに従って新しいページにジャンプします。これは失敗ページです
return "1http://99bill/デフォルト/index/fail</redirecturl> "; exit;
modules/default/views/scripts/index/index.phtml
https://www.99bill.com/gateway/recvMerchantInfoAction.htm
复制代代码如下:

BillRequest;?>


$val):?>





<script><BR>document.getElementById('kqPay').click();<BR></script>

models/BillRequest .php
BillRequest.php
复制代代码如下:

class Application_Model_BillRequest
{
public function __construct($MockOrder){
/*
* RMB ゲートウェイ アカウント。
*最初の方法: アカウントは 11 桁の人民元ゲートウェイ加盟店番号 + 01 です。このパラメータは必須です。 01 は中国工商銀行に相当します。
*2 番目の方法: アカウントは 16 桁の人民元ゲートウェイ加盟店です
*/
$this->merchantAcctId = "1001011111101"
// サーバーが支払い結果を受け取るバックエンド アドレス。このパラメーターは入力する必要があります。絶対パス // 空にすることはできません。
$this->bgUrl = "http://99bill/default/index/receive";
//販売者の注文番号、以下は注文番号を定義するために時間を使用します。販売者は定義ルールに従ってこの値を定義できます自分自身の注文番号 // 空にすることはできません。
$this->orderId = 'TOLPC'.sprintf("%09d", $MockOrder['orderId']);
//注文金額、金額は「セント」単位で、販売者テストは 1 でテストできますポイント、大量のテストは行わないでください。このパラメーターは必須です//空にすることはできません
$this->orderAmount =$MockOrder['orderAmount'];
//注文送信時刻、形式: yyyyMMddHHmmss、例: 20071117020101 //空ではありません。
$this->orderTime = date("YmdHis", $MockOrder['orderTime']);
//支払人名、空でも構いません。
$this->payerName= "";
//支払者の連絡先タイプ、1 は電子メールを表します。2 は携帯電話の連絡先を表します。空でも構いません。
$this->payerContactType = "";
//payerContactType 設定に対応する支払者の連絡先情報。payerContactType が 1 の場合は電子メール アドレスを入力し、payerContactType が 2 の場合は携帯電話番号を入力します。空でも構いません。
$this->payerContact = "";
//商品名、空でも構いません。
$this->productName= "TOLPC";
// 製品数量。空でも構いません。
$this->productNum = "1";
//製品コードは空でもかまいません。
$this->productId = $MockOrder['ets_license'];
// 製品の説明。空でも構いません。
$this->productDesc = "";
//支払い方法 (通常は 00) はすべての支払い方法を表します。銀行に直接接続されている販売者の場合、値は 10 で、必須です。 // 空にすることはできません
$this->payType = "00";
// エンコード方式、1 は UTF-8 を表し、2 は GBK を表します。 3 は GB2312 を表します。デフォルトは 1、このパラメータは必須です//空にすることはできません
$this->inputCharset = "1";
//ゲートウェイのバージョン、固定値: v2.0、このパラメータは必須です//空にすることはできませんempty
$this ->version = "v2.0";
//言語タイプ、1 は中国語表示を表し、2 は英語表示を表します。デフォルトは 1 で、このパラメータは必須です//空にすることはできません
$this-> language = "1";
//署名タイプ、値は 4、PKI 暗号化方式を表します、このパラメータは必須です//空にすることはできませんbe empty
$this->signType = "4";
//支払い結果を受け取るページのアドレス。通常、このパラメータは空のままです。
$this->pageUrl = "";
//拡張フィールド 1。販売者は必要なパラメーターを渡すことができ、支払い後に元の値が返されます (空にすることもできます)。
$this->ext1 = $MockOrder['orderId'];
//段落 2 から拡張して、販売者は必要なパラメーターを渡すことができ、支払い後に元の値が返されます (空にすることもできます)。
$this->ext2 = $MockOrder['orderTime'];
//銀行コード。payType が 00 の場合、この値は空でもかまいません。payType が 10 の場合、この値は入力する必要があります。銀行を参照してください。詳細についてはリストをご覧ください。
$this->bankId = "";
//同じ注文の再送信は禁止されています。物理的なショッピング カートには 1 を入力し、仮想商品には 0 を入力します。1 は 1 回のみ送信できることを意味し、0 は送信できることを意味します。支払いが失敗した場合は再提出できます。空でも構いません。
$this->redoFlag = "";
//クイック マネー パートナーの口座番号、つまり販売者番号は空でもかまいません。
$this->pid = "";

//Kuaiqian によって提供されるリクエスト パラメーター。
$KeyOrders = array('inputCharset','pageUrl','bgUrl','version',' language','signType','merchantAcctId','payerName','payerContactType','payerContact',
'orderId' ,'orderAmount','orderTime','productName','productNum','productId','productDesc','ext1','ext2','payType','bankId','redoFlag','pid',) ;

//Kuaiqian によって提供されたリクエスト パラメーターの値が空かどうかを判断し、空でないパラメーターと値を配列に再編成します
foreach($KeyOrders as $key){
if(''== $this-> {$key}){Continue;}
$params[$key] = $this->{$key};
}
//http_build_query() は URL エンコード後にリクエスト文字列を生成します
/ /urldecode() エンコードされていない文字列を復元します
//getSignMsg() PKI 暗号化、MD5 暗号化も使用できます
//MD5 暗号化方式 strtoupper(md5(urldecode(http_build_query($params)))); これはもう一般的には使用されません。
//一般的に使用される PKI 暗号化技術
$this->signMsg = $this->getSignMsg(urldecode(http_build_query($params)));
}

//PKI 暗号化技術

public function getSignMsg($param) {
//99bill-rsa.pem は Kuaiqian の CA 証明書です
// ローカルでランダムに KEY を生成し、この KEY を使用してデータを暗号化します KEY は $priv_key_id
$priv_key_id = openssl_get_privatekey(file_get_contents("99bill-rsa.pem" , " r"));
//$priv_key_id を使用して $param データを暗号化します。
//SHA1 ハッシュ暗号化に続いて $priv_key_id 秘密鍵暗号化を使用して、署名文字列 $param を計算します。データ自体は暗号化されません。
openssl_sign($param, $signMsg, $priv_key_id, OPENSSL_ALGO_SHA1);
//$priv_key_id をストレージから解放します
openssl_free_key($priv_key_id);
//base64 を使用してデータをエンコードします
returnbase64_encode($signMsg);
} }


models/BillResponse.phpBillResponse.php

コードをコピーします コードは次のとおりです:
class Application_Model_BillResponse
{
/*
* __construct ()コンストラクター
* 19 個のパラメーターと値を生成します。1 つのパラメーターは空の値を持つ可能性があり、$this->errCode の値は空である可能性があります
*/
public function __construct($response){
$KeyOrders = array('merchantAcctId ', 'version',' language','signType','payType','bankId','orderId','orderTime','orderAmount',
'dealId','bankDealId','dealTime','payAmount' ,'fee','ext1','ext2','payResult','errCode', 'signMsg');
foreach($KeyOrders as $key){
$this->{$key} = $response[ $key ];
}
}
/*
* 署名文字列を確認します
* Kuaiqian によって返される署名文字列は $this->signMsg です
* Base64 を使用して前の文字列をデコードします
* Kuaiqian によって指定されたパブリック アドレスを確認します鍵の検証
* Kuaiqian は秘密鍵暗号化を使用して $this->signMsg を生成しました
* Kuaiqian は秘密鍵に対応する公開鍵を私たちに提供し、私たちはこの公開鍵を使用して検証しました。成功の場合は 1、失敗の場合は 0、エラーの場合は -1。
*/
public function checkSignMsg(){
$KeyOrders = array('merchantAcctId','version',' language','signType','payType','bankId','orderId','orderTime','orderAmount ',
'dealId','bankDealId','dealTime','payAmount','fee','ext1','ext2','payResult','errCode',);
foreach($KeyOrders as $key) {
if(''==$this->{$key}){Continue;}
$params[$key] = $this->{$key};
}
//$pub_key_id 公開鍵
$pub_key_id = openssl_get_publickey(file_get_contents("99bill-rsa.cer", "r"));
return openssl_verify(urldecode(http_build_query($params)), Base64_decode($this->signMsg), $pub_key_id); }
public function isSuccess(){
//$this->payResult は成功した場合は 10、失敗した場合は 11 です
return '10'==$this->payResult;
}
public function getOrderId(){
return str_replace ( 'XXX', '', $this->orderId);
}
}


公開鍵と秘密鍵が必要です。これはペアではありません
両方とも半分です
99bill-rsa.cer
99bill-rsa.pem

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327972.html技術記事このプロジェクトでは、zend フレームワーク フレームワークを使用して modules/default/controllers/IndexController.php IndexController.php を実装します。 ?php class IndexController extends Zend_Con...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?Apr 17, 2025 am 12:24 AM

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

PHP対Python:ユースケースとアプリケーションPHP対Python:ユースケースとアプリケーションApr 17, 2025 am 12:23 AM

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

さまざまなHTTPキャッシングヘッダー(例:キャッシュコントロール、ETAG、ラスト変更)を説明してください。さまざまなHTTPキャッシングヘッダー(例:キャッシュコントロール、ETAG、ラスト変更)を説明してください。Apr 17, 2025 am 12:22 AM

HTTPキャッシュヘッダーの主要なプレーヤーには、キャッシュコントロール、ETAG、およびラスト修飾が含まれます。 1.Cache-Controlは、キャッシュポリシーを制御するために使用されます。例:キャッシュコントロール:Max-Age = 3600、public。 2。ETAGは、一意の識別子を介してリソースの変更を検証します。例:ETAG: "686897696A7C876B7E"。 3. Last-Modifiedは、リソースの最後の変更時間を示しています。

PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか?PHPでの安全なパスワードハッシュ(例:Password_hash、password_verify)を説明します。 MD5またはSHA1を使用してみませんか?Apr 17, 2025 am 12:06 AM

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHP:サーバー側のスクリプト言語の紹介PHP:サーバー側のスクリプト言語の紹介Apr 16, 2025 am 12:18 AM

PHPは、動的なWeb開発およびサーバー側のアプリケーションに使用されるサーバー側のスクリプト言語です。 1.PHPは、編集を必要とせず、迅速な発展に適した解釈言語です。 2。PHPコードはHTMLに組み込まれているため、Webページの開発が簡単になりました。 3。PHPプロセスサーバー側のロジック、HTML出力を生成し、ユーザーの相互作用とデータ処理をサポートします。 4。PHPは、データベースと対話し、プロセスフォームの送信、サーバー側のタスクを実行できます。

PHPとWeb:その長期的な影響を調査しますPHPとWeb:その長期的な影響を調査しますApr 16, 2025 am 12:17 AM

PHPは過去数十年にわたってネットワークを形成しており、Web開発において重要な役割を果たし続けます。 1)PHPは1994年に発信され、MySQLとのシームレスな統合により、開発者にとって最初の選択肢となっています。 2)コア関数には、動的なコンテンツの生成とデータベースとの統合が含まれ、ウェブサイトをリアルタイムで更新し、パーソナライズされた方法で表示できるようにします。 3)PHPの幅広いアプリケーションとエコシステムは、長期的な影響を促進していますが、バージョンの更新とセキュリティの課題にも直面しています。 4)PHP7のリリースなど、近年のパフォーマンスの改善により、現代の言語と競合できるようになりました。 5)将来的には、PHPはコンテナ化やマイクロサービスなどの新しい課題に対処する必要がありますが、その柔軟性とアクティブなコミュニティにより適応性があります。

なぜPHPを使用するのですか?利点と利点が説明されましたなぜPHPを使用するのですか?利点と利点が説明されましたApr 16, 2025 am 12:16 AM

PHPの中心的な利点には、学習の容易さ、強力なWeb開発サポート、豊富なライブラリとフレームワーク、高性能とスケーラビリティ、クロスプラットフォームの互換性、費用対効果が含まれます。 1)初心者に適した学習と使用が簡単。 2)Webサーバーとの適切な統合および複数のデータベースをサポートします。 3)Laravelなどの強力なフレームワークを持っています。 4)最適化を通じて高性能を達成できます。 5)複数のオペレーティングシステムをサポートします。 6)開発コストを削減するためのオープンソース。

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境