require 'test_helper' class Alipay::ServiceTest < Minitest::Test def test_generate_create_partner_trade_by_buyer_url options = { :out_trade_no => '1', :subject => 'test', :logistics_type => 'POST', :logistics_fee => '0', :logistics_payment => 'SELLER_PAY', :price => '0.01', :quantity => 1 } assert_equal 'https://mapi.alipay.com/gateway.do?service=create_partner_trade_by_buyer&_input_charset=utf-8&partner=1000000000000000&seller_email=admin%40example.com&payment_type=1&out_trade_no=1&subject=test&logistics_type=POST&logistics_fee=0&logistics_payment=SELLER_PAY&price=0.01&quantity=1&sign_type=MD5&sign=09c5d8fd3d7eac18268fffa4cdffd19e', Alipay::Service.create_partner_trade_by_buyer_url(options) end def test_generate_trade_create_by_buyer_url options = { :out_trade_no => '1', :subject => 'test', :logistics_type => 'POST', :logistics_fee => '0', :logistics_payment => 'SELLER_PAY', :price => '0.01', :quantity => 1 } assert_equal 'https://mapi.alipay.com/gateway.do?service=trade_create_by_buyer&_input_charset=utf-8&partner=1000000000000000&seller_email=admin%40example.com&payment_type=1&out_trade_no=1&subject=test&logistics_type=POST&logistics_fee=0&logistics_payment=SELLER_PAY&price=0.01&quantity=1&sign_type=MD5&sign=62b029a767accbbd5f3b085da5959506', Alipay::Service.trade_create_by_buyer_url(options) end def test_generate_create_direct_pay_by_user_url options = { :out_trade_no => '1', :subject => 'test', :price => '0.01', :quantity => 1 } assert_equal 'https://mapi.alipay.com/gateway.do?service=create_direct_pay_by_user&_input_charset=utf-8&partner=1000000000000000&seller_email=admin%40example.com&payment_type=1&out_trade_no=1&subject=test&price=0.01&quantity=1&sign_type=MD5&sign=51c7f60e85eaff5136600d1942b2744c', Alipay::Service.create_direct_pay_by_user_url(options) end def test_generate_create_refund_url data = [{ :trade_no => '1', :amount => '0.01', :reason => 'test' }] options = { :batch_no => '123456789', :data => data, :notify_url => '/some_url', :refund_date => '2015-01-01 00:00:00' } assert_equal "https://mapi.alipay.com/gateway.do?service=refund_fastpay_by_platform_pwd&_input_charset=utf-8&partner=1000000000000000&seller_email=admin%40example.com&refund_date=2015-01-01+00%3A00%3A00&batch_num=1&detail_data=1%5E0.01%5Etest&batch_no=123456789¬ify_url=%2Fsome_url&sign_type=MD5&sign=3f5be5655b513334460a511e74a9ae57", Alipay::Service.create_refund_url(options) end def test_generate_create_forex_single_refund_url options = { :out_return_no => '1', :out_trade_no => '12345678980', :return_amount => '0.01', :currency => 'USD', :reason => 'reason', :gmt_return => '2015-01-01 00:00:00' } assert_equal 'https://mapi.alipay.com/gateway.do?service=forex_refund&partner=1000000000000000&_input_charset=utf-8&gmt_return=2015-01-01+00%3A00%3A00&out_return_no=1&out_trade_no=12345678980&return_amount=0.01¤cy=USD&reason=reason&sign_type=MD5&sign=123c50e884e560801fee8b73f1ac6172', Alipay::Service.create_forex_single_refund_url(options) end def test_generate_create_forex_trade options = { :notify_url => 'https://example.com/notify', :subject => 'test', :out_trade_no => '1', :currency => 'EUR', :total_fee => '0.01', } assert_equal 'https://mapi.alipay.com/gateway.do?service=create_forex_trade&_input_charset=utf-8&partner=1000000000000000&seller_email=admin%40example.com¬ify_url=https%3A%2F%2Fexample.com%2Fnotify&subject=test&out_trade_no=1¤cy=EUR&total_fee=0.01&sign_type=MD5&sign=495a0e610134aa33f6ce021f8b8c6c8d', Alipay::Service.create_forex_trade(options) end def test_close_trade response_body = <<-EOF T EOF FakeWeb.register_uri( :get, %r|https://mapi\.alipay\.com/gateway\.do.*|, :body => response_body ) assert_equal response_body, Alipay::Service.close_trade( :out_order_no => '1' ) end def test_single_trade_query response_body = <<-EOF T 20150123123123 utf-8 single_trade_query PARTNER DAEMON_CONFIRM_CLOSE buyer@example.com BUYER_ID 0.00 0 2015-01-20 02:37:00 2015-01-20 02:17:00 2015-01-20 02:37:00 F B 1 1 640.00 1 seller@example.com SELLER_ID ORDER SUBJECT 0.00 0.00 640.00 TRADE_NO TRADE_CLOSED F SIGN MD5 EOF FakeWeb.register_uri( :get, %r|https://mapi\.alipay\.com/gateway\.do.*|, :body => response_body ) assert_equal response_body, Alipay::Service.single_trade_query( :out_trade_no => '1' ) end def test_should_send_goods_confirm_by_platform body = <<-EOF T EOF FakeWeb.register_uri( :get, %r|https://mapi\.alipay\.com/gateway\.do.*|, :body => body ) assert_equal body, Alipay::Service.send_goods_confirm_by_platform( :trade_no => 'trade_no', :logistics_name => 'example.com', :transport_type => 'DIRECT' ) end end