Java調用支付寶完成支付

話不多說,直接開擼!!!

import com.egzosn.pay.ali.api.AliPayConfigStorage;
import com.egzosn.pay.ali.api.AliPayService;
import com.egzosn.pay.ali.bean.AliTransactionType;
import com.egzosn.pay.common.api.PayService;
import com.egzosn.pay.common.bean.PayOrder;
import com.egzosn.pay.common.http.HttpConfigStorage;
import com.egzosn.pay.common.util.sign.SignUtils;
import com.shineyoo.api.platform.core.response.Result;
import com.shineyoo.api.platform.core.response.ResultGenerator;
import com.shineyoo.edu.organizationOrder.domain.OrganizationOrder;
import com.shineyoo.edu.organizationOrder.service.IOrganizationOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;


/**
 * 發起支付入口
 */
@RestController
@RequestMapping("ali")
public class AliPayController {

    private PayService service = null;

    @Autowired
    private IOrganizationOrderService orderService;

    @PostConstruct
    public void init() {
        AliPayConfigStorage aliPayConfigStorage = new AliPayConfigStorage();
        //aliPayConfigStorage.setPid("2088102169916436");
       // aliPayConfigStorage.setAppid("2017112400141933");
       // aliPayConfigStorage.setKeyPublic("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAthqKx5rnB5+LMqiaxLaUHU1jyMAcaECq2MzSUZVK+kFj9ai2Y3cHNEo0Idq/Mhup7vlxY2RZ04KrwD84NTtXP2JKN345PFhJp7fWR2bQKeuXPzoLdNGy8LaPlPQIJl03xbojVW/1OMykb70yIYgZaCg6muQ9YWitAPVqlNHjIa42k6/Bx51WoW8mKJB6In5LOvZbi1UfLkkRIpl3c8f8CfnkFgOISMDR2Xm+eJB+uGGYG94CxdkvnC81DKDfw2Bqu5v6aeH65LSBjnHaiDq2gsGVL1wVOYqZfQv/Ag7H+911Mec3eVxFzq73cPE7UXSg5lLGsN+ugGNzZsl6o6L0ywIDAQAB");
       // aliPayConfigStorage.setKeyPrivate("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCIGjTDUImUvPn+H9TtYsZioGhxw6EPl/VmNrC7RmVpADTBKvqaCFUzsG1UZvwnLO08nCqhW70uJZz7rSiXurAOnHuSoUoRuCPtXcg7vShLUtorjYHMVzDBHQw5Civ5r6NlYMRnjvxLpM4pmEhDGSqncrc6m57RXxsL/0sLq2kTDOSo8sCmDcOENeaMpV62/Z9H3LH4qwLJ3VD8HzI5HlvM/w4sSEymtrzpQF/pZm8x99yDy0SmspAHcm6mOJ/Uh4aTm06bscRW02/3I3cCCv346qzpzoYtl1IDFrjCw+5yre2i9rbEewM1EsCOZ0VPT9Zkve7uF2fwfTTs1fsII5ANAgMBAAECggEAaaJ9ZUKzJgBuv/CQ4RaTB6Wcqv+9mE7HJug3z4LZ3t9MEsl66+afypiaorGz7+wMzcgfxlFfydtjtms1YF6DmzOVLb+Fr68OI4Nwj/1Gsv/BWaBhJ+pcauZSwErGyuqplVu/1OjDpSpq4RnSrFFyK7j7wb9bSwHYCj3BT3NhAGkSi7Vqv35ILyccpVnW2Pli43zyL7nksZDKmxb12CjzfkhdO7S25jTrYF0oUS4SOPLAnLG93HAAizN6u5uD0fq2F6d/PtPatAffAh838HvcS3eUpBIXT+2ZWq+N8hmZXbHujt2MR+N7VMsPLD38UwY/lJ+Lm+qZ2TF8BFERrRrs+QKBgQDYE4teWZ6C4+yAhSTusak5fQ2AW6dI+w5viHCDJJxdjTzGTeSClGVIKTrHGqHAtm903fAAERySxJS0xQFuMIVx0axWBZPSbTIcy7aGeOhBtVdXOOLLHsU6jOW5gMrb+tEUJ8So9XAPMxFxSKb8rA8UGvIjN21WfJSr1f3t813+YwKBgQChP+BHxV5LHgz3H53ZM/FNRya8i9opnrT4heIdX76e0gOCOBCna8CkugUhZaP7Mqmfr6szmkb1dt1+ssBSQYXj/NHWI9spYpOHmgk1bTRYrXyvuu62lrFFaPXl/qA5qErJEffy/JIrTBD41QKF5GpJbOtpLGQp0A2Cuo52CPEKzwKBgAacSnY/fab5fCHOcPvQeaHlnoUfyLVl4OIupWqNsy71hDd46JXKHnMft8mhmfNAYZaMt6v42gvvcbE6GboaR+rchE45a3VTm+XfoZzplAl2l852UhHuxg/tgZW0SACE4uKf+NdGcwA0CsORenJefTObQ28qYfD0bMP5DwS5nlWLAoGAYrKoYwXJq4zfPrvZcEM85aIxcaLgjC0adCvutTAPi0Lc5u3OM8vehHVgAosmDfF6pcVusw0xdbml5ZEf6rk0bNIo1jvoP7KYvp1oGY2YRtcZxK5UwuoF44hVSsvJ4sDB1cTr0Y0LIvlSQhyPiMjAzeSfSybiwD0ap/Pskw7yCz0CgYEA0TK9mveq1JuzuVH4jLk9WGciFbpRgyqHgKjfT2zAfqtqJpklpLyKjbrO2sFM3bPlsYQkfw4U2L/yDwmOCMya+yj7XrXCNMvDjVHuDpPClie7z2u7BNbqc9k/4I0kUG5XCebF+54OLfjpUFheZ+AXvLSp/SOkVoQB01ViENhfiBM=");
         //善友
        aliPayConfigStorage.setAppid("");//appid
        aliPayConfigStorage.setKeyPublic("");//共有密鑰
        aliPayConfigStorage.setKeyPrivate("");//私有密鑰

        aliPayConfigStorage.setNotifyUrl("");//回調地址
        aliPayConfigStorage.setReturnUrl("");//支付成功返回地址

        aliPayConfigStorage.setSignType(SignUtils.RSA2.name());
        //aliPayConfigStorage.setSeller("");
        aliPayConfigStorage.setInputCharset("utf-8");
        //是否爲測試賬號,沙箱環境
        aliPayConfigStorage.setTest(false);

        //請求連接池配置
        HttpConfigStorage httpConfigStorage = new HttpConfigStorage();
        //最大連接數
        httpConfigStorage.setMaxTotal(20);
        //默認的每個路由的最大連接數
        httpConfigStorage.setDefaultMaxPerRoute(10);
        service = new AliPayService(aliPayConfigStorage, httpConfigStorage);
        //增加支付回調消息攔截器
        //service.addPayMessageInterceptor(new AliPayMessageInterceptor());
        //設置回調消息處理
        //service.setPayMessageHandler(spring.getBean(AliPayMessageHandler.class));
    }


