ホームページ >Java >&#&チュートリアル >JavaがAlipay決済インターフェースを呼び出すケースの詳細な説明
1. Alipay のドキュメントは、主に対応するデモがあるため、比較的読みやすいです。ここで見ているデモは JAVA-UTF-8 バージョンです。
2. デモをインポートし、対応するパートナーを入力し、com.alipay.config (対応する販売者のバックエンドから取得) を入力すると、支払いプロセスを直接実行して理解することができます。
3. 書き直し: ここでは springmvc+mybatis を使用しています。製品が購入 (Alipay による支払い) を開始し、Alipay にジャンプし、Alipay が支払いステータスをコールバックします。
1. 製品の購入リクエストを開始します (デモのページを直接使用します)。
[javascript] プレーンを表示
クラス=「ヘッダー」 >
class
class
クラス
"16px" src="img/little_qrcode.jpg" id="licode" >
class
class
class
"img/guanzhu_qrcode.png" width="80">
/</p> Bottom: 5px;" & gt;
重要な情報を受け取る t & lt;/p & gt;& lt;/p & gt;
& lt;/p & gt;
& lt;/p & gt;
class
class
"https://www.alipay.com/" class="logo">
class="桟橋">
"http://open.alipay.com/platform/home.htm" class="open"ターゲット=" _blank">开放平台
class
="navbar">
class
class
class
ターゲット= "_blank"> ;
class
class
class
=
"権利"id="WIDsubject" value="テスト製品 123"&g t;
>注: 製品名 (件名) ) は必須です (中国語、英語、数字が推奨され、特殊文字は使用できません)class
=
>/p > B & lt; & lt; p =
& & gt;埋め込み (形式: 1.00、お願いします、お願いします、お願いします、お願いします、お願いします、お願いします、お願いします、お願いします、最も近い分まで正確です)クラス="資格" >商品説明:
name="WIDbody" id= 「WIDbody」 value=「インスタント信用テスト」
>支払いを確認します>
class
class
"http://ab.alipay.com/i/index.htm"target="_blank">サポート付宝について |
"https://e.alipay.com/index.htm"target="_blank">商家中心|スパン>
"https://job.alibaba.com/zhaopin/index.htm"target="_blank">诚征英才 ;|
"http://ab.alipay.com/i/lianxi.htm"target="_blank">联系我们
"#" id="インターナショナル"target="_blank">インターナショナル ビジネス|
"http://ab.alipay.com/i/jieshao.htm#en"target="_blank">Alipayについて ;
支付宝版权すべて
class="フッター-日付">2004-2016
"http://fun.alipay.com/certificate/jyxkz.htm"target="_blank"> ICP证:沪B2-20150087
「[javascript]
$(
関数$(
).on(
'click',
(){
type: "post"
,data : {
WIDout_trade_no : $('#out_trade_no').val(),
WIDsubject : $('#WIDsubject')。 val(),
WIDtotal_fee : $('#WIDtotal_fee').val(),
WIDbody: $('#WIDbody').val( )
},
url : "${ctx}/aliPay/open",
成功 : 関数(データ) {
$('#returnAli').append(data.sHtmlText);
}、
エラー: 関数(da){
}
})
});
[javascript] view plain copy
@RequestMapping(
) public
String WIDbody) {
/////////////////////////////////////リクエストパラメータ/////// /////////////////////////////
// 販売者の注文番号、販売者の Web サイトの注文システム内の唯一の注文番号、必須
//注文名、必須
Map
HashMap
, AlipayConfig.service);
sParaTemp.put("パートナー", AlipayConfig.partner);
sParaTemp.put("seller_id", AlipayConfig.seller_id);
sParaTemp.put("_input_charset", AlipayConfig.input_charset);
sParaTemp.put("payment_type", AlipayConfig.payment_type);
sParaTemp.put("notify_url", AlipayConfig.notify_url);
sParaTemp.put("return_url", AlipayConfig.return_url);
sParaTemp.put("anti_phishing_key", AlipayConfig.anti_phishing_key);
sParaTemp.put("exter_invoke_ip", AlipayConfig.exter_invoke_ip);
sParaTemp.put("out_trade_no", out_trade_no);
sParaTemp.put("件名", 件名);
sParaTemp.put("total_fee", total_fee);
sParaTemp.put("body", body);
// ドキュメントのアドレス: https://doc.open. alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.O9yorI&treeId=62&articleId=103740&docType=1
// sParaTemp .put("パラメータ名","パラメータ値 ");
String sHtmlText = AlipaySubmit.buildRequest(sParaTemp, "get", "確認"
);/ /支払い記録を保存 hysWebMeetingAliService.insertSelective(sParaTemp);
return newResponseEntity(model, HttpStatus.OK)
;
4. コールバック:また、デモのnotify_url.jspのJavaコードを直接取得し、少し変更してビジネスコードを追加しました(ステータスの変更など)
@RequestMapping(
"notify"
)
@ResponseBody
String Notice(HttpServletRequest request){
//POST 経由で Alipay からフィードバックを取得します
Map
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
文字列名= (文字列) iter.next() ;
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
}
//コード化け解決策、文字化けが発生した場合に使用するコードです。 mysign と signed が等しくない場合は、このコードを使用して
//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "gbk") を変換することもできます。 ;
params.put(name, valueStr) }
//Merchant order Number
文字列 out_trade_no = request.getParameter("out_trade_no"
);
String trade_status = request.getParam eter("trade_status");
/Alipayの通知リターンパラメータを取得してください技術資料のページジャンプを参照してください。ドキュメント 同期通知パラメータリスト (上記は参考用です) //
if(AlipayNotify.verify(params)){//検証が成功しました
//////////////// ///////////////////////////////////////////////// /////////////////////////
//販売者の情報を追加してくださいビジネスロジックのプログラムコードはこちら
注文が販売者の Web サイトで処理されたかどうか 做没有 // 処理されていない場合は、注文番号 (OUT_TRADE_NO) に従って、販売者の Web サイトの注文システムで注文の詳細を確認できます。マーチャントのビジネス プログラムを実装します //リクエスト中の total_fee と seller_id が、通知中に取得した total_fee と seller_id と一致していることを確認してください。 ️ // 返金日が返金可能期間 (3 か月など) を超えると、Alipay システムから取引ステータス通知が送信されます
//注文がマーチャントウェブサイトに配置されているかどうかを決定します。処理していない場合、処理されていない場合は、商人ウェブサイトの注文システムの注文の詳細を見つけます。注文番号 (out_trade_no) を入力し、販売者の業務プログラムを実行する必要があります 务 // リクエストが要求された場合は、TOTAL_FEE、SELLER_ID、Total_fee、Seller_ID を必ず判断してください 業務手順
//支払いが完了した後、Alipayシステムはトランザクションステータスの通知を送信します
{
///////////// /////////////////////// ///////////////////////////////////////////////// //////
}else
//検証に失敗しました
//out.print("f大変です");
「失敗」;
5. return_url: ページ ジャンプ同期通知ページのパスは、支払いが成功した後に Alipay が戻るページです。 「http:// 形式の完全なパスが必要であり、?id=123 などのカスタム パラメータは追加できません。外部ネットワークに正常にアクセスできる必要があります。」 Alipay は、バウンスするページの後にカスタム パラメータを追加できないことを明確に規定しています。ジャンプをいくつかのタイプに基づいて判断するのは少し面倒です。ここでトリックを実行しました。まず return_url.jsp の Java コードを直接移動し、少し変更します (springmvc メソッドに変更します)。バウンス アドレスは IP/aliPay/returnUrl で、次に新しい ModelAndView ("redirect:/meeting/info") です。 ) 考えている URL にリダイレクトします (パラメータの問題については、以下の概要のポイント 4 を参照してください)。
[javascript] view plain copy
@RequestMapping("returnUrl")
publicModelAndView returnUrl( HttpservletRequest リクエスト) {
ModlandView MV = New ModratView ( "リダイレクト:/会議/情報"
// Alipay からフィードバックを受け取る
Map
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
文字列 名前 = (文字列) iter.next() ;
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
MySign と Sign が等しくない場合は、このコードを使用して
// valueStr = New String
params.put(name, valueStr) を変換することもできます。 ;
}
ページジャンプ同期通知パラメータのリストドキュメント (以下は参照のみです) //
String out_trade_no = request.getParameter("out_trade_no"); .getParameter("trade_no"
) を使用します。transactionトランザクションステータス= l "#ff0000;" >
booleanverify_result= alipaynotify.verify(params);
////////////// ////////////////////////////// ///////////////////////////////////////
(trade_status.equals(" TRADE_FINISHED"
) || trade_status.equals()){
やって無し // 処理されなかった場合は、注文番号 (OUT_TRADE_NO) に従って、販売者の Web サイトの注文システムで注文の詳細を確認し、販売者のビジネス プログラムを実装します。做有 // 実行済みの場合は、販売者の業務手続きを行わないでください
// このページはページアーティストとして使用できます 編集
// out.println("検証成功
");
//——ビジネスロジックに基づいてくださいプログラム (上記のコードは参考用です)——
/////////////////////// ///////////////////////////////////////////////
1. Alipay の統合は比較的簡単です。デモを見て、プロセスを理解すると簡単になります。 2. デバッグ時、特にコールバック時には、プロジェクトを外部ネットワークからアクセスできるサーバーにデプロイする必要があります。
3. 上記の不可解な問題が発生したことがない場合は、私に連絡するか、Eclipse のリモート デバッグに関するこの記事を読んで問題を追跡してください。 4. ページジャンプ通知ページのパスを同期するときにパラメータを渡す必要がある場合はどうすればよいですか? 最初にパラメータをカスタマイズしましたが、次のようなコメントが表示されました。
[javascript]
// ドキュメントのアドレス: https://doc.open.alipay に従って、その他のビジネスパラメータが追加されます。 com/doc2/detail.htm?spm=a219a.7629140.0.0.O9yorI&treeId=62&articleId=103740&docType=1
それで私はそれを開いて、パブリックリターンパラメータextra_common_paramを選択しました、私はそれを自分で知っていますこの分野は私にとって意味があります。しかし、注意する必要もあると他の人は説明しました:
[javascript]view plaincopy
パラメータ body (製品説明)、subject (製品名)、extra_common_param (パブリック戻りパラメータ) には、特殊文字 ( : #、%、&、+)、デリケートな単語、および外国語文字は使用できません (Want Want がサポートしていない外国語: 韓国語、タイ語、チベット語、モンゴル語、アラビア語
openメソッド 中間値:
[javascript] view plain copy
"extra_ common_param" 、会議 ID);
[javascript]
view plaincopy
String会議Id = request.getParameter("extra_common_param");
関連する推奨事項:
Alipay 支払いインターフェース シングルトランザクションクエリインターフェース
以上がJavaがAlipay決済インターフェースを呼び出すケースの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。