今回は、PHP サーバーに Alipay APP 決済を統合する手順について詳しく説明します。PHP サーバーに Alipay APP 決済を統合するための 注意事項は何ですか? ここで実際のケースを見てみましょう。
同社のビジネスはシンプルで、Alipay 支払いのみをサポートしているため、返金、問い合わせ、その他の追加機能について心配する必要はありません。そのため、この記事では、Alipay を使用するときにサーバーが支払い注文情報を取得するためにアプリを準備する方法についてのみ説明します。支払いインターフェースの一般的なプロセスは次のとおりです
1. アプリケーションと構成を作成します
まず、Ant Financial 開発プラットフォーム (open.alipay.com) にアプリケーションを登録し、アプリケーション ID を取得する必要があります。ここでの設定には主に、契約の署名と RSA2 公開キーと秘密キーの生成が含まれます。公式 Web サイトのこの部分のバックエンドにはプロンプトが表示されます。次に、対応する SDK をダウンロードします。ここでは PHP バックエンドにサービスを統合しています。ダウンロードするのは PHP SDK、アドレス:https://
docs.open.alipay.com/54/103419/3. アクセス可能な実際のドメイン名を準備します
4. ケース上記の 3 つのステップが完了したら、独自のビジネス コードを設定できます
4.1. 支払い時に支払い注文情報を整理しますby APP<?php
require_once (DIR.'/alipay-sdk-PHP-20171023143822/AopSdk.php');
class Alipay
{
/**
* 应用ID
*/
const APPID = '你的应用ID';
/**
*请填写开发者私钥去头去尾去回车,一行字符串
*/
const RSA_PRIVATE_KEY = '应用对应开发者私钥';
/**
*请填写支付宝公钥,一行字符串
*/
const ALIPAY_RSA_PUBLIC_KEY = '支付宝提供的公钥';
/**
* 支付宝服务器主动通知商户服务器里指定的页面
* @var string
*/
private $callback = "http://www.test.com/notify/alipay_notify.php";
/**
*生成APP支付订单信息
* @param string $orderId 商品订单ID
* @param string $subject 支付商品的标题
* @param string $body 支付商品描述
* @param float $pre_price 商品总支付金额
* @param int $expire 支付交易时间
* @return bool|string 返回支付宝签名后订单信息,否则返回false
*/
public function unifiedorder($orderId, $subject,$body,$pre_price,$expire){
try{
$aop = new \AopClient();
$aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
$aop->appId = self::APPID;
$aop->rsaPrivateKey = self::RSA_PRIVATE_KEY;
$aop->format = "json";
$aop->charset = "UTF-8";
$aop->signType = "RSA2";
$aop->alipayrsaPublicKey = self::ALIPAY_RSA_PUBLIC_KEY;
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
$request = new \AlipayTradeAppPayRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数
$bizcontent = "{\"body\":\"{$body}\"," //支付商品描述
. "\"subject\":\"{$subject}\"," //支付商品的标题
. "\"out_trade_no\":\"{$orderId}\"," //商户网站唯一订单号
. "\"timeout_express\":\"{$expire}m\"," //该笔订单允许的最晚付款时间,逾期将关闭交易
. "\"total_amount\":\"{$pre_price}\"," //订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
. "\"product_code\":\"QUICK_MSECURITY_PAY\""
. "}";
$request->setNotifyUrl($this->callback);
$request->setBizContent($bizcontent);
//这里和普通的接口调用不同,使用的是sdkExecute
$response = $aop->sdkExecute($request);
//htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题
return htmlspecialchars($response);//就是orderString 可以直接给客户端请求,无需再做处理。
}catch (\Exception $e){
return false;
}
}
}
4.2. Alipay 支払い成功後の非同期コールバック処理
<?php /** * alipay_notify.php. * User: lvfk * Date: 2017/10/26 0026 * Time: 13:48 * Desc: 支付宝支付成功异步通知 */ include_once (DIR.'/../alipay-sdk-PHP-20171023143822/AopSdk.php'); //验证签名 $aop = new \AopClient(); $aop->alipayrsaPublicKey = \Comm\Pay\Alipay::ALIPAY_RSA_PUBLIC_KEY; $flag = $aop->rsaCheckV1($_POST, NULL, "RSA2"); //验签 if($flag){ //处理业务,并从$_POST中提取需要的参数内容 if($_POST['trade_status'] == 'TRADE_SUCCESS' || $_POST['trade_status'] == 'TRADE_FINISHED'){//处理交易完成或者支付成功的通知 //获取订单号 $orderId = $_POST['out_trade_no']; //交易号 $trade_no = $_POST['trade_no']; //订单支付时间 $gmt_payment = $_POST['gmt_payment']; //转换为时间戳 $gtime = strtotime($gmt_payment); //此处编写回调处理逻辑 //处理成功一定要返回 success 这7个字符组成的字符串, //die('success');//响应success表示业务处理成功,告知支付宝无需在异步通知 } }
5. エラー 40001=>isv.invalid-signature を報告し続けるそのためには理由を調べて、アプリケーションの RSA2 公開キーと秘密キーを数回再生成しましたが、すべて効果がないことがわかりました。最後に、オンライン情報と組み合わせると、
Alipay コールバック アドレスの NoticeUrl には '?' を含めることはできず、?
5.2 の後に Alipay 非同期通知は成功しますが、$_POST は空であることがわかりました。 これにも費用がかかります 検索に時間がかかり、最初はAlipayの提案に従ってHTTSを使用してリクエストしました。しかし、この方法では、アプリケーションのバックグラウンドはパラメーターの内容がないことを通知し続けます。最後に、私たちのアプリケーションは HTTS 双方向認証を使用しているため、Alipay のサーバー コールバックのパラメーターが空であることを思い出しました。最後に、コールバックアドレスをHTTPに変更し、検証に合格しました
発生した問題を解決したら、まずAlipayのドキュメントの説明とAlipayが提供するエラーコードの説明を確認してください。うまくいかない場合は、BaiduまたはGoogleを使用してください。私自身の継続的なテストと検証により、最終的に問題は必ず解決されます現時点では、Alipay APPの支払い機能は完了しており、他のAPPの返金、明細書などの機能は継続されていません。 Alipay の公式 Web サイトのドキュメントと、Alipay が提供する SDK を独自のアプリケーションに統合するのは時間の問題です。
この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。推奨読書: データベースをThinkPHPフレームワークPDOに接続する手順の詳細な説明
Laravel5のあいまい一致および複数条件クエリ機能を実装する手順の詳細な説明
以上がAlipay APPをPHPサーバーに統合するための支払い手順の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。