    /**
     * showdoc
     * @title 支付寶頁面
     * @description 支付寶頁面
     * @method post
     * @url ip:port/ali/toPay.html
     * @return
     * @remark
     * @number 1
     */
    @RequestMapping(value = "toPay.html", produces = "text/html;charset=UTF-8")
    public Result toPay(@RequestBody Map map) {

        String orderId = "";
        if (map.get("orderId") != null) {
            orderId = map.get("orderId").toString();
        } else {
            return ResultGenerator.genFailedResult();
        }

        List<OrganizationOrder> orders = orderService.selectOrganizationOrderList(new OrganizationOrder().setOrderNo(orderId));

        OrganizationOrder organizationOrder = new OrganizationOrder();
        if (orders != null && orders.size() > 0) {
            organizationOrder = orders.get(0);
        }

        //及時收款
        PayOrder order = new PayOrder(organizationOrder.getComment(), "餘額充值", new BigDecimal(organizationOrder.getPrice()), organizationOrder.getOrderNo(), AliTransactionType.PAGE);
       
        return ResultGenerator.genOkResult(service.toPay(order));
    }


    /**
     * 支付回調地址
     *
     * @param request 請求
     * @return 返回對應的響應碼
     * @throws IOException IOException
     */
    @Deprecated
    @RequestMapping(value = "payBackBefore")
    public String payBackBefore(HttpServletRequest request) throws IOException {

        //獲取支付方返回的對應參數
        Map<String, Object> params = service.getParameter2Map(request.getParameterMap(), request.getInputStream());
        if (null == params) {
            return service.getPayOutMessage("fail", "失敗").toMessage();
        }

        //校驗
        if (service.verify(params)) {
            //這裏處理業務邏輯
            String orderId = params.get("out_trade_no").toString();
            Float price = Float.parseFloat(params.get("total_amount").toString());

            List<OrganizationOrder> orders = orderService.selectOrganizationOrderList(new OrganizationOrder().setOrderNo(orderId));
            if(orders != null && orders.size()> 0){
                if(orders.get(0).getPrice().equals(price)){
                    //支付成功,更新訂單信息
                    orderService.updateOrgOrder(orderId,1);
                }
            }
            //......業務邏輯處理塊........
            return service.successPayOutMessage(null).toMessage();
        }
        return service.getPayOutMessage("fail", "失敗").toMessage();
    }
}

需要導入的pom

<pay.version>2.12.7-SNAPSHOT</pay.version>
        <dependency>
            <groupId>com.egzosn</groupId>
            <artifactId>pay-java-ali</artifactId>
            <version>${pay.version}</version>
        </dependency>

上面的pom文件下不下來,可以引用我這個包
支付寶jar

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章