PHP WebサイトでのYandex.Moneyの自動受け入れ

Yandex.Moneyを受け入れるためのドキュメントには、PHPでの特定の例が含まれていないため、Yandex.MoneyがPHPで受け入れる方法の詳細を理解することなく、できるだけ速くすべてを固定できます。 データセンターでYandex.Moneyが自動的に受け入れられるようになったので、他の開発者の時間を大幅に節約するために、PHPコードの例を使用して手順を追って説明します。



当初、Yandex.Moneyの自動承認は私にとって非常に難しいようでした。 しかし、結局のところ、すべてがWebMoneyより単純です。



ステップ1:支払いを受け入れるためのHTMLフォームを作成する



フォーム自体のコードは、 money.yandex.ru / embed / quickpay / shop.xmlで生成できますが、目標は自動的に支払いを受け入れることなので、クライアントが支払うフォームIDをHTMLフォームに追加する必要があります。 そして、ほとんどの場合、請求書の全額、つまり クライアントにYandexの手数料0.05%を割り当てるため、結果としてHTMLフォーム

phpスクリプトでは、次のように生成されます。



$sum = 1.005*$i->itsum; print <<<HTML <p>       . 0.5%.     , , ,     /1.005.     ,         ,    . </p> <p> <b>        online,      .</b> </p> <iframe allowtransparency="true" src="https://money.yandex.ru/embed/shop.xml?uid=4100138353971&writer=seller&targets=i$i->id&default-sum=$sum&button-text=01&hint=" frameborder="0" height="163" scrolling="no" width="450"></iframe> HTML;
      
      







2つの変数$ sumと$ i-> idに注意してください

また、保護コードを使用した支払いは自動的にクレジットされないという警告を追加しました。 私たちのシステムでは、保護コードは決して推測できません



ウェブサイトにこのフォームを実装することにより、Yandex.Walletで既にお金を受け取り、どの口座番号で支払いが行われたかを確認できます。 支払いを自動的に入金するには、次の手順に従う必要があります。



ステップ2:PHPライブラリをダウンロードして、Yandex.Money APIを使用する



ライブラリはこちらから入手できますgithub.com/melnikovdv/PHP-Yandex.Money-API-SDK

次に、それを解凍して、たとえばディレクトリ/ invoice / ym /のサイトにコピーする必要があります

libおよびsampleフォルダーは、それぞれ/ invoice / ym /ディレクトリーに表示されます



ステップ3:Yandex.Money APIを使用するためのアプリケーションを登録する



これはここで行うことができますsp-money.yandex.ru/myservices/new.xml



たとえば、次の値があります。





アプリケーションの名前:

(ユーザーに表示され、アプリケーションの権利が付与されます)ITSoft



あなたのウェブサイトのアドレス: itsoft.ru



uriのリダイレクト: itsoft.ru/invoice/ym/sample/index.php

(ユーザーがアクセスを許可または拒否した後にYandex.Moneyサーバーがリダイレクトするアドレス。ドキュメントのredirect_uriパラメーターに対応)



アプリケーション認証を使用するはい

-アプリケーションを登録すると、「Application Identifier」と「OAuth2 client_secret:」が表示されます。

突然失われた場合は、Yandex.Moneyアカウントの設定で、[アプリケーション]セクションsp-money.yandex.ru/tunes.xml?from=balでいつでも取得できます。右側には[構成]ボタンがあります。



アプリケーション識別子と「OAuth2 client_secret」をファイル/invoice/ym/sample/consts.phpにコピーする必要があります

同じ場所で、REDIRECT_URIを値yourdomain.ru/invoice/ym/sample/index.phpに初期化します



ステップ4:PHPライブラリを使用してYandex.Walletで動作するトークンを取得する



スクリプトyourdomain.ru/invoice/ym/sample/index.phpで 、コメントする必要があります

次の行:

//見る 10〜16行目と以下に示すコメントの場合、これらの操作は必要ないので、許可を求めません。

 $scope = "account-info " . "operation-history " . "operation-details " /*. "payment.to-account(\"410011161616877\",\"account\").limit(30,10) " . "payment.to-pattern(\"337\").limit(30,10) " . "money-source(\"wallet\",\"card\") " */; $authUri = YandexMoneyNew::authorizeUri(CLIENT_ID, REDIRECT_URI, $scope);
      
      





また、82行目から131行目までコメントします。



ここで、ブラウザでスクリプトyourdomain.ru/invoice/ym/sample/index.phpを呼び出し、ログインして受信したトークンを保存する必要があります。 注意してください、トークン全体をコピーしてください、それは非常に長いです。



すでに勝利に近づいています。



ステップ5:ウォレットへの支払いの受領時にYandex.Moneyが呼び出すコールバックスクリプトを設定する



このページsp-money.yandex.ru/myservices/online.xmlで、スクリプトのアドレスを入力する必要があります。例: itsoft.ru/invoice/ym/payment.php



テストボタンをクリックできますが、ハンドラスクリプトはまだありませんが、サイトのウォレットから1ルーブルを支払うことでテストする必要があります。



[通知を送信]ボックスをオンにして[保存]をクリックします。



このページの秘密鍵が必要になります。 保存してください。





ステップ6:支払いの処理と入金



スクリプトitsoft.ru/invoice/ym/payment.phpは次のようになります。顧客の注文の処理のみに関連する多くの詳細を削除しました。



 <? require_once(dirname(__FILE__) . '/lib/YandexMoney.php'); require_once(dirname(__FILE__) . '/sample/consts.php'); if($_POST['codepro']!='false') { //   ,     exit; } $str=$_POST['notification_type'] . '&' . $_POST['operation_id'] . '&' . $_POST['amount'] . '&' . $_POST['currency'] . '&' . $_POST['datetime'] . '&' . $_POST['sender'] . '&' . $_POST['codepro'] . '&    https://sp-money.yandex.ru/myservices/online.xml&' . $_POST['label']; if(sha1($str)!=$_POST['sha1_hash']) { //  exit; } $ym = new YandexMoneyNew(CLIENT_ID); $token='    4'; $resp = $ym->operationDetail($token, $_POST['operation_id']); if($resp->isSuccess()) { $operation_id = $_POST['operation_id']; $sender = $_POST['sender']; $amount = $_POST['amount']; $datetime = $_POST['datetime']; preg_match('/i(\d+);/', $resp->getMessage(), $m); $invoice_id = $m[1]; //  } ?>
      
      







まあ、それがすべてです。 質問がありますので、ここで質問してください。みんなに答えようとします。



PS

この記事では、Yandex.Moneyのレセプションをすばやく固定する方法について説明します。 誰でも、タスクとニーズに応じてPHPスクリプトのコードを書き換えることができます。



All Articles