当初、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スクリプトのコードを書き換えることができます。