JAvaサードパーティ支払--アリペイ
7213 ワード
まずアリペイのjarパッケージをmavenプロジェクトにインポートします.具体的な操作は参照してください. mavenは、集中倉庫にないjarパッケージをローカル倉庫にインポートします.
そしてコードは以下の通りで、支付宝公式が与えたdemoとほぼ同じで、重点は
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", BasePayConstants.ALIPAY_PARTNER, BasePayConstants.RSA_PRIVATE_KEY, "json", BasePayConstants.ALIPAY_CHARSET, BasePayConstants.RSA_PUBLIC_KEY, "RSA2");
このコードのパラメータ.
1、https://openapi.alipay.com/gateway.do フィールドを固定するには、アリペイ開発者のドキュメントを参照してください.
2、BasePayConstants.ALIPAY_PARTNER 提携先IDのため、これは支付宝商戸情報の中で支付宝の住所を調べることができます
3、BasePayConstants.RSA_PRIVATE_KEY これはユーザー秘密鍵で、javaコードはpkcs 8フォーマットで、必ず支付宝の中の応用公開鍵で検証して、具体的にどのように生成するかは参考にしてください(支付宝はどのように商戸公開鍵と秘密鍵を生成します).
4、BasePayConstants.RSA_PUBLIC_KEYは支付宝の公開鍵にすぎず、商家情報で問い合わせることができる.
次のコードが正常に実行されました.
alipay_sdk=alipay-sdk-java-dynamicVersionNo&app_id=2017052007295052&biz_content=%7B%22body%22%3A%22%5C%5Cu5728%5C%5Cu7ebf%5C%5Cu652f%5C%5Cu4ed8%5C%5Cu9ad8%5C%5Cu901f%5C%5Cu901a%5C%5Cu884c%5C%5Cu8d39%22%2C%22out_trade_no%22%3A%22com.sddg.appapi.server.escrow.MakeOrderNum%4034f2336f%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22subject%22%3A%22%5C%5Cu652f%5C%5Cu4ed8%5C%5Cu8f66%5C%5Cu8d39%22%2C%22timeout_express%22%3A%2290m%22%2C%22total_amount%22%3A%220.1%22%7D&charset=utf-8&format=json&method=alipay.trade.app.pay¬ify_url=http%3A%2F%2Fn52prx.natappfree.cc%2Falipay%2FtradeCallback&sign=gfpmKSNRVehKRsNavUXmqLoqoHUMve7Vx1Ew7xOuCVTVV%2FHEdYq8W3R01uNBouhznFAWWULA5B1XMTHJhuUCqKa1h2cvzdrBlYqog18oW0ewCgeS5Tnznat4HzrB4%2F%2BCc8qiDWW%2FrbvdSn0l1cHVcyvcTmTdf2jwyIYPsJ9BK1A4DW0c1vPKXaEoSHTJ1z4uCUKLdCV9OBK3pPsaF%2FPAKo8ZnoAlAw3Fi59vZLmMokIWbeVNBc1%2BohdNNM61tPdjES7PCW04uoBK6NBaiV1JPy0ynuDxIfRgdKJuB4pF6xuaUmGG5Ri6qMByLLvayy0oLN7WiLfKZrlb6EJsdaDiXw%3D%3D&sign_type=RSA2×tamp=2017-06-06+14%3A41%3A42&version=1.0
そしてコードは以下の通りで、支付宝公式が与えたdemoとほぼ同じで、重点は
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", BasePayConstants.ALIPAY_PARTNER, BasePayConstants.RSA_PRIVATE_KEY, "json", BasePayConstants.ALIPAY_CHARSET, BasePayConstants.RSA_PUBLIC_KEY, "RSA2");
このコードのパラメータ.
1、https://openapi.alipay.com/gateway.do フィールドを固定するには、アリペイ開発者のドキュメントを参照してください.
2、BasePayConstants.ALIPAY_PARTNER 提携先IDのため、これは支付宝商戸情報の中で支付宝の住所を調べることができます
3、BasePayConstants.RSA_PRIVATE_KEY これはユーザー秘密鍵で、javaコードはpkcs 8フォーマットで、必ず支付宝の中の応用公開鍵で検証して、具体的にどのように生成するかは参考にしてください(支付宝はどのように商戸公開鍵と秘密鍵を生成します).
4、BasePayConstants.RSA_PUBLIC_KEYは支付宝の公開鍵にすぎず、商家情報で問い合わせることができる.
次のコードが正常に実行されました.
alipay_sdk=alipay-sdk-java-dynamicVersionNo&app_id=2017052007295052&biz_content=%7B%22body%22%3A%22%5C%5Cu5728%5C%5Cu7ebf%5C%5Cu652f%5C%5Cu4ed8%5C%5Cu9ad8%5C%5Cu901f%5C%5Cu901a%5C%5Cu884c%5C%5Cu8d39%22%2C%22out_trade_no%22%3A%22com.sddg.appapi.server.escrow.MakeOrderNum%4034f2336f%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22subject%22%3A%22%5C%5Cu652f%5C%5Cu4ed8%5C%5Cu8f66%5C%5Cu8d39%22%2C%22timeout_express%22%3A%2290m%22%2C%22total_amount%22%3A%220.1%22%7D&charset=utf-8&format=json&method=alipay.trade.app.pay¬ify_url=http%3A%2F%2Fn52prx.natappfree.cc%2Falipay%2FtradeCallback&sign=gfpmKSNRVehKRsNavUXmqLoqoHUMve7Vx1Ew7xOuCVTVV%2FHEdYq8W3R01uNBouhznFAWWULA5B1XMTHJhuUCqKa1h2cvzdrBlYqog18oW0ewCgeS5Tnznat4HzrB4%2F%2BCc8qiDWW%2FrbvdSn0l1cHVcyvcTmTdf2jwyIYPsJ9BK1A4DW0c1vPKXaEoSHTJ1z4uCUKLdCV9OBK3pPsaF%2FPAKo8ZnoAlAw3Fi59vZLmMokIWbeVNBc1%2BohdNNM61tPdjES7PCW04uoBK6NBaiV1JPy0ynuDxIfRgdKJuB4pF6xuaUmGG5Ri6qMByLLvayy0oLN7WiLfKZrlb6EJsdaDiXw%3D%3D&sign_type=RSA2×tamp=2017-06-06+14%3A41%3A42&version=1.0
public class AliPayApi {
/* :
1、 key=value&key=value
2、
3、 value(biz_content value) encode( charset )
*/
Logger logger = LoggerFactory.getLogger(getClass());
public String getTradeUrl(BigDecimal payMoney) throws AlipayApiException {
MakeOrderNum makeOrderNum = new MakeOrderNum();
// SDK ,
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", BasePayConstants.ALIPAY_PARTNER, BasePayConstants.RSA_PRIVATE_KEY, "json", BasePayConstants.ALIPAY_CHARSET, BasePayConstants.RSA_PUBLIC_KEY, "RSA2");
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
//
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setBody(BasePayConstants.GOODS_INFO); //
model.setSubject(BasePayConstants.GOODS_NAME); //
model.setOutTradeNo(String.valueOf(makeOrderNum)); // ( )
model.setTimeoutExpress(BasePayConstants.ALIPAY_TIMEOUT_EXPRESS); //
model.setTotalAmount(String.valueOf(payMoney)); //
model.setProductCode(BasePayConstants.ALIPAY_PRODUCT_CODE); //
request.setBizModel(model);
request.setNotifyUrl(BasePayConstants.ALIPAY_NOTIFY_URL + BasePayConstants.ALIPAY_FRONT_CALLBACK_URL); //
try {
// , sdkExecute
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
System.out.println(response.getBody());
return response.getBody(); // orderString , 。
} catch (AlipayApiException e) {
e.printStackTrace();
}
return "error";
}
}