首頁>技術>

找到頁或者移動應用列表

你可以看到你已申請的應用

package com.fast.tpp.dto;public class AlipayConfig {        /**         * 簽約的支付寶賬號對應的支付寶唯一使用者號,以2088開頭的16位純數字組成         */        public static final String PID = "xx";        /**         * 正式環境請求地址         */        public static String ALIPAY_URL = "https://openapi.alipay.com/gateway.do";        /**         * 支付寶分配給開發者的應用ID         *         */        public static String APP_ID = "xx";        /**         * 僅支援JSON         */        public static String FORMAT = "JSON";        /**         * 請求使用的編碼格式         */        public static String CHARSET = "utf-8";        /**         * 商戶生成簽名字串所使用的簽名演算法型別         */        public static String SIGN_TYPE = "RSA2";        /**         * 支付寶公鑰         */        public static String ALIPAY_PUBLIC_KEY =xx";        /**         * 商戶私鑰         */        public static String PRIVATE_KEY =xx";        /**         * 回撥地址         */        public static String CALLBACK_URL = "xx";        /**         * web支付跳轉地址         */        public static String WEB_RETURN_URL = "xx";}
4、初始化阿里支付相關配置,只貼部分程式碼作參考
@Service@Log4j2public class AlipaySaoImpl implements AlipaySao {    @Autowired    private RedisService redisService;    // 例項化客戶端    AlipayClient alipayClient;    public AlipaySaoImpl(){        // 例項化客戶端        alipayClient = new DefaultAlipayClient(                AlipayConfig.ALIPAY_URL,                AlipayConfig.APP_ID,                AlipayConfig.PRIVATE_KEY,                AlipayConfig.FORMAT,                AlipayConfig.CHARSET,                AlipayConfig.ALIPAY_PUBLIC_KEY,                AlipayConfig.SIGN_TYPE);    }
5、web支付相關方法程式碼
package com.fast.tpp.dto;import lombok.Getter;import lombok.Setter;import lombok.ToString;@Setter@Getter@ToStringpublic class AlipayWebPayDTO{    /**     * 商戶訂單號,必填     *     */    private String out_trade_no;    /**     * 訂單名稱,必填     */    private String subject;    /**     * 付款金額,必填     * 根據支付寶介面協議,必須使用下劃線     */    private String total_amount;    /**     * 商品描述,可空     */    private String body;    /**     * 超時時間引數     */    private String timeout_express= "5m";    /**     * 產品編號     */    private String product_code= "FAST_INSTANT_TRADE_PAY";} /**     * web支付介面     * @param alipayBean     * @return     * @throws AlipayApiException     */    @Override    public String webPagePay(AlipayWebPayDTO alipayBean) throws AlipayApiException {        // 2、設定請求引數        AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();        // 頁面跳轉同步通知頁面路徑        alipayRequest.setReturnUrl(AlipayConfig.WEB_RETURN_URL);        // 伺服器非同步通知頁面路徑        alipayRequest.setNotifyUrl(AlipayConfig.CALLBACK_URL);        // 封裝引數        alipayRequest.setBizContent(JSON.toJSONString(alipayBean));        // 3、請求支付寶進行付款,並獲取支付結果        String result = alipayClient.pageExecute(alipayRequest).getBody();        // 返回付款資訊        return result;    }
6、最終返回給客戶端的result值為,裡面是一個form,頁面拿到後會自動跳轉到支付寶的訂單支付頁面
{"code": "00","msg": "請求成功!","data": {"orderString": "<form name=\\"punchout_form\\" method=\\"post\\" action=\\"https://openapi.alipay.com/gateway.do?charset=utf-8&method=alipay.trade.page.pay&sign=G0jsaTORXtfF1VkQEK77qu%2BnYRU1YhCNQMFiWNNBUbYgQz8pxGRGVcnzbIXWkgWawV3AXco%2BJkFEemhV7qK2ALIn6uVziNklV6Folqb6OyVnsdKdCfHbID%2Bz79M1ngpyWsWvxXoAUN6Kuib5qkurDPQfMo4HWF4fxmLF70cFkQNeHxg577ByHS0%2Borv%2BzJ%2FwqehZZqOB1JQ0jzserODf2PGieoE5PCDnIYuXMZFqJqlCRUDc1IN3h9Usez8QJhLWepcFDsDR8tXiHrMmge9onHAl9bpLUtyOuVe4TCMU%2BLgMH21NUpeKJdXgQpnQxA8DoUuU0lRTmvPEp6EyXAmE%2FQ%3D%3D&return_url=http%3A%2F%2Fwww.moyou520.com%2Fdist%2Fhtml%2Fpay%2Fresult.html¬ify_url=http%3A%2F%2Fadmin.moyou520.com%2Fmoyou%2Fapp%2Ftrans%2FalipayNotice.do&version=1.0&app_id=2019081066129967&sign_type=RSA2×tamp=2020-02-17+15%3A58%3A24&alipay_sdk=alipay-sdk-java-4.3.0.ALL&format=JSON\\">\\n<input type=\\"hidden\\" name=\\"biz_content\\" value=\\"{"body":"購買[年度VIP]","out_trade_no":"20200217155823617499935","product_code":"FAST_INSTANT_TRADE_PAY","subject":"默友APP","timeout_express":"5m","total_amount":"0.0"}\\">\\n<input type=\\"submit\\" value=\\"立即支付\\" style=\\"display:none\\" >\\n</form>\\n<script>document.forms[0].submit();</script>","orderNo": "20200217155823617499935"}}
7、回撥方法相關程式碼
/** * 支付寶支付通知 * @param request * @param response * @return * @throws IOException */@RequestMapping(value="/alipayNotice.do",method = RequestMethod.POST)@ResponseBody@NoneAuth@SysLog(actionName = "支付寶支付通知")public String alipayNotice(HttpServletRequest request, HttpServletResponse response) throws IOException {Map<String, String> params = new HashMap<String, String>();Map requestParams = request.getParameterMap();for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext(); ) {String name = (String) iter.next();String[] values = (String[]) requestParams.get(name);String valueStr = "";for (int i = 0; i < values.length; i++) {valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";}params.put(name, valueStr);}// 切記alipaypublickey是支付寶的公鑰,請去open.alipay.com對應應用下檢視。try {boolean flag = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET,AlipayConfig.SIGN_TYPE);if (flag) {String tradeStatus = params.get("trade_status");String outTradeNo = params.get("out_trade_no");String tradeNo = params.get("trade_no");//購買者使用者IDString openId = params.get("buyer_logon_id");this.orderService.alipayNotice(tradeStatus,outTradeNo,tradeNo,openId);if ("TRADE_SUCCESS".equals(tradeStatus)){return "success";}}} catch (Exception e) {e.printStackTrace();}return "fail";}

大致如上,歡迎大家批評指正

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Zipkin跟蹤微服務呼叫鏈