ping 支払いサーバー SDK は thinkphp フレームワークに導入されています
ping++ 支払いプラットフォームは、Alipay、WeChat Pay、Baidu Wallet、UnionPay Payment などの主流の支払い方法を統合します。また、開発ドキュメントがわかりやすくて使いやすいので、その SDK をサーバーサイド (thinkphp) [テストモードで] 使用する手順を記録するためにブログを書きたいと思います。
始める前に、支払いプロセスを説明する公式ドキュメントを参照することをお勧めします:
ステップ 1: www.pingxx.com にアクセスして、新しいアカウントを登録します。登録が完了し、パーソナル センターに入ると、いくつかのパラメータを取得します。
①テスト秘密鍵: (このパラメータは、サーバー側 (クライアントのテスト公開可能キーと組み合わせて使用)
②ping++ 公開キー: (支払いが完了すると、プラットフォームは Webhook をサーバーに返します。このパラメーターは、サーバーのセキュリティを確認するために使用されます)トランザクション)
③ テスト公開キー: (このパラメータはクライアント側で使用され、上記のサーバー側の Test Serect Key と組み合わせて使用されます)
④ マーチャント公開鍵: (RSA 署名の検証に使用されます)マーチャント公開鍵ペアの生成方法については、図の青い文字の指示に従って簡単に完了できるため、ここでは詳しく説明しません。公開キーのペアを生成したら、次の図のテキストエリアに公開キーを入力します。最初に秘密キーを保存しておきます。これは後で役立ちます。
ステップ 2: 公式サーバー SDK と PHP をダウンロードする リンクは次のとおりです。 https://github.com/PingPlusPlus/pingpp-php
ダウンロード後、押して thinkphp の 3 番目の中に置きます-party ライブラリ拡張ディレクトリ:
左に示すように、lib フォルダー、init.php、
手順④で生成された公開鍵ペアの秘密鍵。 dataフォルダ内のファイルですが、HTTPSを利用する際に使用するセキュリティ証明書なので、とりあえず持ってきます。
第 3 ステップ: コード内で上記のパラメーターを使用して、導入が成功したかどうかを確認します: (サンプル コードは次のとおりです)
public function index(){ $api_key = '请填写自己的Test Serect Key'; //API-KEY,注册ping++时自动生成 $app_id = '请填写自己的APP的ID'; //APP_ID,注册时自动生成 Vendor('pingpp.init'); //引入类库初始化文件 //以支付宝,支付10块钱。注意amount为1000,单位是”分钱“ $input_data = array('channel'=>'alipay', 'amount'=>1000); //$input_data应该是你从APP客户端收到的json数据(根据业务可以在服务器端定义),需json_decode if (empty($input_data['channel']) || empty($input_data['amount'])) { echo 'channel or amount is empty'; //检验支付参数 exit(); } $channel = strtolower($input_data['channel']); //支付渠道:支付宝 $amount = $input_data['amount']; //支付金额10块钱 $orderNo = substr(md5(time()), 0, 12); //订单号,必须唯一。根据支付渠道不同,长度要求也不一样,请查看文档https://www.pingxx.com/api#api-c-new \Pingpp\Pingpp::setPrivateKeyPath(VENDOR_PATH . '/pingpp/rsa_private_key.pem'); //引入你的签名私钥 //$extra用于设置支付渠道所需的额外参数,额外参数多数是可选,请根据需求来决定。详情看参考文档 // $extra = array( // 'success_url' => 'http://example.com/success', // 'cancel_url' => 'http://example.com/cancel' // ); \Pingpp\Pingpp::setApiKey($api_key); //设置API-KEY try { $ch = \Pingpp\Charge::create( //create方法表示发送支付请求到ping++平台,$ch表示请求成功时返回的charge对象(json格式),服务器端如果发起请求成功,此时只需要把charge对象传递给APP客户端,交给客户端处理 array( 'subject' => 'Your Subject', //关于这些参数的意义,请参考文档https://www.pingxx.com/api#api-c-new 'body' => 'Your Body', 'amount' => $amount, 'order_no' => $orderNo, 'currency' => 'cny', // 'extra' => $extra, 'channel' => $channel, 'client_ip' => $_SERVER['REMOTE_ADDR'], 'app' => array('id' => $app_id) ) ); echo $ch; } catch (\Pingpp\Error\Base $e) { //如果发起支付请求失败,则抛出异常 // 捕获报错信息 if ($e->getHttpStatus() != NULL) { header('Status: ' . $e->getHttpStatus()); echo $e->getHttpBody(); } else { echo $e->getMessage(); } } //代码到此处,如果你向ping++平台请求支付成功,并且把charge对象传递给了客户端,那么接下来客户端如果成功完成了支付,那么 //平台将会请求你填写的Webhooks回调url,在该url里,接收 Webhooks 通知,根据数据的结果做出逻辑判断:如果支付成功....,如果支付失败...
ステップ 4: Webhook のコールバック アドレスを入力します。クライアントによって開始された支払いがトランザクションを完了すると、成功したトランザクションの JSON メッセージがコールバック アドレスに返されます。JSON に基づいてデータベースとビジネスに応答できます。メッセージに応答するか、支払いエラー メッセージをスローします。 Webhook
に記入するには、パーソナル センターにアクセスして記入してください。非常に簡単なので詳細は説明しません。